diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index a35cd2c95134d43d33ad70833dd7ded7644c7a83..6318ac57d3c9538d389ae94d73d087f47416446b 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -3397,8 +3397,9 @@ apc_handler(char *strbuf, size_t slen, void *apcd)
 				while (!feof(f)) {
 					rc = fread(buf, 1, 1024 * 32, f);
 					if (rc > 0)
-						MD5_calc(digest, buf, rc);
+						MD5_digest(&ctx, buf, rc);
 				}
+				MD5_close(&ctx, digest);
 				fclose(f);
 				MD5_hex(buf, digest);
 				conn_send(buf, strlen(buf), 0);