]> granicus.if.org Git - php/commitdiff
fix more resource leaks
authorRemi Collet <remi@php.net>
Thu, 2 May 2013 11:47:24 +0000 (13:47 +0200)
committerRemi Collet <remi@php.net>
Thu, 2 May 2013 11:47:24 +0000 (13:47 +0200)
sapi/fpm/fpm/fpm_sockets.c
sapi/fpm/fpm/fpm_stdio.c

index f56b9cfbd1493c453322acd03f7ccf885ca35443..df94967db127ebaa1560563d7da53eb63444f885 100644 (file)
@@ -167,7 +167,7 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
 {
        int flags = 1;
        int sock;
-       mode_t saved_umask;
+       mode_t saved_umask = 0;
 
        sock = socket(sa->sa_family, SOCK_STREAM, 0);
 
@@ -181,6 +181,7 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
        if (wp->listen_address_domain == FPM_AF_UNIX) {
                if (fpm_socket_unix_test_connect((struct sockaddr_un *)sa, socklen) == 0) {
                        zlog(ZLOG_ERROR, "An another FPM instance seems to already listen on %s", ((struct sockaddr_un *) sa)->sun_path);
+                       close(sock);
                        return -1;
                }
                unlink( ((struct sockaddr_un *) sa)->sun_path);
@@ -192,6 +193,7 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
                if (wp->listen_address_domain == FPM_AF_UNIX) {
                        umask(saved_umask);
                }
+               close(sock);
                return -1;
        }
 
@@ -203,6 +205,7 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
                if (wp->socket_uid != -1 || wp->socket_gid != -1) {
                        if (0 > chown(path, wp->socket_uid, wp->socket_gid)) {
                                zlog(ZLOG_SYSERROR, "failed to chown() the socket '%s'", wp->config->listen_address);
+                               close(sock);
                                return -1;
                        }
                }
@@ -210,6 +213,7 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
 
        if (0 > listen(sock, wp->config->listen_backlog)) {
                zlog(ZLOG_SYSERROR, "failed to listen to address '%s'", wp->config->listen_address);
+               close(sock);
                return -1;
        }
 
index 6a587d00ee790871635bb7731560f2a83b873c1a..ebe43a278d38f77b8f321b4ae748722c62e6d435 100644 (file)
@@ -34,6 +34,7 @@ int fpm_stdio_init_main() /* {{{ */
 
        if (0 > dup2(fd, STDIN_FILENO) || 0 > dup2(fd, STDOUT_FILENO)) {
                zlog(ZLOG_SYSERROR, "failed to init stdio: dup2()");
+               close(fd);
                return -1;
        }
        close(fd);