diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-12-15 08:51:33 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-12-15 11:38:29 +0100 |
commit | a259eee99f2a3d181f4d3254482707f4a0ec4747 (patch) | |
tree | cfa2aaedd5c2eec27fc85504604f4b7b51c1108d /lib/mqtt.c | |
parent | c4d88f89a9c2da6104eae05948c968c1d63de978 (diff) | |
download | curl-a259eee99f2a3d181f4d3254482707f4a0ec4747.tar.gz |
mqtt: deal with 0 byte reads correctly
OSS-Fuzz found it
Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28676
Closes #6327
Diffstat (limited to 'lib/mqtt.c')
-rw-r--r-- | lib/mqtt.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/mqtt.c b/lib/mqtt.c index e324ec3dd..a56c7d5eb 100644 --- a/lib/mqtt.c +++ b/lib/mqtt.c @@ -553,7 +553,7 @@ static CURLcode mqtt_doing(struct connectdata *conn, bool *done) case MQTT_FIRST: /* Read the initial byte only */ result = Curl_read(conn, sockfd, (char *)&mq->firstbyte, 1, &nread); - if(result) + if(!nread) break; Curl_debug(data, CURLINFO_HEADER_IN, (char *)&mq->firstbyte, 1); /* remember the first byte */ @@ -563,7 +563,7 @@ static CURLcode mqtt_doing(struct connectdata *conn, bool *done) case MQTT_REMAINING_LENGTH: do { result = Curl_read(conn, sockfd, (char *)&byte, 1, &nread); - if(result) + if(!nread) break; Curl_debug(data, CURLINFO_HEADER_IN, (char *)&byte, 1); pkt[mq->npacket++] = byte; |