Browse Source

Merge branch 'bug67251' into PHP-5.4

* bug67251:
  Fix bug #67251 - date_parse_from_format out-of-bounds read

Conflicts:
	ext/date/lib/parse_date.c
pull/684/head
Stanislav Malyshev 12 years ago
parent
commit
dc92e81922
  1. 6
      ext/date/lib/parse_date.c
  2. 4
      ext/date/lib/parse_date.re
  3. 38
      ext/date/tests/bug67251.phpt

6
ext/date/lib/parse_date.c

@ -1,4 +1,4 @@
/* Generated by re2c 0.13.5 on Tue May 13 16:47:20 2014 */
/* Generated by re2c 0.13.5 on Tue May 13 16:52:44 2014 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
@ -25127,6 +25127,10 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
break;
case '\\': /* escaped char */
if(!fptr[1]) {
add_pbf_error(s, "Escaped character expected", string, begin);
break;
}
fptr++;
if (*ptr == *fptr) {
++ptr;

4
ext/date/lib/parse_date.re

@ -2134,6 +2134,10 @@ timelib_time *timelib_parse_from_format(char *format, char *string, int len, tim
break;
case '\\': /* escaped char */
if(!fptr[1]) {
add_pbf_error(s, "Escaped character expected", string, begin);
break;
}
fptr++;
if (*ptr == *fptr) {
++ptr;

38
ext/date/tests/bug67251.phpt

@ -0,0 +1,38 @@
--TEST--
Bug #67251 (date_parse_from_format out-of-bounds read)
--INI--
date.timezone=Europe/Berlin
--FILE--
<?php
var_dump(date_parse_from_format("\\","AAAABBBB"));
--EXPECT--
array(12) {
["year"]=>
bool(false)
["month"]=>
bool(false)
["day"]=>
bool(false)
["hour"]=>
bool(false)
["minute"]=>
bool(false)
["second"]=>
bool(false)
["fraction"]=>
bool(false)
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(2)
["errors"]=>
array(1) {
[0]=>
string(13) "Trailing data"
}
["is_localtime"]=>
bool(false)
}
Loading…
Cancel
Save