]> granicus.if.org Git - neomutt/commitdiff
Fix right justify buffer-truncated pad calculation in mutt_FormatString()
authorKevin McCarthy <kevin@8t8.us>
Thu, 14 Apr 2016 19:35:53 +0000 (12:35 -0700)
committerKevin McCarthy <kevin@8t8.us>
Thu, 14 Apr 2016 19:35:53 +0000 (12:35 -0700)
Vincent Lefèvre noted that the computation had implementation defined
behavior and was potentially incorrect.

Change to make sure the subtraction won't lead to a wrap-around, and
set pad to 0 in that case.

muttlib.c

index 309f1bfeda41973b447f92720d0cd04c0806ea40..fb485c7be1e8d6208bc842555d59bcab904cf1a3 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1297,7 +1297,7 @@ void mutt_FormatString (char *dest,               /* output buffer */
             /* try to consume as many columns as we can, if we don't have
              * memory for that, use as much memory as possible */
             if (wlen + (pad * pl) + len > destlen)
-              pad = ((signed)(destlen - wlen - len)) / pl;
+              pad = (destlen > wlen + len) ? ((destlen - wlen - len) / pl) : 0;
             else
             {
               /* Add pre-spacing to make multi-column pad characters and