mirror of
https://github.com/curl/curl.git
synced 2025-09-18 01:52:41 +03:00
formdata: avoid size_t => long typecast overflows
Typically a problem for platforms with 32 bit long and 64 bit size_t Reported-by: Fabian Yamaguchi Bug: https://hackerone.com/reports/1444539 Closes #8272
This commit is contained in:
parent
7422110b48
commit
8188ca91eb
|
@ -5,7 +5,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
@ -77,10 +77,15 @@ AddHttpPost(char *name, size_t namelength,
|
|||
struct curl_httppost **last_post)
|
||||
{
|
||||
struct curl_httppost *post;
|
||||
if(!namelength && name)
|
||||
namelength = strlen(name);
|
||||
if((bufferlength > LONG_MAX) || (namelength > LONG_MAX))
|
||||
/* avoid overflow in typecasts below */
|
||||
return NULL;
|
||||
post = calloc(1, sizeof(struct curl_httppost));
|
||||
if(post) {
|
||||
post->name = name;
|
||||
post->namelength = (long)(name?(namelength?namelength:strlen(name)):0);
|
||||
post->namelength = (long)namelength;
|
||||
post->contents = value;
|
||||
post->contentlen = contentslength;
|
||||
post->buffer = buffer;
|
||||
|
|
Loading…
Reference in New Issue
Block a user