diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 1999-07-31 22:44:56 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-07-31 22:44:56 +0000 |
commit | 893fe2c21345ec73429b2371c33adad8d22fc7f2 (patch) | |
tree | 40616f23c0e5583acd35f985de295e3ebf64efdb /util.c | |
parent | d6a287148f674729887096e6af50b42b464c3451 (diff) | |
download | perl-893fe2c21345ec73429b2371c33adad8d22fc7f2.tar.gz |
Integer overflow iteration.
p4raw-id: //depot/cfgperl@3843
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 20 |
1 files changed, 16 insertions, 4 deletions
@@ -2828,7 +2828,11 @@ Perl_scan_bin(pTHX_ char *start, I32 len, I32 *retlen) } if (!overflowed) rnv = (NV) ruv; - if (rnv > 4294967295.0) { + if ( ( overflowed && rnv > 4294967295.0) +#if UV_SIZEOF > 4 + || (!overflowed && ruv > 0xffffffff ) +#endif + ) { dTHR; if (ckWARN(WARN_UNSAFE)) Perl_warner(aTHX_ WARN_UNSAFE, @@ -2864,7 +2868,7 @@ Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen) } } if (!overflowed) { - register xuv = ruv << 3; + register UV xuv = ruv << 3; if ((xuv >> 3) != ruv) { dTHR; @@ -2889,7 +2893,11 @@ Perl_scan_oct(pTHX_ char *start, I32 len, I32 *retlen) } if (!overflowed) rnv = (NV) ruv; - if (rnv > 4294967295.0) { + if ( ( overflowed && rnv > 4294967295.0) +#if UV_SIZEOF > 4 + || (!overflowed && ruv > 0xffffffff ) +#endif + ) { dTHR; if (ckWARN(WARN_UNSAFE)) Perl_warner(aTHX_ WARN_UNSAFE, @@ -2953,7 +2961,11 @@ Perl_scan_hex(pTHX_ char *start, I32 len, I32 *retlen) } if (!overflowed) rnv = (NV) ruv; - if (rnv > 4294967295.0) { + if ( ( overflowed && rnv > 4294967295.0) +#if UV_SIZEOF > 4 + || (!overflowed && ruv > 0xffffffff ) +#endif + ) { dTHR; if (ckWARN(WARN_UNSAFE)) Perl_warner(aTHX_ WARN_UNSAFE, |