From 83808d17d9fd28166ca174d522441edea3257804 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Sep 2022 14:00:34 -0700 Subject: [PATCH] Pacify GCC -Wsign-compare * src/arscan.c (ar_scan): Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by copying an unsigned value into a signed variable before comparing it. Make sure it is in range before copying. --- src/arscan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/arscan.c b/src/arscan.c index 83377910..f22d21aa 100644 --- a/src/arscan.c +++ b/src/arscan.c @@ -714,11 +714,13 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg) && name[2] == '/') { const char* err; - unsigned int name_len = make_toui (name + 3, &err); + unsigned int ui = make_toui (name + 3, &err); + int name_len; - if (err || name_len == 0 || name_len > PATH_MAX) + if (err || ui == 0 || ui >= MIN (PATH_MAX, INT_MAX)) goto invalid; + name_len = ui; name = alloca (name_len + 1); nread = readbuf (desc, name, name_len); if (nread != name_len) -- 2.37.3