]> granicus.if.org Git - libexpat/commitdiff
Remove senseless pointer arithmetic (issue #170)
authorRhodri James <rhodri@wildebeest.org.uk>
Sun, 29 Jul 2018 21:36:45 +0000 (22:36 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Mon, 6 Aug 2018 17:56:50 +0000 (19:56 +0200)
expat/lib/xmlparse.c

index 448dc9f579e34e3bd978e3d63bff060e314cb8e8..82407f6854c23163687f36d0cd2f540ae80f9d95 100644 (file)
@@ -2089,15 +2089,20 @@ XML_GetBuffer(XML_Parser parser, int len)
         parser->m_bufferPtr = parser->m_buffer + keep;
       }
       else {
-        parser->m_bufferEnd = newBuf + (parser->m_bufferEnd - parser->m_bufferPtr);
+        /* This must be a brand new buffer with no data in it yet */
+        parser->m_bufferEnd = newBuf;
         parser->m_bufferPtr = parser->m_buffer = newBuf;
       }
 #else
       if (parser->m_bufferPtr) {
         memcpy(newBuf, parser->m_bufferPtr, parser->m_bufferEnd - parser->m_bufferPtr);
         FREE(parser, parser->m_buffer);
+        parser->m_bufferEnd = newBuf + (parser->m_bufferEnd - parser->m_bufferPtr);
+      }
+      else {
+        /* This must be a brand new buffer with no data in it yet */
+        parser->m_bufferEnd = newBuf;
       }
-      parser->m_bufferEnd = newBuf + (parser->m_bufferEnd - parser->m_bufferPtr);
       parser->m_bufferPtr = parser->m_buffer = newBuf;
 #endif  /* not defined XML_CONTEXT_BYTES */
     }