From 0e09571f21d41969a26e9ec73ef0da78d9371d38 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sat, 17 Oct 2015 10:33:50 -0700 Subject: Fix integer overflow detection with leading zeros Since they don't contribute to the resulting value just skip them before parsing. This matches the behavior of strtol/strtoll and results in more intuitive behavior. --- src/pugixml.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 694a1a6..9bb054e 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -4350,6 +4350,10 @@ PUGI__NS_BEGIN { s += 2; + // since overflow detection relies on length of the sequence skip leading zeros + while (*s == '0') + s++; + const char_t* start = s; for (;;) @@ -4370,6 +4374,10 @@ PUGI__NS_BEGIN } else { + // since overflow detection relies on length of the sequence skip leading zeros + while (*s == '0') + s++; + const char_t* start = s; for (;;) -- cgit v1.2.3