]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
fix possible out-of-bounds access
authorxuraoqing <609179072@qq.com>
Tue, 7 Feb 2023 03:37:04 +0000 (11:37 +0800)
committerxuraoqing <609179072@qq.com>
Thu, 9 Feb 2023 02:10:57 +0000 (10:10 +0800)
Signed-off-by: xuraoqing <609179072@qq.com>
src/serv.c

index 640ed2ab57a45c0e34b6d5c71ca6c46afe5e7afd..c7d2d5ed78628efe676b6f5431916d378582e2c7 100644 (file)
@@ -810,6 +810,7 @@ static char *peer_print_data(gnutls_session_t session, int *ret_length)
 {
        gnutls_datum_t data;
        char *http_buffer;
+       char *ptr = NULL;
        size_t len;
        int ret;
 
@@ -836,10 +837,17 @@ static char *peer_print_data(gnutls_session_t session, int *ret_length)
        if (ret < 0)
                return NULL;
        len = ret;
-       http_buffer = realloc(http_buffer, len + data.size);
-       memcpy(&http_buffer[len], data.data, data.size);
-       gnutls_free(data.data);
-       *ret_length = len + data.size;
+       ptr = realloc(http_buffer, len + data.size);
+       if (ptr != NULL) {
+               http_buffer = ptr;
+               memcpy(&http_buffer[len], data.data, data.size);
+               gnutls_free(data.data);
+               *ret_length = len + data.size;
+       } else {
+               gnutls_free(http_buffer);
+               gnutls_free(data.data);
+               *ret_length = 0;
+       }
        return http_buffer;
 }