]> granicus.if.org Git - php/commitdiff
MFH: Fixed fd leak (the origin commit can not be cherry-picked)
authorXinchen Hui <laruence@gmail.com>
Tue, 28 Jun 2016 03:32:41 +0000 (11:32 +0800)
committerXinchen Hui <laruence@gmail.com>
Tue, 28 Jun 2016 03:36:27 +0000 (11:36 +0800)
ext/opcache/zend_file_cache.c
main/fastcgi.c
sapi/cli/ps_title.c
sapi/phpdbg/phpdbg.c

index 31874124239224b3d98c2c836412de65014992d6..b8e9b1800b8cbf02168590ecc89760a5cfd932e8 100644 (file)
@@ -773,6 +773,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
        if (writev(fd, vec, 3) != (ssize_t)(sizeof(info) + script->size + info.str_size)) {
                zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s'\n", filename);
                zend_string_release((zend_string*)ZCG(mem));
+               close(fd);
                efree(mem);
                unlink(filename);
                efree(filename);
@@ -786,6 +787,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
                ) {
                zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s'\n", filename);
                zend_string_release((zend_string*)ZCG(mem));
+               close(fd);
                efree(mem);
                unlink(filename);
                efree(filename);
index 8fc7d6a968af479bb169b88afa09054a8f89792b..d2e1225246b347fa4405af64b58a4495d9733f6a 100644 (file)
@@ -757,7 +757,7 @@ int fcgi_listen(const char *path, int backlog)
 #endif
            bind(listen_socket, (struct sockaddr *) &sa, sock_len) < 0 ||
            listen(listen_socket, backlog) < 0) {
-
+               close(listen_socket);
                fcgi_log(FCGI_ERROR, "Cannot bind/listen socket - [%d] %s.\n",errno, strerror(errno));
                return -1;
        }
index 2d95e494aa8473e81ebf4abc23a6f7a7716a9b87..15ab0445d8cf9ed496aef8f5792cc427e0f5a82a 100644 (file)
@@ -224,8 +224,10 @@ char** save_ps_args(int argc, char** argv)
         for (i = 0; i < argc; i++)
         {
             new_argv[i] = strdup(argv[i]);
-            if (!new_argv[i])
+            if (!new_argv[i]) {
+                               free(new_argv);
                 goto clobber_error;
+                       }
         }
         new_argv[argc] = NULL;
 
index 68a164c49920e29e072e959e4a96473ed0142d24..9b7993ddf04e7182303f9865f643d9f5de49585c 100644 (file)
@@ -1439,6 +1439,7 @@ phpdbg_main:
                        case 'i': { /* set init file */
                                if (init_file) {
                                        free(init_file);
+                                       init_file = NULL;
                                }
 
                                init_file_len = strlen(php_optarg);
@@ -1792,7 +1793,9 @@ phpdbg_main:
                /* initialize from file */
                PHPDBG_G(flags) |= PHPDBG_IS_INITIALIZING;
                zend_try {
-                       phpdbg_init(init_file, init_file_len, init_file_default);
+                       if (init_file) {
+                               phpdbg_init(init_file, init_file_len, init_file_default);
+                       }
                        if (bp_tmp) {
                                PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT;
                                phpdbg_string_init(bp_tmp);