]> granicus.if.org Git - php/commitdiff
Check return of fstat()
authorGustavo Lopes <glopes@nebm.ist.utl.pt>
Mon, 5 Nov 2012 16:35:46 +0000 (17:35 +0100)
committerGustavo Lopes <glopes@nebm.ist.utl.pt>
Sat, 2 Feb 2013 15:38:07 +0000 (16:38 +0100)
ext/sockets/sendrecvmsg.c

index 4436d18e8410512323fc5dcb82d9de767d7416d1..16330e0ded0eca6b19bbaa37547d5f8cbf6056dc 100644 (file)
@@ -1387,7 +1387,12 @@ static void to_zval_read_fd_array(const char *data, zval *zv, res_context *ctx)
                fd = *((int *)data + i);
 
                /* determine whether we have a socket */
-               fstat(fd, &statbuf);
+               if (fstat(fd, &statbuf) == -1) {
+                       do_to_zval_err(ctx, "error creating resource for received file "
+                                       "descriptor %d: fstat() call failed with errno %d", fd, errno);
+                       efree(elem);
+                       return;
+               }
                if (S_ISSOCK(statbuf.st_mode)) {
                        php_socket *sock = socket_import_file_descriptor(fd);
                        zend_register_resource(elem, sock, php_sockets_le_socket());