]> granicus.if.org Git - php/commitdiff
Add check in fgetcsv in case sizeof(unit) != sizeof(size_t)
authorAnatol Belski <ab@php.net>
Mon, 12 Sep 2016 16:59:38 +0000 (18:59 +0200)
committerAnatol Belski <ab@php.net>
Mon, 12 Sep 2016 16:59:38 +0000 (18:59 +0200)
(cherry picked from commit 99ac11222cb2a4e9aa6a865f908b28def349c049)

Conflicts:
ext/standard/file.c

ext/standard/file.c

index 5b051774c9956931ec192fa5c038dabdfb0d715d..6e17dc5d11c9c278e67b2b0ff17daa0808865648 100644 (file)
@@ -2336,6 +2336,12 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
 
                /* 3. Now pass our field back to php */
                *comp_end = '\0';
+#ifndef ZEND_ENABLE_ZVAL_LONG64
+               if (UNEXPECTED((comp_end - temp) > ZEND_LONG_MAX)) {
+                       zend_error_noreturn(E_WARNING, "String overflow, max size is " ZEND_LONG_FMT, ZEND_LONG_MAX);
+                       break;
+               }
+#endif
                add_next_index_stringl(return_value, temp, comp_end - temp);
        } while (inc_len > 0);