X-Git-Url: http://cgit.sxemacs.org/?p=sxemacs;a=blobdiff_plain;f=src%2Fui%2Flwlib%2Fxlwmenu.c;h=7b067d76fff442702afd0df635fe990358124fff;hp=b25921f796e84eb9b46c706c7e6a9766038035de;hb=a2e176a2d2f133af3bf89c38ab29d9dfa08bcdc1;hpb=be6b417e62479e67414cd698a1f475d8c1a893ab diff --git a/src/ui/lwlib/xlwmenu.c b/src/ui/lwlib/xlwmenu.c index b25921f..7b067d7 100644 --- a/src/ui/lwlib/xlwmenu.c +++ b/src/ui/lwlib/xlwmenu.c @@ -581,7 +581,8 @@ static char *parameterize_string(const char *string, const char *value) off_t offset = percent-string; if (percent[1] == '%') { /* it's a real % */ - assert( res_left >= (1 + offset) ); + assert( offset >=0 && + res_left >= (size_t)(1 + offset)); /* incl % */ strncat(result, string, 1 + offset); res_left -= 1 + offset; @@ -598,7 +599,8 @@ static char *parameterize_string(const char *string, const char *value) } else if (*p == '-') { /* right pad */ right_pad++; } else if (*p == '1') { /* param and terminator */ - assert( res_left >= offset ); + assert( offset >= 0 && + res_left >= (size_t)offset ); res_left -= offset; strncat(result, string, offset); if (value[0] != '\0') { @@ -615,9 +617,11 @@ static char *parameterize_string(const char *string, const char *value) break; /* out of for() loop */ } else { /* bogus, copy the format as is */ /* out of for() loop */ - assert( res_left >= (1+ p - string) ); - strncat(result, string, 1 + p - string); - res_left -= 1 + p - string; + off_t remain = 1 + p - string; + assert( remain >=0 && + res_left >= (size_t)remain ); + strncat(result, string, remain); + res_left -= remain; string = (*p ? &p[1] : p); offset = percent - string; break;