]> granicus.if.org Git - php/commitdiff
MFH
authorAntony Dovgal <tony2001@php.net>
Thu, 18 Jan 2007 15:55:09 +0000 (15:55 +0000)
committerAntony Dovgal <tony2001@php.net>
Thu, 18 Jan 2007 15:55:09 +0000 (15:55 +0000)
ext/interbase/interbase.c
ext/pdo_firebird/firebird_driver.c

index b211dabe5633e33a082589fcbf65b6e25349ae95..63d09e0eb3b91e38b5824faadc72d1a27d2a6293 100644 (file)
@@ -595,19 +595,19 @@ int _php_ibase_attach_db(char **args, int *len, long *largs, isc_db_handle *db T
 
        for (i = 0; i < sizeof(dpb_args); ++i) {
                if (dpb_args[i] && args[i] && len[i] && buf_len > 0) {
-                       dpb_len += snprintf(dpb, buf_len, "%c%c%s", dpb_args[i],(unsigned char)len[i],args[i]);
+                       dpb_len = snprintf(dpb, buf_len, "%c%c%s", dpb_args[i],(unsigned char)len[i],args[i]);
                        dpb += dpb_len;
                        buf_len -= dpb_len;
                }
        }
        if (largs[BUF] && buf_len > 0) {
-               dpb_len += snprintf(dpb, buf_len, "%c\2%c%c", isc_dpb_num_buffers, 
+               dpb_len = snprintf(dpb, buf_len, "%c\2%c%c", isc_dpb_num_buffers, 
                        (char)(largs[BUF] >> 8), (char)(largs[BUF] & 0xff));
                dpb += dpb_len;
                buf_len -= dpb_len;
        }
        if (largs[SYNC] && buf_len > 0) {
-               dpb_len += sprintf(dpb, buf_len, "%c\1%c", isc_dpb_force_write, largs[SYNC] == isc_spb_prp_wm_sync ? 1 : 0);
+               dpb_len = sprintf(dpb, buf_len, "%c\1%c", isc_dpb_force_write, largs[SYNC] == isc_spb_prp_wm_sync ? 1 : 0);
                dpb += dpb_len;
                buf_len -= dpb_len;
        }
index 803192545d01b616999c321f8c6aafb98ce5cf9f..7e65a880a7a5d209078779970e7d7a7e5a0e7953 100644 (file)
@@ -602,6 +602,8 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRM
                { "role", NULL, 0 }
        };
        int i, ret = 0;
+       short buf_len = 256, dpb_len;
+
        pdo_firebird_db_handle *H = dbh->driver_data = pecalloc(1,sizeof(*H),dbh->is_persistent);
 
        php_pdo_parse_data_source(dbh->data_source, dbh->data_source_len, vars, 3);
@@ -616,9 +618,11 @@ static int pdo_firebird_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRM
                
                /* loop through all the provided arguments and set dpb fields accordingly */
                for (i = 0; i < sizeof(dpb_flags); ++i) {
-                       if (dpb_values[i]) {
-                               dpb += sprintf(dpb, "%c%c%s", dpb_flags[i], (unsigned char)strlen(dpb_values[i]),
+                       if (dpb_values[i] && buf_len > 0) {
+                               dpb_len = snprintf(dpb, buf_len, "%c%c%s", dpb_flags[i], (unsigned char)strlen(dpb_values[i]),
                                        dpb_values[i]);
+                               dpb += dpb_len;
+                               buf_len -= dpb_len;
                        }
                }