]> granicus.if.org Git - php/commitdiff
MF51: fix #36808 (syslog ident becomes garbage between requests)
authorAntony Dovgal <tony2001@php.net>
Mon, 20 Mar 2006 23:07:31 +0000 (23:07 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 20 Mar 2006 23:07:31 +0000 (23:07 +0000)
ext/standard/basic_functions.c
ext/standard/php_ext_syslog.h
ext/standard/syslog.c

index 9c28d6c15813a14ebc5024777c2e9df5a7f239d2..6791c946f6e5a74a993de83c03fe78edf79c4881 100644 (file)
@@ -1113,6 +1113,9 @@ PHP_MSHUTDOWN_FUNCTION(basic)
        PHP_MSHUTDOWN(url_scanner_ex)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
        PHP_MSHUTDOWN(file)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
        PHP_MSHUTDOWN(standard_filters)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#ifdef HAVE_SYSLOG_H
+       PHP_MSHUTDOWN(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
+#endif
 #if defined(HAVE_LOCALECONV) && defined(ZTS)
        PHP_MSHUTDOWN(localeconv)(SHUTDOWN_FUNC_ARGS_PASSTHRU);
 #endif
index 86b9704a4d5090a40e109b07fdbf5aa0b2b5af6e..25b0e8424db11e9e83b229fda3c226c36872915c 100644 (file)
@@ -28,6 +28,7 @@
 PHP_MINIT_FUNCTION(syslog);
 PHP_RINIT_FUNCTION(syslog);
 PHP_RSHUTDOWN_FUNCTION(syslog);
+PHP_MSHUTDOWN_FUNCTION(syslog);
 
 PHP_FUNCTION(openlog);
 PHP_FUNCTION(syslog);
index bde09e588a23bad5958368a7e18d4c300d3b4289..b3057039e83cacfddf4ee0c2382d3847d75835b9 100644 (file)
@@ -97,6 +97,7 @@ PHP_MINIT_FUNCTION(syslog)
        /* AIX doesn't have LOG_PERROR */
        REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/
 #endif
+       BG(syslog_device)=NULL;
 
        return SUCCESS;
 }
@@ -109,22 +110,26 @@ PHP_RINIT_FUNCTION(syslog)
        } else {
                BG(syslog_started)=0;
        }
-       BG(syslog_device)=NULL;
        return SUCCESS;
 }
 
 
 PHP_RSHUTDOWN_FUNCTION(syslog)
 {
-       if (BG(syslog_device)) {
-               efree(BG(syslog_device));
-       }
 #ifdef PHP_WIN32
        closelog();
 #endif
        return SUCCESS;
 }
 
+PHP_MSHUTDOWN_FUNCTION(syslog)
+{
+       if (BG(syslog_device)) {
+               free(BG(syslog_device));
+       }
+       return SUCCESS;
+}
+
 /* {{{ start_syslog
  */
 static void start_syslog(TSRMLS_D)
@@ -224,9 +229,9 @@ PHP_FUNCTION(openlog)
                return;
        }
        if (BG(syslog_device)) {
-               efree(BG(syslog_device));
+               free(BG(syslog_device));
        }
-       BG(syslog_device) = estrndup(ident, ident_len);
+       BG(syslog_device) = zend_strndup(ident, ident_len);
        openlog(BG(syslog_device), option, facility);
        RETURN_TRUE;
 }
@@ -242,7 +247,7 @@ PHP_FUNCTION(closelog)
 
        closelog();
        if (BG(syslog_device)) {
-               efree(BG(syslog_device));
+               free(BG(syslog_device));
                BG(syslog_device)=NULL;
        }
        RETURN_TRUE;