summaryrefslogtreecommitdiff
path: root/ext/pgsql
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2007-01-11 16:45:37 +0000
committerAntony Dovgal <tony2001@php.net>2007-01-11 16:45:37 +0000
commit870bd0b99f8100146a8e6b01f59dd982b1231b62 (patch)
tree773fd32ce864d19118cf8fde14ba427577329cd7 /ext/pgsql
parent7c92982b5b2968212e0b2c76e6ebebae1318f780 (diff)
downloadphp-git-870bd0b99f8100146a8e6b01f59dd982b1231b62.tar.gz
MFH
Diffstat (limited to 'ext/pgsql')
-rw-r--r--ext/pgsql/pgsql.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c
index d055170c19..e79c5f9823 100644
--- a/ext/pgsql/pgsql.c
+++ b/ext/pgsql/pgsql.c
@@ -3492,10 +3492,11 @@ PHP_FUNCTION(pg_copy_from)
#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);
@@ -3511,10 +3512,11 @@ PHP_FUNCTION(pg_copy_from)
#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);