]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix padded numbers printing
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 Jul 2018 11:56:55 +0000 (12:56 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 10 Jul 2018 11:56:55 +0000 (12:56 +0100)
src/libutil/printf.c

index 0ad2dce2745ec85cdda813d01b0a67c5ae8d38e0..be4ef402eaf7032f6cb7b729f01172f8a8881a43 100644 (file)
@@ -371,7 +371,7 @@ rspamd_sprintf_num (gchar *buf, gchar *last, guint64 ui64, gchar zero,
                        *--p = _hex[(guint32) (ui64 & 0xf)];
                } while (ui64 >>= 4);
 
-               len = (temp + sizeof (temp)) - p + 1;
+               len = (temp + sizeof (temp)) - p;
        }
        else { /* hexadecimal == 2 */
                p = temp + sizeof(temp);
@@ -379,13 +379,17 @@ rspamd_sprintf_num (gchar *buf, gchar *last, guint64 ui64, gchar zero,
                        *--p = _HEX[(guint32) (ui64 & 0xf)];
                } while (ui64 >>= 4);
 
-               len = (temp + sizeof (temp)) - p + 1;
+               len = (temp + sizeof (temp)) - p;
        }
 
        /* zero or space padding */
 
-       while (width > 0 && buf < last) {
-               *buf++ = zero;
+       if (len < width) {
+               width -= len;
+
+               while (width-- > 0 && buf < last) {
+                       *buf++ = zero;
+               }
        }
 
        /* number safe copy */