tony2001 Thu Jan 11 16:45:28 2007 UTC
Modified files:
/php-src/ext/pgsql pgsql.c
Log:
make sure the string is non-empty and use strlcpy() & strlcat()
http://cvs.php.net/viewvc.cgi/php-src/ext/pgsql/pgsql.c?r1=1.364&r2=1.365&diff_format=u
Index: php-src/ext/pgsql/pgsql.c
diff -u php-src/ext/pgsql/pgsql.c:1.364 php-src/ext/pgsql/pgsql.c:1.365
--- php-src/ext/pgsql/pgsql.c:1.364 Mon Jan 1 09:29:28 2007
+++ php-src/ext/pgsql/pgsql.c Thu Jan 11 16:45:27 2007
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql.c,v 1.364 2007/01/01 09:29:28 sebastian Exp $ */
+/* $Id: pgsql.c,v 1.365 2007/01/11 16:45:27 tony2001 Exp $ */
#include <stdlib.h>
@@ -3469,10 +3469,11 @@
#if HAVE_PQPUTCOPYDATA
while
(zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), (void **) &tmp, &pos) ==
SUCCESS) {
convert_to_string_ex(tmp);
- query = (char
*)emalloc(Z_STRLEN_PP(tmp) +2);
- strcpy(query, Z_STRVAL_PP(tmp));
- if(*(query+Z_STRLEN_PP(tmp)-1) != '\n')
- strcat(query, "\n");
+ query = (char
*)emalloc(Z_STRLEN_PP(tmp) + 2);
+ strlcpy(query, Z_STRVAL_PP(tmp),
Z_STRLEN_PP(tmp) + 2);
+ if(Z_STRLEN_PP(tmp) > 0 && *(query +
Z_STRLEN_PP(tmp) - 1) != '\n') {
+ strlcat(query, "\n",
Z_STRLEN_PP(tmp) + 2);
+ }
if (PQputCopyData(pgsql, query,
strlen(query)) != 1) {
efree(query);
PHP_PQ_ERROR("copy failed: %s",
pgsql);
@@ -3488,10 +3489,11 @@
#else
while
(zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), (void **) &tmp, &pos) ==
SUCCESS) {
convert_to_string_ex(tmp);
- query = (char
*)emalloc(Z_STRLEN_PP(tmp) +2);
- strcpy(query, Z_STRVAL_PP(tmp));
- if(*(query+Z_STRLEN_PP(tmp)-1) != '\n')
- strcat(query, "\n");
+ query = (char
*)emalloc(Z_STRLEN_PP(tmp) + 2);
+ strlcpy(query, Z_STRVAL_PP(tmp),
Z_STRLEN_PP(tmp) + 2);
+ if(Z_STRLEN_PP(tmp) > 0 && *(query +
Z_STRLEN_PP(tmp) - 1) != '\n') {
+ strlcat(query, "\n",
Z_STRLEN_PP(tmp) + 2);
+ }
if (PQputline(pgsql, query)==EOF) {
efree(query);
PHP_PQ_ERROR("copy failed: %s",
pgsql);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php