summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_verify.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libtls/tls_verify.c')
-rw-r--r--src/lib/libtls/tls_verify.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/lib/libtls/tls_verify.c b/src/lib/libtls/tls_verify.c
index acbe163ffd..685146a4a9 100644
--- a/src/lib/libtls/tls_verify.c
+++ b/src/lib/libtls/tls_verify.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_verify.c,v 1.20 2018/02/05 00:52:24 jsing Exp $ */ 1/* $OpenBSD: tls_verify.c,v 1.21 2023/05/05 14:05:33 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> 3 * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org>
4 * 4 *
@@ -209,7 +209,7 @@ tls_check_common_name(struct tls *ctx, X509 *cert, const char *name,
209 char *common_name = NULL; 209 char *common_name = NULL;
210 union tls_addr addrbuf; 210 union tls_addr addrbuf;
211 int common_name_len; 211 int common_name_len;
212 int rv = 0; 212 int rv = -1;
213 213
214 *cn_match = 0; 214 *cn_match = 0;
215 215
@@ -223,8 +223,10 @@ tls_check_common_name(struct tls *ctx, X509 *cert, const char *name,
223 goto done; 223 goto done;
224 224
225 common_name = calloc(common_name_len + 1, 1); 225 common_name = calloc(common_name_len + 1, 1);
226 if (common_name == NULL) 226 if (common_name == NULL) {
227 goto done; 227 tls_set_error(ctx, "out of memory");
228 goto err;
229 }
228 230
229 X509_NAME_get_text_by_NID(subject_name, NID_commonName, common_name, 231 X509_NAME_get_text_by_NID(subject_name, NID_commonName, common_name,
230 common_name_len + 1); 232 common_name_len + 1);
@@ -235,8 +237,7 @@ tls_check_common_name(struct tls *ctx, X509 *cert, const char *name,
235 tls_set_errorx(ctx, "error verifying name '%s': " 237 tls_set_errorx(ctx, "error verifying name '%s': "
236 "NUL byte in Common Name field, " 238 "NUL byte in Common Name field, "
237 "probably a malicious certificate", name); 239 "probably a malicious certificate", name);
238 rv = -1; 240 goto err;
239 goto done;
240 } 241 }
241 242
242 /* 243 /*
@@ -254,6 +255,9 @@ tls_check_common_name(struct tls *ctx, X509 *cert, const char *name,
254 *cn_match = 1; 255 *cn_match = 1;
255 256
256 done: 257 done:
258 rv = 0;
259
260 err:
257 free(common_name); 261 free(common_name);
258 return rv; 262 return rv;
259} 263}