uclient-fetch: read_data_cb: fix a potential buffer overflow
authorAlexander Couzens <lynxis@fe80.eu>
Sun, 11 Jun 2017 11:01:06 +0000 (13:01 +0200)
committerAlexander Couzens <lynxis@fe80.eu>
Sun, 11 Jun 2017 11:05:00 +0000 (13:05 +0200)
When a backend->read() is not implement or returns -1,
This -1 is interpreted as unsigned int resulting
in an access far behind the buffer.

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
uclient-fetch.c

index d9582f5..dff144b 100644 (file)
@@ -262,7 +262,7 @@ static void read_data_cb(struct uclient *cl)
 
        while (1) {
                len = uclient_read(cl, buf, sizeof(buf));
 
        while (1) {
                len = uclient_read(cl, buf, sizeof(buf));
-               if (!len)
+               if (len <= 0)
                        return;
 
                out_bytes += len;
                        return;
 
                out_bytes += len;