X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fconnection.c;h=ed8a59411892bb7f89b12642c9482b0f5bb30850;hb=378de4c6745edcf83cd997ed6dff27b63e675aec;hp=1d94d79654323dec4875aa4e7f9724f2d49208c5;hpb=28f6cc33be1ae9af34dcedc1f019f91f405de3ec;p=tlsproxy%2Ftlsproxy.git diff --git a/src/connection.c b/src/connection.c index 1d94d79..ed8a594 100644 --- a/src/connection.c +++ b/src/connection.c @@ -371,7 +371,16 @@ static int initialize_tls_session_client(int peer_socket, hostname); return -1; } - snprintf(path, sizeof(path), PROXY_SERVER_CERT_FORMAT, hostname); + result = snprintf(path, sizeof(path), PROXY_SERVER_CERT_FORMAT, hostname); + if (result < 0) { + LOG_PERROR(LOG_ERROR, + "initialize_tls_session_client(): snprintf failed"); + return -1; + } else if ((size_t)result >= sizeof(path)) { + LOG(LOG_ERROR, + "initialize_tls_session_client(): snprintf buffer too short"); + return -1; + } result = gnutls_certificate_allocate_credentials(x509_cred); if (GNUTLS_E_SUCCESS != result) { @@ -555,15 +564,26 @@ static void tls_send_invalid_cert_message(gnutls_session_t session) { #define RESPONSE_ERROR "500 Internal Server Error" #define RESPONSE_MSG "Server certificate validation failed, check logs." + int result; char buffer[sizeof(HTTP_RESPONSE_FORMAT) - 1 /* '\0' */ - 4 * 2 /* four %s */ + (sizeof(RESPONSE_ERROR) - 1 /* '\0' */) * 3 + sizeof(RESPONSE_MSG) - 1 /* '\0' */ + 1 /* '\0' */]; - snprintf(buffer, sizeof(buffer), - HTTP_RESPONSE_FORMAT, - RESPONSE_ERROR, RESPONSE_ERROR, RESPONSE_ERROR, RESPONSE_MSG); + result = snprintf(buffer, sizeof(buffer), + HTTP_RESPONSE_FORMAT, + RESPONSE_ERROR, RESPONSE_ERROR, RESPONSE_ERROR, + RESPONSE_MSG); + if (result < 0) { + LOG_PERROR(LOG_ERROR, + "tls_send_invalid_cert_message(): snprintf failed"); + return; + } else if ((size_t)result >= sizeof(buffer)) { + LOG(LOG_ERROR, + "tls_send_invalid_cert_message(): snprintf buffer too short"); + return; + } gnutls_record_send(session, buffer, sizeof(buffer) - 1); /* don't send trailing '\0' */