summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-06-29 00:19:16 +0300
committerDmitry Stogov <dmitry@zend.com>2018-06-29 00:19:16 +0300
commitdd932f7e634f0ad621cf1118cabef42570059b5e (patch)
tree2d2fdd0ff62e505bbce2be59c475fa4a2c392e92
parenta7101415cb19ec01aacaa0ababb88d02c6a1631d (diff)
downloadphp-git-dd932f7e634f0ad621cf1118cabef42570059b5e.tar.gz
Changed php_add[c]slashes prototypes (removed should_free argument)
-rw-r--r--ext/filter/sanitizing_filters.c2
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c4
-rw-r--r--ext/standard/php_string.h7
-rw-r--r--ext/standard/streamsfuncs.c2
-rw-r--r--ext/standard/string.c59
-rw-r--r--ext/standard/var.c6
-rw-r--r--sapi/phpdbg/phpdbg_bp.c6
-rw-r--r--sapi/phpdbg/phpdbg_utils.c2
8 files changed, 39 insertions, 49 deletions
diff --git a/ext/filter/sanitizing_filters.c b/ext/filter/sanitizing_filters.c
index a84c44d4cf..8682e31994 100644
--- a/ext/filter/sanitizing_filters.c
+++ b/ext/filter/sanitizing_filters.c
@@ -374,7 +374,7 @@ void php_filter_magic_quotes(PHP_INPUT_FILTER_PARAM_DECL)
zend_string *buf;
/* just call php_addslashes quotes */
- buf = php_addslashes(Z_STR_P(value), 0);
+ buf = php_addslashes(Z_STR_P(value));
zval_ptr_dtor(value);
ZVAL_STR(value, buf);
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 4c067b3092..125c58350d 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -66,9 +66,7 @@ static char * _pdo_pgsql_trim_message(const char *message, int persistent)
static zend_string* _pdo_pgsql_escape_credentials(char *str)
{
if (str) {
- zend_string *tmp = zend_string_init(str, strlen(str), 0);
-
- return php_addcslashes(tmp, 1, "\\'", sizeof("\\'"));
+ return php_addcslashes_str(str, strlen(str), "\\'", sizeof("\\'"));
}
return NULL;
diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h
index fe6fce13e1..780b8e6f13 100644
--- a/ext/standard/php_string.h
+++ b/ext/standard/php_string.h
@@ -127,13 +127,14 @@ PHPAPI zend_string *php_string_toupper(zend_string *s);
PHPAPI zend_string *php_string_tolower(zend_string *s);
PHPAPI char *php_strtr(char *str, size_t len, const char *str_from, const char *str_to, size_t trlen);
#if ZEND_INTRIN_SSE4_2_FUNC_PTR
-PHPAPI extern zend_string *(*php_addslashes)(zend_string *str, int should_free);
+PHPAPI extern zend_string *(*php_addslashes)(zend_string *str);
PHPAPI extern void (*php_stripslashes)(zend_string *str);
#else
-PHPAPI zend_string *php_addslashes(zend_string *str, int should_free);
+PHPAPI zend_string *php_addslashes(zend_string *str);
PHPAPI void php_stripslashes(zend_string *str);
#endif
-PHPAPI zend_string *php_addcslashes(zend_string *str, int freeit, char *what, size_t what_len);
+PHPAPI zend_string *php_addcslashes_str(const char *str, size_t len, char *what, size_t what_len);
+PHPAPI zend_string *php_addcslashes(zend_string *str, char *what, size_t what_len);
PHPAPI void php_stripcslashes(zend_string *str);
PHPAPI zend_string *php_basename(const char *s, size_t len, char *suffix, size_t sufflen);
PHPAPI size_t php_dirname(char *str, size_t len);
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 7f717c4b08..391a379b4c 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -148,7 +148,7 @@ PHP_FUNCTION(stream_socket_client)
if (stream == NULL) {
/* host might contain binary characters */
- zend_string *quoted_host = php_addslashes(host, 0);
+ zend_string *quoted_host = php_addslashes(host);
php_error_docref(NULL, E_WARNING, "unable to connect to %s (%s)", ZSTR_VAL(quoted_host), errstr == NULL ? "Unknown error" : ZSTR_VAL(errstr));
zend_string_release_ex(quoted_host, 0);
diff --git a/ext/standard/string.c b/ext/standard/string.c
index ca432c76d6..cbea7449b0 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -3670,7 +3670,7 @@ PHP_FUNCTION(addcslashes)
RETURN_STR_COPY(str);
}
- RETURN_STR(php_addcslashes(str, 0, ZSTR_VAL(what), ZSTR_LEN(what)));
+ RETURN_STR(php_addcslashes_str(ZSTR_VAL(str), ZSTR_LEN(str), ZSTR_VAL(what), ZSTR_LEN(what)));
}
/* }}} */
@@ -3688,7 +3688,7 @@ PHP_FUNCTION(addslashes)
RETURN_EMPTY_STRING();
}
- RETURN_STR(php_addslashes(str, 0));
+ RETURN_STR(php_addslashes(str));
}
/* }}} */
@@ -3804,20 +3804,20 @@ PHPAPI void php_stripcslashes(zend_string *str)
}
/* }}} */
-/* {{{ php_addcslashes
+/* {{{ php_addcslashes_str
*/
-PHPAPI zend_string *php_addcslashes(zend_string *str, int should_free, char *what, size_t wlength)
+PHPAPI zend_string *php_addcslashes_str(const char *str, size_t len, char *what, size_t wlength)
{
char flags[256];
char *target;
const char *source, *end;
char c;
size_t newlen;
- zend_string *new_str = zend_string_safe_alloc(4, ZSTR_LEN(str), 0, 0);
+ zend_string *new_str = zend_string_safe_alloc(4, len, 0, 0);
php_charmask((unsigned char *)what, wlength, flags);
- for (source = (char*)ZSTR_VAL(str), end = source + ZSTR_LEN(str), target = ZSTR_VAL(new_str); source < end; source++) {
+ for (source = str, end = source + len, target = ZSTR_VAL(new_str); source < end; source++) {
c = *source;
if (flags[(unsigned char)c]) {
if ((unsigned char) c < 32 || (unsigned char) c > 126) {
@@ -3840,16 +3840,21 @@ PHPAPI zend_string *php_addcslashes(zend_string *str, int should_free, char *wha
}
*target = 0;
newlen = target - ZSTR_VAL(new_str);
- if (newlen < ZSTR_LEN(str) * 4) {
+ if (newlen < len * 4) {
new_str = zend_string_truncate(new_str, newlen, 0);
}
- if (should_free) {
- zend_string_release_ex(str, 0);
- }
return new_str;
}
/* }}} */
+/* {{{ php_addcslashes
+ */
+PHPAPI zend_string *php_addcslashes(zend_string *str, char *what, size_t wlength)
+{
+ return php_addcslashes_str(ZSTR_VAL(str), ZSTR_LEN(str), what, wlength);
+}
+/* }}} */
+
/* {{{ php_addslashes */
#if ZEND_INTRIN_SSE4_2_NATIVE
@@ -3860,14 +3865,14 @@ PHPAPI zend_string *php_addcslashes(zend_string *str, int should_free, char *wha
# include "Zend/zend_bitset.h"
# include "Zend/zend_cpuinfo.h"
-ZEND_INTRIN_SSE4_2_FUNC_DECL(zend_string *php_addslashes_sse42(zend_string *str, int should_free));
-zend_string *php_addslashes_default(zend_string *str, int should_free);
+ZEND_INTRIN_SSE4_2_FUNC_DECL(zend_string *php_addslashes_sse42(zend_string *str));
+zend_string *php_addslashes_default(zend_string *str);
ZEND_INTRIN_SSE4_2_FUNC_DECL(void php_stripslashes_sse42(zend_string *str));
void php_stripslashes_default(zend_string *str);
# if ZEND_INTRIN_SSE4_2_FUNC_PROTO
-PHPAPI zend_string *php_addslashes(zend_string *str, int should_free) __attribute__((ifunc("resolve_addslashes")));
+PHPAPI zend_string *php_addslashes(zend_string *str) __attribute__((ifunc("resolve_addslashes")));
PHPAPI void php_stripslashes(zend_string *str) __attribute__((ifunc("resolve_stripslashes")));
static void *resolve_addslashes() {
@@ -3885,7 +3890,7 @@ static void *resolve_stripslashes() {
}
# else /* ZEND_INTRIN_SSE4_2_FUNC_PTR */
-PHPAPI zend_string *(*php_addslashes)(zend_string *str, int should_free) = NULL;
+PHPAPI zend_string *(*php_addslashes)(zend_string *str) = NULL;
PHPAPI void (*php_stripslashes)(zend_string *str) = NULL;
/* {{{ PHP_MINIT_FUNCTION
@@ -3907,9 +3912,9 @@ PHP_MINIT_FUNCTION(string_intrin)
#if ZEND_INTRIN_SSE4_2_NATIVE || ZEND_INTRIN_SSE4_2_RESOLVER
# if ZEND_INTRIN_SSE4_2_NATIVE
-PHPAPI zend_string *php_addslashes(zend_string *str, int should_free) /* {{{ */
+PHPAPI zend_string *php_addslashes(zend_string *str) /* {{{ */
# elif ZEND_INTRIN_SSE4_2_RESOLVER
-zend_string *php_addslashes_sse42(zend_string *str, int should_free)
+zend_string *php_addslashes_sse42(zend_string *str)
# endif
{
ZEND_SET_ALIGNED(16, static const char slashchars[16]) = "\'\"\\\0";
@@ -3953,11 +3958,7 @@ zend_string *php_addslashes_sse42(zend_string *str, int should_free)
}
}
- if (!should_free) {
- return zend_string_copy(str);
- }
-
- return str;
+ return zend_string_copy(str);
do_escape:
offset = source - (char *)ZSTR_VAL(str);
@@ -4039,9 +4040,6 @@ do_escape:
}
*target = '\0';
- if (should_free) {
- zend_string_release_ex(str, 0);
- }
if (ZSTR_LEN(new_str) - (target - ZSTR_VAL(new_str)) > 16) {
new_str = zend_string_truncate(new_str, target - ZSTR_VAL(new_str), 0);
@@ -4056,9 +4054,9 @@ do_escape:
#if !ZEND_INTRIN_SSE4_2_NATIVE
# if ZEND_INTRIN_SSE4_2_RESOLVER
-zend_string *php_addslashes_default(zend_string *str, int should_free) /* {{{ */
+zend_string *php_addslashes_default(zend_string *str) /* {{{ */
# else
-PHPAPI zend_string *php_addslashes(zend_string *str, int should_free)
+PHPAPI zend_string *php_addslashes(zend_string *str)
# endif
{
/* maximum string length, worst case situation */
@@ -4087,11 +4085,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str, int should_free)
}
}
- if (!should_free) {
- return zend_string_copy(str);
- }
-
- return str;
+ return zend_string_copy(str);
do_escape:
offset = source - (char *)ZSTR_VAL(str);
@@ -4118,9 +4112,6 @@ do_escape:
}
*target = '\0';
- if (should_free) {
- zend_string_release_ex(str, 0);
- }
if (ZSTR_LEN(new_str) - (target - ZSTR_VAL(new_str)) > 16) {
new_str = zend_string_truncate(new_str, target - ZSTR_VAL(new_str), 0);
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 1252097380..14335ba1b4 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -392,7 +392,7 @@ static void php_array_element_export(zval *zv, zend_ulong index, zend_string *ke
} else { /* string key */
zend_string *tmp_str;
- zend_string *ckey = php_addcslashes(key, 0, "'\\", 2);
+ zend_string *ckey = php_addcslashes(key, "'\\", 2);
tmp_str = php_str_to_str(ZSTR_VAL(ckey), ZSTR_LEN(ckey), "\0", 1, "' . \"\\0\" . '", 12);
buffer_append_spaces(buf, level + 1);
@@ -420,7 +420,7 @@ static void php_object_element_export(zval *zv, zend_ulong index, zend_string *k
zend_string *pname_esc;
zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len);
- pname_esc = php_addcslashes(zend_string_init(prop_name, prop_name_len, 0), 1, "'\\", 2);
+ pname_esc = php_addcslashes_str(prop_name, prop_name_len, "'\\", 2);
smart_str_appendc(buf, '\'');
smart_str_append(buf, pname_esc);
@@ -473,7 +473,7 @@ again:
}
break;
case IS_STRING:
- ztmp = php_addcslashes(Z_STR_P(struc), 0, "'\\", 2);
+ ztmp = php_addcslashes(Z_STR_P(struc), "'\\", 2);
ztmp2 = php_str_to_str(ZSTR_VAL(ztmp), ZSTR_LEN(ztmp), "\0", 1, "' . \"\\0\" . '", 12);
smart_str_appendc(buf, '\'');
diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c
index 27bf532dcc..c104b0dc52 100644
--- a/sapi/phpdbg/phpdbg_bp.c
+++ b/sapi/phpdbg/phpdbg_bp.c
@@ -136,7 +136,7 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
switch (brake->type) {
case PHPDBG_BREAK_FILE: {
- zend_string *filename = php_addcslashes(zend_string_init(((phpdbg_breakfile_t*)brake)->filename, strlen(((phpdbg_breakfile_t*)brake)->filename), 0), 1, "\\\"\n", 3);
+ zend_string *filename = php_addcslashes_str(((phpdbg_breakfile_t*)brake)->filename, strlen(((phpdbg_breakfile_t*)brake)->filename), "\\\"\n", 3);
phpdbg_asprintf(&new_str,
"%sbreak \"%s\":%lu\n", *str,
ZSTR_VAL(filename),
@@ -173,7 +173,7 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
} break;
case PHPDBG_BREAK_FILE_OPLINE: {
- zend_string *filename = php_addcslashes(zend_string_init(((phpdbg_breakopline_t*)brake)->class_name, strlen(((phpdbg_breakopline_t*)brake)->class_name), 0), 1, "\\\"\n", 3);
+ zend_string *filename = php_addcslashes_str(((phpdbg_breakopline_t*)brake)->class_name, strlen(((phpdbg_breakopline_t*)brake)->class_name), "\\\"\n", 3);
phpdbg_asprintf(&new_str,
"%sbreak \"%s\":#%llu\n", *str,
ZSTR_VAL(filename),
@@ -205,7 +205,7 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
break;
case FILE_PARAM: {
- zend_string *filename = php_addcslashes(zend_string_init(conditional->param.file.name, strlen(conditional->param.file.name), 0), 1, "\\\"\n", 3);
+ zend_string *filename = php_addcslashes_str(conditional->param.file.name, strlen(conditional->param.file.name), "\\\"\n", 3);
phpdbg_asprintf(&new_str,
"%sbreak at \"%s\":%lu if %s\n", *str,
ZSTR_VAL(filename), conditional->param.file.line,
diff --git a/sapi/phpdbg/phpdbg_utils.c b/sapi/phpdbg/phpdbg_utils.c
index 71194633ab..e10eb60d4a 100644
--- a/sapi/phpdbg/phpdbg_utils.c
+++ b/sapi/phpdbg/phpdbg_utils.c
@@ -824,7 +824,7 @@ char *phpdbg_short_zval_print(zval *zv, int maxlen) /* {{{ */
break;
case IS_STRING: {
int i;
- zend_string *str = php_addcslashes(Z_STR_P(zv), 0, "\\\"\n\t\0", 5);
+ zend_string *str = php_addcslashes(Z_STR_P(zv), "\\\"\n\t\0", 5);
for (i = 0; i < ZSTR_LEN(str); i++) {
if (ZSTR_VAL(str)[i] < 32) {
ZSTR_VAL(str)[i] = ' ';