Skip to content

Commit

Permalink
openssl: fix use of uninitialized buffer
Browse files Browse the repository at this point in the history
Make sure that the error buffer is always initialized and simplify the
use of it to make the logic easier.

Bug: #318
Reported-by: sneis
  • Loading branch information
bagder committed Jun 18, 2015
1 parent 0e7d76d commit 26ddc53
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions lib/vtls/openssl.c
Expand Up @@ -2137,10 +2137,9 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
else {
/* untreated error */
unsigned long errdetail;
char error_buffer[256]; /* OpenSSL documents that this must be at least
256 bytes long. */
char error_buffer[256]=""; /* OpenSSL documents that this must be at
least 256 bytes long. */
CURLcode result;
const char *cert_problem = NULL;
long lerr;

connssl->connecting_state = ssl_connect_2; /* the connection failed,
Expand Down Expand Up @@ -2172,9 +2171,10 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
X509_verify_cert_error_string(lerr));
}
else
cert_problem = "SSL certificate problem, verify that the CA cert is"
" OK.";

/* strcpy() is fine here as long as the string fits within
error_buffer */
strcpy(error_buffer,
"SSL certificate problem, check your CA cert");
break;
default:
result = CURLE_SSL_CONNECT_ERROR;
Expand All @@ -2195,7 +2195,7 @@ static CURLcode ossl_connect_step2(struct connectdata *conn, int sockindex)
}

/* Could be a CERT problem */
failf(data, "%s%s", cert_problem ? cert_problem : "", error_buffer);
failf(data, "%s", error_buffer);

return result;
}
Expand Down

0 comments on commit 26ddc53

Please sign in to comment.