Also protect against elen < 0.
authorJarkko Hietaniemi <jhi@iki.fi>
Wed, 10 Sep 2014 23:42:38 +0000 (19:42 -0400)
committerJarkko Hietaniemi <jhi@iki.fi>
Thu, 11 Sep 2014 00:26:28 +0000 (20:26 -0400)
sv.c

diff --git a/sv.c b/sv.c
index 7c34728..83ad37c 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -12186,7 +12186,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
 
        float_converted:
            eptr = PL_efloatbuf;
-            assert(elen > 0);
+            assert((IV)elen > 0); /* here zero elen is bad */
 
 #ifdef USE_LOCALE_NUMERIC
             /* If the decimal point character in the string is UTF-8, make the
@@ -12298,6 +12298,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
            }
        }
 
+        assert((IV)elen >= 0); /* here zero elen is fine */
        have = esignlen + zeros + elen;
        if (have < zeros)
            croak_memory_wrap();