decompress_iob(): Don't advance cur past eod
authorFabian Keil <fk@fabiankeil.de>
Mon, 8 Feb 2021 09:59:23 +0000 (10:59 +0100)
committerFabian Keil <fk@fabiankeil.de>
Sun, 21 Feb 2021 16:30:16 +0000 (17:30 +0100)
... when looking for the end of the file name and comment.

I could not come up with a test case where the previous
behaviour resulted in reading of uninitialized data but
advancing past eod still seems wrong.

parsers.c

index f905c92..999c715 100644 (file)
--- a/parsers.c
+++ b/parsers.c
@@ -634,14 +634,14 @@ jb_err decompress_iob(struct client_state *csp)
          if (flags & GZIP_FLAG_FILE_NAME)
          {
             /* A null-terminated string is supposed to follow. */
-            while (*cur++ && (cur < csp->iob->eod));
+            while ((cur < csp->iob->eod) && *cur++);
          }
 
          /* Skip the comment if necessary. */
          if (flags & GZIP_FLAG_COMMENT)
          {
             /* A null-terminated string is supposed to follow. */
-            while (*cur++ && (cur < csp->iob->eod));
+            while ((cur < csp->iob->eod) && *cur++);
          }
 
          /* Skip the CRC if necessary. */