tool_help: add checks to avoid unsigned wrap around

Closes #19377
This commit is contained in:
x2018 2025-11-05 23:50:51 +08:00 committed by Daniel Stenberg
parent f12a81de4f
commit 69622ff37d
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2

View 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