Skip to content

Commit fc24b4b

Browse files
Roytakmichalvasko
authored andcommitted
session openssl BUGFIX handle NULL from ERR_reason_error_string
Fixes #588
1 parent 284ee66 commit fc24b4b

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/session_openssl.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,21 +1035,28 @@ nc_tls_get_err_reasons(void)
10351035
unsigned int e;
10361036
int reason_size, reason_len;
10371037
char *reasons = NULL;
1038+
const char *err_reason;
10381039

10391040
reason_size = 1;
10401041
reason_len = 0;
10411042
while ((e = ERR_get_error())) {
1043+
err_reason = ERR_reason_error_string(e);
1044+
if (!err_reason) {
1045+
/* couldn't map value to anything from https://datatracker.ietf.org/doc/html/rfc8446#appendix-B.2 */
1046+
DBG(NULL, "Unknown OpenSSL error (err code %u).", e);
1047+
err_reason = "unknown AlertDescription value";
1048+
}
10421049
if (reason_len) {
10431050
/* add "; " */
10441051
reason_size += 2;
10451052
reasons = nc_realloc(reasons, reason_size);
10461053
NC_CHECK_ERRMEM_RET(!reasons, NULL);
10471054
reason_len += sprintf(reasons + reason_len, "; ");
10481055
}
1049-
reason_size += strlen(ERR_reason_error_string(e));
1056+
reason_size += strlen(err_reason);
10501057
reasons = nc_realloc(reasons, reason_size);
10511058
NC_CHECK_ERRMEM_RET(!reasons, NULL);
1052-
reason_len += sprintf(reasons + reason_len, "%s", ERR_reason_error_string(e));
1059+
reason_len += sprintf(reasons + reason_len, "%s", err_reason);
10531060
}
10541061

10551062
return reasons;

0 commit comments

Comments
 (0)