diff --git a/src/sbbs3/ssl.c b/src/sbbs3/ssl.c
index 5777bb66c87d2caf0761b58fa0e30e3939a369a2..0fc5d03457477ce59a585c6f4b45c422229bfb87 100644
--- a/src/sbbs3/ssl.c
+++ b/src/sbbs3/ssl.c
@@ -40,10 +40,11 @@ static bool get_error_string(int status, CRYPT_SESSION sess, char *estr, char *f
 	if (cryptStatusOK(status))
 		return true;
 
-	ret = cryptGetAttributeString(sess, CRYPT_ATTRIBUTE_ERRORMESSAGE, tmpstr, &len);
-	tmpstr[len]=0;
-	if (cryptStatusOK(ret) && len)
+	estr = get_crypt_error(sess);
+	if (estr) {
 		sprintf(estr, "cryptlib error %d at %s:%d (%s)", status, file, line, tmpstr);
+		free_crypt_attrstr(estr);
+	}
 	else
 		sprintf(estr, "cryptlib error %d at %s:%d", status, file, line);
 	return false;