From 21d0ea45499e07dc520769a4132d1193be0f0cad Mon Sep 17 00:00:00 2001 From: leitner Date: Tue, 25 Feb 2014 18:28:06 +0000 Subject: [PATCH] if srclen>maxlen, truncate at maxlen --- fmt/fmt_pad.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fmt/fmt_pad.c b/fmt/fmt_pad.c index 27afeef..71201f1 100644 --- a/fmt/fmt_pad.c +++ b/fmt/fmt_pad.c @@ -8,7 +8,8 @@ size_t fmt_pad(char* dest,const char* src,size_t srclen,size_t padlen,size_t max long todo; char* olddest=dest; char* max=dest+maxlen; - todo=padlen-srclen; + if ((long)srclen<0 || (long)padlen<0 || (long)maxlen<0) return 0; + todo=(long)(padlen-srclen); if (dest==0) { unsigned long sum=srclen>padlen?srclen:padlen; return sum>maxlen?maxlen:sum; @@ -17,9 +18,9 @@ size_t fmt_pad(char* dest,const char* src,size_t srclen,size_t padlen,size_t max if (dest>max) break; *dest=' '; ++dest; } - for (todo=srclen; todo>0; --todo) { + for (todo=(long)srclen>maxlen?maxlen:srclen; todo>0; --todo) { if (dest>max) break; *dest=*src; ++dest; ++src; } - return dest-olddest; + return (size_t)(dest-olddest); }