summaryrefslogtreecommitdiff
path: root/ext/dba/dba.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dba/dba.c')
-rw-r--r--ext/dba/dba.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ext/dba/dba.c b/ext/dba/dba.c
index 23679c065c..c932e8affe 100644
--- a/ext/dba/dba.c
+++ b/ext/dba/dba.c
@@ -285,6 +285,8 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
{
DBA_ID_PARS;
zval **val, **key;
+ char *v;
+ int len;
if(ac != 3 || zend_get_parameters_ex(ac, &key, &val, &id) != SUCCESS) {
WRONG_PARAM_COUNT;
@@ -295,8 +297,19 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
DBA_WRITE_CHECK;
- if(info->hnd->update(info, VALLEN(key), VALLEN(val), mode TSRMLS_CC) == SUCCESS)
- RETURN_TRUE;
+ if (PG(magic_quotes_runtime)) {
+ len = Z_STRLEN_PP(val);
+ v = estrndup(Z_STRVAL_PP(val), len);
+ php_stripslashes(v, &len TSRMLS_CC);
+ if(info->hnd->update(info, VALLEN(key), v, len, mode TSRMLS_CC) == SUCCESS) {
+ efree(v);
+ RETURN_TRUE;
+ }
+ efree(v);
+ } else {
+ if(info->hnd->update(info, VALLEN(key), VALLEN(val), mode TSRMLS_CC) == SUCCESS)
+ RETURN_TRUE;
+ }
RETURN_FALSE;
}
/* }}} */