mirror of
https://github.com/curl/curl.git
synced 2026-07-24 15:57:18 +03:00
mqtt: handle POST/PUBLISH without a set POSTFIELDSIZE
Detected by OSS-Fuzz Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28735 Added test 1916 and 1917 to verify. Closes #6338
This commit is contained in:
parent
92fe66c510
commit
debf23eead
8 changed files with 191 additions and 4 deletions
10
lib/mqtt.c
10
lib/mqtt.c
|
|
@ -319,7 +319,7 @@ static CURLcode mqtt_publish(struct connectdata *conn)
|
|||
{
|
||||
CURLcode result;
|
||||
char *payload = conn->data->set.postfields;
|
||||
size_t payloadlen = (size_t)conn->data->set.postfieldsize;
|
||||
size_t payloadlen;
|
||||
char *topic = NULL;
|
||||
size_t topiclen;
|
||||
unsigned char *pkt = NULL;
|
||||
|
|
@ -327,6 +327,14 @@ static CURLcode mqtt_publish(struct connectdata *conn)
|
|||
size_t remaininglength;
|
||||
size_t encodelen;
|
||||
char encodedbytes[4];
|
||||
curl_off_t postfieldsize = conn->data->set.postfieldsize;
|
||||
|
||||
if(!payload)
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
if(postfieldsize < 0)
|
||||
payloadlen = strlen(payload);
|
||||
else
|
||||
payloadlen = (size_t)postfieldsize;
|
||||
|
||||
result = mqtt_get_topic(conn, &topic, &topiclen);
|
||||
if(result)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue