summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-12-15 08:51:33 +0100
committerDaniel Stenberg <daniel@haxx.se>2020-12-15 11:38:29 +0100
commita259eee99f2a3d181f4d3254482707f4a0ec4747 (patch)
treecfa2aaedd5c2eec27fc85504604f4b7b51c1108d
parentc4d88f89a9c2da6104eae05948c968c1d63de978 (diff)
downloadcurl-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
-rw-r--r--lib/mqtt.c4
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;