com php-src: fixed strndup usage in the pgsql ext: ext/pgsql/pgsql.c
| From: | Anatol Belski | Date: | Mon, 12 Aug 2013 13:44:47 +0000 |
| Subject: | com php-src: fixed strndup usage in the pgsql ext: ext/pgsql/pgsql.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-72922@lists.php.net to get a copy of this message | ||
Commit: 4134ebec8e0b614b419eeaee41b10bcfeb72d16a
Author: Anatol Belski <ab@php.net> Mon, 12 Aug 2013 15:44:47 +0200
Parents: cf39c3d63829235626fd4dcb52e1274ca561932e
Branches: PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=4134ebec8e0b614b419eeaee41b10bcfeb72d16a
Log:
fixed strndup usage in the pgsql ext
Changed paths:
M ext/pgsql/pgsql.c
Diff:
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index ded4a62..fdd58a2 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -966,8 +966,30 @@ static char *_php_pgsql_escape_identifier(const char *field, size_t field_len)
field_escaped[j] = '\0';
return field_escaped;
}
+/* }}} */
#endif
+/* {{{ _php_pgsql_strndup, no strndup should be used */
+static char *_php_pgsql_strndup(const char *s, size_t len)
+{
+ char *new;
+
+ if (NULL == s) {
+ return (char *)NULL;
+ }
+
+ new = (char *) malloc(len + 1);
+
+ if (NULL == new) {
+ return (char *)NULL;
+ }
+
+ new[len] = '\0';
+
+ return memmove(new, s, len);
+}
+/* }}} */
+
/* {{{ PHP_INI
*/
PHP_INI_BEGIN()
@@ -6007,7 +6029,7 @@ PHP_PGSQL_API int php_pgsql_convert(PGconn *pg_link, const char *table_name,
con
size_t new_len, field_len = strlen(field);
if (_php_pgsql_detect_identifier_escape(field, field_len) == SUCCESS) {
- escaped = strndup(field, field_len);
+ escaped = _php_pgsql_strndup(field, field_len);
} else {
#if HAVE_PQESCAPELITERAL
escaped = PQescapeIdentifier(pg_link, field, field_len);
@@ -6101,7 +6123,7 @@ static inline void build_tablename(smart_str *querystr, PGconn *pg_link, const
c
token = php_strtok_r(table_copy, ".", &tmp);
len = strlen(token);
if (_php_pgsql_detect_identifier_escape(token, len) == SUCCESS) {
- escaped = strndup(token, len);
+ escaped = _php_pgsql_strndup(token, len);
} else {
#if HAVE_PQESCAPELITERAL
escaped = PQescapeIdentifier(pg_link, token, len);
@@ -6115,7 +6137,7 @@ static inline void build_tablename(smart_str *querystr, PGconn *pg_link, const
c
len = strlen(tmp);
/* "schema"."table" format */
if (_php_pgsql_detect_identifier_escape(tmp, len) == SUCCESS) {
- escaped = strndup(tmp, len);
+ escaped = _php_pgsql_strndup(tmp, len);
} else {
#if HAVE_PQESCAPELITERAL
escaped = PQescapeIdentifier(pg_link, tmp, len);