mirror of
https://github.com/php/php-src.git
synced 2026-04-26 09:28:21 +02:00
Merge branch 'PHP-5.4' of git.php.net:php-src into PHP-5.4
* 'PHP-5.4' of git.php.net:php-src: (27 commits)
Fixed Bug #62202 (ReflectionParameter::getDefaultValue() memory leaks with constant)
sort NEWS
fix bug #55042 - erealloc without updating pointer
Fix bug #62186 readline fails to compile
fix unchecked emalloc (cherry picked from commit 158d8a6b08)
fix test
fix test
Typofix in comment in proc_open.c
fix CVE-2012-2143
updated the libmagic patch after Felipes regex fix
Fix bug #62150 Test Bug - ext/fileinfo/tests/finfo_open_error.phpt
Bug #62177 deactivate the linux test version on win
Fix bug #62177 Test Bug - finfo_file_regex.phpt
Fixed bug #62176 Test Bug - sapi/cli/tests/bug61546.phpt
fix unchecked emalloc
add CVE
add bug 62146
add bug #62082
sync with HEAD
sync with HEAD
...
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
--TEST--
|
||||
Bug #62097: fix for bug #54547 is wrong for 32-bit machines
|
||||
--SKIPIF--
|
||||
<php
|
||||
<?php
|
||||
if (PHP_INT_MAX !== 2147483647)
|
||||
die('skip for system with 32-bit wide longs only');
|
||||
--FILE--
|
||||
|
||||
+50
-74
@@ -1,6 +1,6 @@
|
||||
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
|
||||
--- libmagic.orig/apprentice.c 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/apprentice.c 2012-04-22 19:28:57.346309536 +0800
|
||||
--- libmagic.orig/apprentice.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/apprentice.c 2012-04-22 18:57:16.215980866 +0200
|
||||
@@ -29,6 +29,8 @@
|
||||
* apprentice - make one pass through /etc/magic, learning its secrets.
|
||||
*/
|
||||
@@ -729,8 +729,8 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
|
||||
m->str_flags = swap4(m->str_flags);
|
||||
}
|
||||
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
|
||||
--- libmagic.orig/ascmagic.c 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/ascmagic.c 2012-04-22 19:28:57.330309533 +0800
|
||||
--- libmagic.orig/ascmagic.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/ascmagic.c 2012-04-22 18:57:16.215980866 +0200
|
||||
@@ -139,10 +139,8 @@
|
||||
/* malloc size is a conservative overestimate; could be
|
||||
improved, or at least realloced after conversion. */
|
||||
@@ -755,8 +755,8 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
|
||||
return rv;
|
||||
}
|
||||
diff -u libmagic.orig/cdf.c libmagic/cdf.c
|
||||
--- libmagic.orig/cdf.c 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/cdf.c 2012-04-22 19:28:57.370309531 +0800
|
||||
--- libmagic.orig/cdf.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/cdf.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -43,7 +43,17 @@
|
||||
#include <err.h>
|
||||
#endif
|
||||
@@ -819,8 +819,8 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
|
||||
(void)fprintf(stderr, "timestamp %s\n", buf);
|
||||
} else {
|
||||
diff -u libmagic.orig/cdf.h libmagic/cdf.h
|
||||
--- libmagic.orig/cdf.h 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/cdf.h 2012-04-22 19:28:57.370309531 +0800
|
||||
--- libmagic.orig/cdf.h 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/cdf.h 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -35,7 +35,7 @@
|
||||
#ifndef _H_CDF_
|
||||
#define _H_CDF_
|
||||
@@ -857,8 +857,8 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
|
||||
void cdf_swap_header(cdf_header_t *);
|
||||
void cdf_unpack_header(cdf_header_t *, char *);
|
||||
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
|
||||
--- libmagic.orig/cdf_time.c 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/cdf_time.c 2012-04-22 19:28:57.326309537 +0800
|
||||
--- libmagic.orig/cdf_time.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/cdf_time.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -96,7 +96,7 @@
|
||||
}
|
||||
|
||||
@@ -916,8 +916,8 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
|
||||
static const char *ref = "Sat Apr 23 01:30:00 1977";
|
||||
char *p, *q;
|
||||
diff -u libmagic.orig/compress.c libmagic/compress.c
|
||||
--- libmagic.orig/compress.c 2012-04-22 19:30:43.182305355 +0800
|
||||
+++ libmagic/compress.c 2012-04-22 19:28:57.314309548 +0800
|
||||
--- libmagic.orig/compress.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/compress.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -32,6 +32,7 @@
|
||||
* uncompress(method, old, n, newch) - uncompress old into new,
|
||||
* using method, return sizeof new
|
||||
@@ -1079,8 +1079,8 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
|
||||
-#endif
|
||||
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
|
||||
diff -u libmagic.orig/file.h libmagic/file.h
|
||||
--- libmagic.orig/file.h 2012-04-22 19:30:43.186305188 +0800
|
||||
+++ libmagic/file.h 2012-04-22 19:49:58.922256776 +0800
|
||||
--- libmagic.orig/file.h 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/file.h 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -33,11 +33,9 @@
|
||||
#ifndef __file_h__
|
||||
#define __file_h__
|
||||
@@ -1252,8 +1252,8 @@ diff -u libmagic.orig/file.h libmagic/file.h
|
||||
+
|
||||
#endif /* __file_h__ */
|
||||
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
|
||||
--- libmagic.orig/fsmagic.c 2012-04-22 19:30:43.186305188 +0800
|
||||
+++ libmagic/fsmagic.c 2012-04-22 19:28:57.298309521 +0800
|
||||
--- libmagic.orig/fsmagic.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/fsmagic.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -59,27 +59,21 @@
|
||||
# define minor(dev) ((dev) & 0xff)
|
||||
#endif
|
||||
@@ -1577,8 +1577,8 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
|
||||
|
||||
/*
|
||||
diff -u libmagic.orig/funcs.c libmagic/funcs.c
|
||||
--- libmagic.orig/funcs.c 2012-04-22 19:30:43.186305188 +0800
|
||||
+++ libmagic/funcs.c 2012-04-22 19:28:57.370309531 +0800
|
||||
--- libmagic.orig/funcs.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/funcs.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -41,52 +41,42 @@
|
||||
#if defined(HAVE_WCTYPE_H)
|
||||
#include <wctype.h>
|
||||
@@ -1872,11 +1872,9 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
|
||||
+ return rep_cnt;
|
||||
}
|
||||
+
|
||||
Only in libmagic.orig: funcs.c.orig
|
||||
Only in libmagic.orig: funcs.c.rej
|
||||
diff -u libmagic.orig/magic.c libmagic/magic.c
|
||||
--- libmagic.orig/magic.c 2012-04-22 19:30:43.186305188 +0800
|
||||
+++ libmagic/magic.c 2012-04-22 19:28:57.370309531 +0800
|
||||
--- libmagic.orig/magic.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/magic.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -25,11 +25,6 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
@@ -2253,8 +2251,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
|
||||
public const char *
|
||||
magic_error(struct magic_set *ms)
|
||||
diff -u libmagic.orig/magic.h libmagic/magic.h
|
||||
--- libmagic.orig/magic.h 2012-04-22 19:30:43.190305058 +0800
|
||||
+++ libmagic/magic.h 2012-04-22 19:28:57.326309537 +0800
|
||||
--- libmagic.orig/magic.h 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/magic.h 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -85,6 +85,7 @@
|
||||
|
||||
const char *magic_getpath(const char *, int);
|
||||
@@ -2272,8 +2270,8 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
|
||||
int magic_errno(magic_t);
|
||||
|
||||
diff -u libmagic.orig/print.c libmagic/print.c
|
||||
--- libmagic.orig/print.c 2012-04-22 19:30:43.190305058 +0800
|
||||
+++ libmagic/print.c 2012-04-22 19:28:57.326309537 +0800
|
||||
--- libmagic.orig/print.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/print.c 2012-05-29 14:34:03.770376387 +0200
|
||||
@@ -29,6 +29,9 @@
|
||||
* print.c - debugging printout routines
|
||||
*/
|
||||
@@ -2467,8 +2465,8 @@ diff -u libmagic.orig/print.c libmagic/print.c
|
||||
|
||||
protected const char *
|
||||
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
|
||||
--- libmagic.orig/readcdf.c 2012-04-22 19:30:43.190305058 +0800
|
||||
+++ libmagic/readcdf.c 2012-04-22 19:28:57.326309537 +0800
|
||||
--- libmagic.orig/readcdf.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/readcdf.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -30,7 +30,11 @@
|
||||
#endif
|
||||
|
||||
@@ -2515,8 +2513,8 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
|
||||
if ((ec = strchr(c, '\n')) != NULL)
|
||||
*ec = '\0';
|
||||
diff -u libmagic.orig/readelf.c libmagic/readelf.c
|
||||
--- libmagic.orig/readelf.c 2012-04-22 19:30:43.190305058 +0800
|
||||
+++ libmagic/readelf.c 2012-04-22 19:28:57.378309534 +0800
|
||||
--- libmagic.orig/readelf.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/readelf.c 2012-04-22 18:57:16.219978162 +0200
|
||||
@@ -49,7 +49,7 @@
|
||||
off_t, int *, int);
|
||||
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t,
|
||||
@@ -2672,8 +2670,8 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c
|
||||
|
||||
if (fstat(fd, &st) == -1) {
|
||||
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
--- libmagic.orig/softmagic.c 2012-04-22 19:30:43.194304945 +0800
|
||||
+++ libmagic/softmagic.c 2012-04-22 19:28:57.286309597 +0800
|
||||
--- libmagic.orig/softmagic.c 2012-05-29 14:40:41.710960045 +0200
|
||||
+++ libmagic/softmagic.c 2012-05-29 14:34:31.900417647 +0200
|
||||
@@ -41,6 +41,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
@@ -2860,7 +2858,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1669,6 +1642,65 @@
|
||||
@@ -1669,6 +1642,42 @@
|
||||
return file_strncmp(a, b, len, flags);
|
||||
}
|
||||
|
||||
@@ -2876,29 +2874,6 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
+
|
||||
+ for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
|
||||
+ switch (Z_STRVAL_P(pattern)[i]) {
|
||||
+ case '?':
|
||||
+ t[j] = '.';
|
||||
+ break;
|
||||
+ case '*':
|
||||
+ t[j++] = '.';
|
||||
+ t[j] = '*';
|
||||
+ break;
|
||||
+ case '.':
|
||||
+ t[j++] = '\\';
|
||||
+ t[j] = '.';
|
||||
+ break;
|
||||
+ case '\\':
|
||||
+ t[j++] = '\\';
|
||||
+ t[j] = '\\';
|
||||
+ break;
|
||||
+ case '(':
|
||||
+ t[j++] = '\\';
|
||||
+ t[j] = '(';
|
||||
+ break;
|
||||
+ case ')':
|
||||
+ t[j++] = '\\';
|
||||
+ t[j] = ')';
|
||||
+ break;
|
||||
+ case '~':
|
||||
+ t[j++] = '\\';
|
||||
+ t[j] = '~';
|
||||
@@ -2926,7 +2901,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
private int
|
||||
magiccheck(struct magic_set *ms, struct magic *m)
|
||||
{
|
||||
@@ -1825,67 +1857,163 @@
|
||||
@@ -1825,67 +1834,163 @@
|
||||
break;
|
||||
}
|
||||
case FILE_REGEX: {
|
||||
@@ -2937,23 +2912,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
- if (ms->search.s == NULL)
|
||||
- return 0;
|
||||
-
|
||||
+ zval *pattern;
|
||||
+ int options = 0;
|
||||
+ pcre_cache_entry *pce;
|
||||
+ TSRMLS_FETCH();
|
||||
+
|
||||
+ MAKE_STD_ZVAL(pattern);
|
||||
+ ZVAL_STRINGL(pattern, (char *)m->value.s, m->vallen, 0);
|
||||
+
|
||||
+ options |= PCRE_MULTILINE;
|
||||
+
|
||||
+ if (m->str_flags & STRING_IGNORE_CASE) {
|
||||
+ options |= PCRE_CASELESS;
|
||||
+ }
|
||||
+
|
||||
+ convert_libmagic_pattern(pattern, options);
|
||||
+
|
||||
l = 0;
|
||||
- l = 0;
|
||||
- rc = regcomp(&rx, m->value.s,
|
||||
- REG_EXTENDED|REG_NEWLINE|
|
||||
- ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
|
||||
@@ -2970,6 +2929,23 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
|
||||
- size_t l = ms->search.s_len - 1;
|
||||
- char c = ms->search.s[l];
|
||||
- ((char *)(intptr_t)ms->search.s)[l] = '\0';
|
||||
+ zval *pattern;
|
||||
+ int options = 0;
|
||||
+ pcre_cache_entry *pce;
|
||||
+ TSRMLS_FETCH();
|
||||
+
|
||||
+ MAKE_STD_ZVAL(pattern);
|
||||
+ ZVAL_STRINGL(pattern, (char *)m->value.s, m->vallen, 0);
|
||||
+
|
||||
+ options |= PCRE_MULTILINE;
|
||||
+
|
||||
+ if (m->str_flags & STRING_IGNORE_CASE) {
|
||||
+ options |= PCRE_CASELESS;
|
||||
+ }
|
||||
+
|
||||
+ convert_libmagic_pattern(pattern, options);
|
||||
+
|
||||
+ l = v = 0;
|
||||
+#if (PHP_MAJOR_VERSION < 6)
|
||||
+ if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
|
||||
#else
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
Test finfo_file() function : regex rules
|
||||
--SKIPIF--
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc');
|
||||
if (substr(PHP_OS, 0, 3) != 'WIN') {
|
||||
die('skip.. only for Windows');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/**
|
||||
* Works with the unix file command:
|
||||
* $ file -m magic resources/test.awk
|
||||
* resources/test.awk: awk script, ASCII text
|
||||
*/
|
||||
$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
|
||||
$finfo = finfo_open( FILEINFO_MIME, $magicFile );
|
||||
|
||||
echo "*** Testing finfo_file() : regex rules ***\n";
|
||||
|
||||
// Calling finfo_file() with all possible arguments
|
||||
$file = __DIR__ . '/resources/test.awk';
|
||||
var_dump( finfo_file( $finfo, $file ) );
|
||||
var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
|
||||
|
||||
// Windows uses libfileinfo 1.0.5-dev
|
||||
// this may be causing the slightly different output from the first
|
||||
// finfo_file() call
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
*** Testing finfo_file() : regex rules ***
|
||||
string(10) "text/plain"
|
||||
string(22) "awk script, ASCII text"
|
||||
===DONE===
|
||||
@@ -1,7 +1,11 @@
|
||||
--TEST--
|
||||
Test finfo_file() function : regex rules
|
||||
--SKIPIF--
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc');
|
||||
if (substr(PHP_OS, 0, 3) == 'WIN') {
|
||||
die('skip.. only for Non Windows Systems');
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
--TEST--
|
||||
Test finfo_open() function : error functionality
|
||||
--SKIPIF--
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc');
|
||||
if(substr(PHP_OS, 0, 3) != 'WIN' )
|
||||
die("skip Not Valid for Linux");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : resource finfo_open([int options [, string arg]])
|
||||
* Description: Create a new fileinfo resource.
|
||||
* Source code: ext/fileinfo/fileinfo.c
|
||||
* Alias to functions:
|
||||
*/
|
||||
|
||||
$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
|
||||
|
||||
echo "*** Testing finfo_open() : error functionality ***\n";
|
||||
|
||||
var_dump( finfo_open( FILEINFO_MIME, 'foobarfile' ) );
|
||||
var_dump( finfo_open( array(), $magicFile ) );
|
||||
var_dump( finfo_open( FILEINFO_MIME, $magicFile, 'extraArg' ) );
|
||||
var_dump( finfo_open( PHP_INT_MAX - 1, $magicFile ) );
|
||||
var_dump( finfo_open( 'foobar' ) );
|
||||
|
||||
var_dump( new finfo('foobar') );
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
*** Testing finfo_open() : error functionality ***
|
||||
bool(false)
|
||||
|
||||
Warning: finfo_open() expects parameter 1 to be long, array given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: finfo_open() expects at most 2 parameters, 3 given in %s on line %d
|
||||
bool(false)
|
||||
resource(%d) of type (file_info)
|
||||
|
||||
Warning: finfo_open() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
Warning: finfo::finfo() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
|
||||
NULL
|
||||
===DONE===
|
||||
@@ -1,7 +1,10 @@
|
||||
--TEST--
|
||||
Test finfo_open() function : error functionality
|
||||
--SKIPIF--
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
|
||||
<?php require_once(dirname(__FILE__) . '/skipif.inc');
|
||||
if(substr(PHP_OS, 0, 3) == 'WIN' )
|
||||
die("skip Not Valid for Windows");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* Prototype : resource finfo_open([int options [, string arg]])
|
||||
|
||||
+66
-62
@@ -190,7 +190,7 @@ typedef enum _php_iconv_enc_scheme_t {
|
||||
#define PHP_ICONV_MIME_DECODE_STRICT (1<<0)
|
||||
#define PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR (1<<1)
|
||||
|
||||
/* {{{ prototypes */
|
||||
/* {{{ prototypes */
|
||||
static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l, iconv_t cd);
|
||||
static php_iconv_err_t _php_iconv_appendc(smart_str *d, const char c, iconv_t cd);
|
||||
|
||||
@@ -249,7 +249,7 @@ PHP_MINIT_FUNCTION(miconv)
|
||||
{
|
||||
static char buf[16];
|
||||
snprintf(buf, sizeof(buf), "%d.%d",
|
||||
((_libiconv_version >> 8) & 0x0f), (_libiconv_version & 0x0f));
|
||||
((_libiconv_version >> 8) & 0x0f), (_libiconv_version & 0x0f));
|
||||
version = buf;
|
||||
}
|
||||
#elif HAVE_GLIBC_ICONV
|
||||
@@ -354,7 +354,7 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
|
||||
|
||||
if (mimetype != NULL && !(output_context->op & PHP_OUTPUT_HANDLER_CLEAN)) {
|
||||
int len;
|
||||
char *p = strstr(ICONVG(output_encoding), "//");
|
||||
char *p = strstr(ICONVG(output_encoding), "//");
|
||||
|
||||
if (p) {
|
||||
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, (int)(p - ICONVG(output_encoding)), ICONVG(output_encoding));
|
||||
@@ -375,7 +375,7 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* {{{ _php_iconv_appendl() */
|
||||
static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l, iconv_t cd)
|
||||
{
|
||||
@@ -400,7 +400,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
|
||||
|
||||
if (iconv(cd, (char **)&in_p, &in_left, (char **) &out_p, &out_left) == (size_t)-1) {
|
||||
#if ICONV_SUPPORTS_ERRNO
|
||||
switch (errno) {
|
||||
switch (errno) {
|
||||
case EINVAL:
|
||||
return PHP_ICONV_ERR_ILLEGAL_CHAR;
|
||||
|
||||
@@ -415,7 +415,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
|
||||
}
|
||||
#else
|
||||
if (prev_in_left == in_left) {
|
||||
return PHP_ICONV_ERR_UNKNOWN;
|
||||
return PHP_ICONV_ERR_UNKNOWN;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -446,7 +446,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
|
||||
#else
|
||||
if (out_left != 0) {
|
||||
return PHP_ICONV_ERR_UNKNOWN;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
(d)->len += (buf_growth - out_left);
|
||||
@@ -492,31 +492,35 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||
in_size = in_len;
|
||||
|
||||
cd = iconv_open(out_charset, in_charset);
|
||||
|
||||
|
||||
if (cd == (iconv_t)(-1)) {
|
||||
return PHP_ICONV_ERR_UNKNOWN;
|
||||
}
|
||||
|
||||
out_buffer = (char *) emalloc(out_size + 1);
|
||||
out_p = out_buffer;
|
||||
|
||||
|
||||
#ifdef NETWARE
|
||||
result = iconv(cd, (char **) &in_p, &in_size, (char **)
|
||||
#else
|
||||
result = iconv(cd, (const char **) &in_p, &in_size, (char **)
|
||||
#endif
|
||||
&out_p, &out_left);
|
||||
|
||||
|
||||
if (result == (size_t)(-1)) {
|
||||
efree(out_buffer);
|
||||
return PHP_ICONV_ERR_UNKNOWN;
|
||||
}
|
||||
|
||||
if (out_left < 8) {
|
||||
out_buffer = (char *) erealloc(out_buffer, out_size + 8);
|
||||
size_t pos = out_p - out_buffer;
|
||||
out_buffer = (char *) safe_erealloc(out_buffer, out_size, 1, 8);
|
||||
out_p = out_buffer+pos;
|
||||
out_size += 7;
|
||||
out_left += 7;
|
||||
}
|
||||
|
||||
/* flush the shift-out sequences */
|
||||
/* flush the shift-out sequences */
|
||||
result = iconv(cd, NULL, NULL, &out_p, &out_left);
|
||||
|
||||
if (result == (size_t)(-1)) {
|
||||
@@ -555,10 +559,10 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||
}
|
||||
}
|
||||
in_left= in_len;
|
||||
out_left = in_len + 32; /* Avoid realloc() most cases */
|
||||
out_left = in_len + 32; /* Avoid realloc() most cases */
|
||||
out_size = 0;
|
||||
bsz = out_left;
|
||||
out_buf = (char *) emalloc(bsz+1);
|
||||
out_buf = (char *) emalloc(bsz+1);
|
||||
out_p = out_buf;
|
||||
|
||||
while (in_left > 0) {
|
||||
@@ -573,14 +577,14 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||
out_p = out_buf = tmp_buf;
|
||||
out_p += out_size;
|
||||
out_left = bsz - out_size;
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (result != (size_t)(-1)) {
|
||||
/* flush the shift-out sequences */
|
||||
/* flush the shift-out sequences */
|
||||
for (;;) {
|
||||
result = iconv(cd, NULL, NULL, (char **) &out_p, &out_left);
|
||||
out_size = bsz - out_left;
|
||||
@@ -592,7 +596,7 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||
if (errno == E2BIG) {
|
||||
bsz += 16;
|
||||
tmp_buf = (char *) erealloc(out_buf, bsz);
|
||||
|
||||
|
||||
out_p = out_buf = tmp_buf;
|
||||
out_p += out_size;
|
||||
out_left = bsz - out_size;
|
||||
@@ -684,7 +688,7 @@ static php_iconv_err_t _php_iconv_strlen(unsigned int *pretval, const char *str,
|
||||
}
|
||||
|
||||
if (out_left > 0) {
|
||||
cnt -= out_left / GENERIC_SUPERSET_NBYTES;
|
||||
cnt -= out_left / GENERIC_SUPERSET_NBYTES;
|
||||
}
|
||||
|
||||
#if ICONV_SUPPORTS_ERRNO
|
||||
@@ -735,12 +739,12 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
|
||||
|
||||
unsigned int cnt;
|
||||
int total_len;
|
||||
|
||||
|
||||
err = _php_iconv_strlen(&total_len, str, nbytes, enc);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
if (len < 0) {
|
||||
if ((len += (total_len - offset)) < 0) {
|
||||
return PHP_ICONV_ERR_SUCCESS;
|
||||
@@ -772,7 +776,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
|
||||
smart_str_0(pretval);
|
||||
return PHP_ICONV_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
cd1 = iconv_open(GENERIC_SUPERSET_NAME, enc);
|
||||
|
||||
if (cd1 == (iconv_t)(-1)) {
|
||||
@@ -857,7 +861,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
|
||||
|
||||
if (cd2 != (iconv_t)NULL) {
|
||||
iconv_close(cd2);
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1042,7 +1046,7 @@ static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval,
|
||||
if (ndl_buf) {
|
||||
efree(ndl_buf);
|
||||
}
|
||||
|
||||
|
||||
iconv_close(cd);
|
||||
|
||||
return err;
|
||||
@@ -1089,7 +1093,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
|
||||
if ((fname_nbytes + 2) >= max_line_len
|
||||
|| (out_charset_len + 12) >= max_line_len) {
|
||||
/* field name is too long */
|
||||
err = PHP_ICONV_ERR_TOO_BIG;
|
||||
err = PHP_ICONV_ERR_TOO_BIG;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -1131,7 +1135,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
|
||||
char_cnt -= 2;
|
||||
|
||||
in_p = fval;
|
||||
in_left = fval_nbytes;
|
||||
in_left = fval_nbytes;
|
||||
|
||||
do {
|
||||
size_t prev_in_left;
|
||||
@@ -1142,8 +1146,8 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
|
||||
smart_str_appendl(pretval, lfchars, lfchars_len);
|
||||
smart_str_appendc(pretval, ' ');
|
||||
char_cnt = max_line_len - 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
smart_str_appendl(pretval, "=?", sizeof("=?") - 1);
|
||||
char_cnt -= 2;
|
||||
smart_str_appendl(pretval, out_charset, out_charset_len);
|
||||
@@ -1195,7 +1199,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
err = PHP_ICONV_ERR_UNKNOWN;
|
||||
goto out;
|
||||
@@ -1295,7 +1299,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
err = PHP_ICONV_ERR_UNKNOWN;
|
||||
goto out;
|
||||
@@ -1372,7 +1376,7 @@ out:
|
||||
}
|
||||
if (encoded != NULL) {
|
||||
efree(encoded);
|
||||
}
|
||||
}
|
||||
if (buf != NULL) {
|
||||
efree(buf);
|
||||
}
|
||||
@@ -1391,7 +1395,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
size_t str_left;
|
||||
unsigned int scan_stat = 0;
|
||||
const char *csname = NULL;
|
||||
size_t csname_len;
|
||||
size_t csname_len;
|
||||
const char *encoded_text = NULL;
|
||||
size_t encoded_text_len = 0;
|
||||
const char *encoded_word = NULL;
|
||||
@@ -1430,7 +1434,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
scan_stat = 8;
|
||||
scan_stat = 8;
|
||||
break;
|
||||
|
||||
case '=': /* first letter of an encoded chunk */
|
||||
@@ -1455,7 +1459,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
|
||||
case 1: /* expecting a delimiter */
|
||||
if (*p1 != '?') {
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1470,7 +1474,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
csname = p1 + 1;
|
||||
scan_stat = 2;
|
||||
break;
|
||||
|
||||
|
||||
case 2: /* expecting a charset name */
|
||||
switch (*p1) {
|
||||
case '?': /* normal delimiter: encoding scheme follows */
|
||||
@@ -1480,7 +1484,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
case '*': /* new style delimiter: locale id follows */
|
||||
scan_stat = 10;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (scan_stat != 2) {
|
||||
char tmpbuf[80];
|
||||
|
||||
@@ -1493,7 +1497,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
|
||||
if (csname_len > sizeof(tmpbuf) - 1) {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1549,7 +1553,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
--str_left;
|
||||
}
|
||||
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1608,12 +1612,12 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 4: /* expecting a delimiter */
|
||||
if (*p1 != '?') {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1669,7 +1673,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
if (*p1 != '=') {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1696,17 +1700,17 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
switch (*p1) {
|
||||
default:
|
||||
/* Handle non-RFC-compliant formats
|
||||
*
|
||||
*
|
||||
* RFC2047 requires the character that comes right
|
||||
* after an encoded word (chunk) to be a whitespace,
|
||||
* while there are lots of broken implementations that
|
||||
* generate such malformed headers that don't fulfill
|
||||
* that requirement.
|
||||
*/
|
||||
if (!eos) {
|
||||
*/
|
||||
if (!eos) {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1738,7 +1742,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
if (decoded_text == NULL) {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
@@ -1761,7 +1765,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
|
||||
encoded_word = NULL;
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
break;
|
||||
@@ -1956,7 +1960,7 @@ PHP_FUNCTION(iconv_strlen)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
char *str;
|
||||
int str_len;
|
||||
int str_len;
|
||||
|
||||
php_iconv_err_t err;
|
||||
|
||||
@@ -1972,7 +1976,7 @@ PHP_FUNCTION(iconv_strlen)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
err = _php_iconv_strlen(&retval, str, str_len, charset);
|
||||
err = _php_iconv_strlen(&retval, str, str_len, charset);
|
||||
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
|
||||
if (err == PHP_ICONV_ERR_SUCCESS) {
|
||||
RETVAL_LONG(retval);
|
||||
@@ -1989,7 +1993,7 @@ PHP_FUNCTION(iconv_substr)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
char *str;
|
||||
int str_len;
|
||||
int str_len;
|
||||
long offset, length = 0;
|
||||
|
||||
php_iconv_err_t err;
|
||||
@@ -2008,10 +2012,10 @@ PHP_FUNCTION(iconv_substr)
|
||||
}
|
||||
|
||||
if (ZEND_NUM_ARGS() < 3) {
|
||||
length = str_len;
|
||||
length = str_len;
|
||||
}
|
||||
|
||||
err = _php_iconv_substr(&retval, str, str_len, offset, length, charset);
|
||||
err = _php_iconv_substr(&retval, str, str_len, offset, length, charset);
|
||||
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
|
||||
|
||||
if (err == PHP_ICONV_ERR_SUCCESS && str != NULL && retval.c != NULL) {
|
||||
@@ -2029,7 +2033,7 @@ PHP_FUNCTION(iconv_strpos)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
char *haystk;
|
||||
int haystk_len;
|
||||
int haystk_len;
|
||||
char *ndl;
|
||||
int ndl_len;
|
||||
long offset = 0;
|
||||
@@ -2059,7 +2063,7 @@ PHP_FUNCTION(iconv_strpos)
|
||||
}
|
||||
|
||||
err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
|
||||
offset, charset);
|
||||
offset, charset);
|
||||
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
|
||||
|
||||
if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
|
||||
@@ -2077,7 +2081,7 @@ PHP_FUNCTION(iconv_strrpos)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
char *haystk;
|
||||
int haystk_len;
|
||||
int haystk_len;
|
||||
char *ndl;
|
||||
int ndl_len;
|
||||
|
||||
@@ -2101,7 +2105,7 @@ PHP_FUNCTION(iconv_strrpos)
|
||||
}
|
||||
|
||||
err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
|
||||
-1, charset);
|
||||
-1, charset);
|
||||
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
|
||||
|
||||
if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
|
||||
@@ -2241,7 +2245,7 @@ PHP_FUNCTION(iconv_mime_decode)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
long mode = 0;
|
||||
|
||||
|
||||
smart_str retval = {0};
|
||||
|
||||
php_iconv_err_t err;
|
||||
@@ -2282,7 +2286,7 @@ PHP_FUNCTION(iconv_mime_decode_headers)
|
||||
char *charset = ICONVG(internal_encoding);
|
||||
int charset_len = 0;
|
||||
long mode = 0;
|
||||
|
||||
|
||||
php_iconv_err_t err = PHP_ICONV_ERR_SUCCESS;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls",
|
||||
@@ -2350,14 +2354,14 @@ PHP_FUNCTION(iconv_mime_decode_headers)
|
||||
zend_hash_update(Z_ARRVAL_P(return_value), header_name, header_name_len, (void *)&new_elem, sizeof(new_elem), NULL);
|
||||
|
||||
elem = &new_elem;
|
||||
}
|
||||
}
|
||||
add_next_index_stringl(*elem, header_value, header_value_len, 1);
|
||||
} else {
|
||||
add_assoc_stringl_ex(return_value, header_name, header_name_len, header_value, header_value_len, 1);
|
||||
}
|
||||
}
|
||||
encoded_str_len -= next_pos - encoded_str;
|
||||
encoded_str = next_pos;
|
||||
encoded_str = next_pos;
|
||||
|
||||
smart_str_free(&decoded_header);
|
||||
}
|
||||
@@ -2378,7 +2382,7 @@ PHP_NAMED_FUNCTION(php_if_iconv)
|
||||
size_t out_len;
|
||||
int in_charset_len = 0, out_charset_len = 0, in_buffer_len;
|
||||
php_iconv_err_t err;
|
||||
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
|
||||
&in_charset, &in_charset_len, &out_charset, &out_charset_len, &in_buffer, &in_buffer_len) == FAILURE)
|
||||
return;
|
||||
@@ -2390,7 +2394,7 @@ PHP_NAMED_FUNCTION(php_if_iconv)
|
||||
|
||||
err = php_iconv_string(in_buffer, (size_t)in_buffer_len,
|
||||
&out_buffer, &out_len, out_charset, in_charset);
|
||||
_php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
|
||||
_php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
|
||||
if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) {
|
||||
RETVAL_STRINGL(out_buffer, out_len, 0);
|
||||
} else {
|
||||
@@ -2539,7 +2543,7 @@ static int php_iconv_stream_filter_append_bucket(
|
||||
icnt = buf_len;
|
||||
}
|
||||
|
||||
out_buf_size = ocnt = prev_ocnt = initial_out_buf_size;
|
||||
out_buf_size = ocnt = prev_ocnt = initial_out_buf_size;
|
||||
if (NULL == (out_buf = pemalloc(out_buf_size, persistent))) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ $value = $formatter->parse('2147483650', \NumberFormatter::TYPE_INT64);
|
||||
var_dump($value);
|
||||
|
||||
?>
|
||||
--EXPECTREGEX--
|
||||
--EXPECT--
|
||||
int(2147483647)
|
||||
int(2147483650)
|
||||
|
||||
|
||||
+3
-3
@@ -38,7 +38,7 @@ static php_uint32 phar_tar_number(char *buf, int len) /* {{{ */
|
||||
/* }}} */
|
||||
|
||||
/* adapted from format_octal() in libarchive
|
||||
*
|
||||
*
|
||||
* Copyright (c) 2003-2009 Tim Kientzle
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -161,7 +161,7 @@ static int phar_tar_process_metadata(phar_entry_info *entry, php_stream *fp TSRM
|
||||
size_t save = php_stream_tell(fp), read;
|
||||
phar_entry_info *mentry;
|
||||
|
||||
metadata = (char *) emalloc(entry->uncompressed_filesize + 1);
|
||||
metadata = (char *) safe_emalloc(1, entry->uncompressed_filesize, 1);
|
||||
|
||||
read = php_stream_read(fp, metadata, entry->uncompressed_filesize);
|
||||
if (read != entry->uncompressed_filesize) {
|
||||
@@ -377,7 +377,7 @@ bail:
|
||||
}
|
||||
|
||||
read = php_stream_read(fp, buf, sizeof(buf));
|
||||
|
||||
|
||||
if (read != sizeof(buf)) {
|
||||
efree(entry.filename);
|
||||
if (error) {
|
||||
|
||||
@@ -198,7 +198,7 @@ PHP_RSHUTDOWN_FUNCTION(readline)
|
||||
|
||||
PHP_MINFO_FUNCTION(readline)
|
||||
{
|
||||
return PHP_MINFO(cli_readline)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
|
||||
PHP_MINFO(cli_readline)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
|
||||
}
|
||||
|
||||
/* }}} */
|
||||
|
||||
@@ -2561,7 +2561,8 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
|
||||
|
||||
*return_value = *precv->op2.zv;
|
||||
INIT_PZVAL(return_value);
|
||||
if (Z_TYPE_P(return_value) != IS_CONSTANT && Z_TYPE_P(return_value) != IS_CONSTANT_ARRAY) {
|
||||
if ((Z_TYPE_P(return_value) & IS_CONSTANT_TYPE_MASK) != IS_CONSTANT
|
||||
&& (Z_TYPE_P(return_value) & IS_CONSTANT_TYPE_MASK) != IS_CONSTANT_ARRAY) {
|
||||
zval_copy_ctor(return_value);
|
||||
}
|
||||
zval_update_constant_ex(&return_value, (void*)0, param->fptr->common.scope TSRMLS_CC);
|
||||
|
||||
@@ -629,7 +629,8 @@ _crypt_extended_r(const char *key, const char *setting,
|
||||
*/
|
||||
q = (u_char *) keybuf;
|
||||
while (q - (u_char *) keybuf < sizeof(keybuf)) {
|
||||
if ((*q++ = *key << 1))
|
||||
*q++ = *key << 1;
|
||||
if (*key)
|
||||
key++;
|
||||
}
|
||||
if (des_setkey((u_char *) keybuf, data))
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
/* This symbol is defined in ext/standard/config.m4.
|
||||
* Essentially, it is set if you HAVE_FORK || PHP_WIN32
|
||||
* Otherplatforms may modify that configure check and add suitable #ifdefs
|
||||
* Other platforms may modify that configure check and add suitable #ifdefs
|
||||
* around the alternate code.
|
||||
* */
|
||||
#ifdef PHP_CAN_SUPPORT_PROC_OPEN
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
crypt() function - characters > 0x80
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!function_exists('crypt')) {
|
||||
die("SKIP crypt() is not available");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(crypt("À1234abcd", "99"));
|
||||
var_dump(crypt("À9234abcd", "99"));
|
||||
var_dump(crypt("À1234abcd", "_01234567"));
|
||||
var_dump(crypt("À9234abcd", "_01234567"));
|
||||
--EXPECT--
|
||||
string(13) "99PxawtsTfX56"
|
||||
string(13) "99jcVcGxUZOWk"
|
||||
string(20) "_01234567IBjxKliXXRQ"
|
||||
string(20) "_012345678OSGpGQRVHA"
|
||||
+1
-4
@@ -239,10 +239,7 @@ $ini_overwrites = array(
|
||||
'magic_quotes_runtime=0',
|
||||
'ignore_repeated_errors=0',
|
||||
'precision=14',
|
||||
'unicode.runtime_encoding=ISO-8859-1',
|
||||
'unicode.script_encoding=UTF-8',
|
||||
'unicode.output_encoding=UTF-8',
|
||||
'unicode.from_error_mode=U_INVALID_SUBSTITUTE',
|
||||
'memory_limit=128M',
|
||||
);
|
||||
|
||||
function write_information($show_html)
|
||||
|
||||
@@ -2,13 +2,22 @@
|
||||
Bug #61546 (functions related to current script failed when chdir() in cli sapi)
|
||||
--FILE--
|
||||
<?php
|
||||
// reference doc for getmyinode() on php.net states that it returns an integer or FALSE on error
|
||||
// on Windows, getmyinode() returns 0 which normally casts to FALSE
|
||||
// however, the implementation of getmyinode() (in pageinfo.c) returns an explicit FALSE in the
|
||||
// event that the internal page_inode structure is less than 0, otherwise it returns the long value
|
||||
// of page_inode. therefore, an explicit 0 should be a passing value for this test.
|
||||
//
|
||||
// the ext/standard/tests/file/statpage.phpt test also tests getmyinode() returns an integer and will
|
||||
// pass even if that integer is 0. on Windows, the getmyinode() call in statpage.phpt returns 0 and
|
||||
// passes on Windows.
|
||||
$php = getenv("TEST_PHP_EXECUTABLE");
|
||||
$test_code = <<<PHP
|
||||
<?php
|
||||
chdir('..');
|
||||
var_dump(get_current_user() != "");
|
||||
chdir('..');
|
||||
var_dump(getmyinode() != false);
|
||||
var_dump(getmyinode() !== false);
|
||||
var_dump(getlastmod() != false);
|
||||
PHP;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user