]> granicus.if.org Git - php/commitdiff
Ensure that OnUpdateLongGEZero is greater or equal to 0.
authorIlia Alshanetsky <iliaa@php.net>
Mon, 25 Dec 2006 23:55:59 +0000 (23:55 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 25 Dec 2006 23:55:59 +0000 (23:55 +0000)
Added a update wrapper for ensuring >0 values

Zend/zend_ini.c
Zend/zend_ini.h
main/main.c

index c4951acee90b968f467ba9593e88816f426739ab..257c0152a2b1752dd8ae836d2e368de7e60008e3 100644 (file)
@@ -530,6 +530,28 @@ ZEND_API ZEND_INI_MH(OnUpdateLong)
        return SUCCESS;
 }
 
+ZEND_API ZEND_INI_MH(OnUpdateLongGEZero)
+{
+       long *p, tmp;
+#ifndef ZTS
+       char *base = (char *) mh_arg2;
+#else
+       char *base;
+
+       base = (char *) ts_resource(*((int *) mh_arg2));
+#endif
+
+       tmp = zend_atoi(new_value, new_value_length);
+       if (tmp < 0) {
+               return FAILURE;
+       }
+
+       p = (long *) (base+(size_t) mh_arg1);
+       *p = tmp;
+
+       return SUCCESS;
+}
+
 
 ZEND_API ZEND_INI_MH(OnUpdateReal)
 {
index d0f1321b94512c66ab421b4c5c3d903175ac4e8f..e780ad54968ef00e5c4763d6aecd04b472c1962e 100644 (file)
@@ -175,6 +175,7 @@ END_EXTERN_C()
 BEGIN_EXTERN_C()
 ZEND_API ZEND_INI_MH(OnUpdateBool);
 ZEND_API ZEND_INI_MH(OnUpdateLong);
+ZEND_API ZEND_INI_MH(OnUpdateLongGEZero);
 ZEND_API ZEND_INI_MH(OnUpdateReal);
 ZEND_API ZEND_INI_MH(OnUpdateString);
 ZEND_API ZEND_INI_MH(OnUpdateStringUnempty);
index 8e6cd90fe85767bb0228ffcbe803a8ded4f5789d..aca1568958c25241da41559f247f7de8d6cc9832 100644 (file)
@@ -284,7 +284,7 @@ PHP_INI_BEGIN()
        STD_PHP_INI_BOOLEAN("y2k_compliance",           "1",            PHP_INI_ALL,            OnUpdateBool,                   y2k_compliance,                 php_core_globals,       core_globals)
 
        STD_PHP_INI_ENTRY("unserialize_callback_func",  NULL,   PHP_INI_ALL,            OnUpdateString,                 unserialize_callback_func,      php_core_globals,       core_globals)
-       STD_PHP_INI_ENTRY("serialize_precision",        "100",  PHP_INI_ALL,            OnUpdateLong,                   serialize_precision,    php_core_globals,       core_globals)
+       STD_PHP_INI_ENTRY("serialize_precision",        "100",  PHP_INI_ALL,            OnUpdateLongGEZero,                     serialize_precision,    php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("arg_separator.output",       "&",            PHP_INI_ALL,            OnUpdateStringUnempty,  arg_separator.output,   php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("arg_separator.input",        "&",            PHP_INI_SYSTEM|PHP_INI_PERDIR,  OnUpdateStringUnempty,  arg_separator.input,    php_core_globals,       core_globals)