Adding a missing test on integer overflow within g_http_proxy_connect()

Fixes #2315
This commit is contained in:
Emmanuel Fleury 2021-02-09 18:07:20 +00:00 committed by Philip Withnall
parent 3e5e7aa8e9
commit a5e3be4a0c

View File

@ -255,6 +255,17 @@ g_http_proxy_connect (GProxy *proxy,
if (bytes_read == buffer_length) if (bytes_read == buffer_length)
{ {
/* HTTP specifications does not defines any upper limit for
* headers. But, the most usual size used seems to be 8KB.
* Yet, the biggest we found was Tomcat's HTTP headers whose
* size is 48K. So, for a reasonable error margin, let's accept
* a header with a twice as large size but no more: 96KB */
if (buffer_length > 98304)
{
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED,
_("HTTP proxy response too big"));
goto error;
}
buffer_length = 2 * buffer_length; buffer_length = 2 * buffer_length;
buffer = g_realloc (buffer, buffer_length); buffer = g_realloc (buffer, buffer_length);
} }