]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tool_help: add checks to avoid unsigned wrap around
authorx2018 <xkernel.wang@foxmail.com>
Wed, 5 Nov 2025 15:50:51 +0000 (23:50 +0800)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 6 Nov 2025 14:37:53 +0000 (15:37 +0100)
Closes #19377

src/tool_help.c

index 7a3a4a3bf430eca979e24b93a4b1a8a68b1b027a..4509fa2b949dd5e799648d577834798f638101c3 100644 (file)
@@ -87,14 +87,18 @@ static void print_category(unsigned int category, unsigned int cols)
     if(len > longdesc)
       longdesc = len;
   }
-  if(longopt + longdesc > cols)
+
+  if(longdesc > cols)
+    longopt = 0; /* avoid wrap-around */
+  else if(longopt + longdesc > cols)
     longopt = cols - longdesc;
 
   for(i = 0; helptext[i].opt; ++i)
     if(helptext[i].categories & category) {
       size_t opt = longopt;
       size_t desclen = strlen(helptext[i].desc);
-      if(opt + desclen >= (cols - 2)) {
+      /* avoid wrap-around */
+      if(cols >= 2 && opt + desclen >= (cols - 2)) {
         if(desclen < (cols - 2))
           opt = (cols - 3) - desclen;
         else