]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* src/arscan.c (ar_scan): Avoid sign comparison warnings
authorPaul Smith <psmith@gnu.org>
Sun, 2 Oct 2022 22:34:07 +0000 (18:34 -0400)
committerPaul Smith <psmith@gnu.org>
Mon, 3 Oct 2022 19:11:57 +0000 (15:11 -0400)
Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by checking
the readbuf() return explicitly for errors then casting from ssize_t.
Initial patch provided by Paul Eggert <eggert@cs.ucla.edu>.

src/arscan.c

index eb806a6963d6b0e7ef022ee47fbb6496c27f8945..b7180ba226e18fc3613b196b5cc9dbc4fbe156e9 100644 (file)
@@ -716,12 +716,12 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
               const char* err;
               unsigned int name_len = make_toui (name + 3, &err);
 
-              if (err || name_len == 0 || name_len > PATH_MAX)
+              if (err || name_len == 0 || name_len >= MIN (PATH_MAX, INT_MAX))
                 goto invalid;
 
               name = alloca (name_len + 1);
               nread = readbuf (desc, name, name_len);
-              if (nread != name_len)
+              if (nread < 0 || (unsigned int) nread != name_len)
                 goto invalid;
 
               name[name_len] = '\0';