iliaa Wed Nov 17 18:43:31 2004 EDT
Modified files: (Branch: PHP_4_3)
/php-src/ext/dio dio.c
Log:
MFH: Gracefully handle allocation failure.
http://cvs.php.net/diff.php/php-src/ext/dio/dio.c?r1=1.21.2.10&r2=1.21.2.11&ty=u
Index: php-src/ext/dio/dio.c
diff -u php-src/ext/dio/dio.c:1.21.2.10 php-src/ext/dio/dio.c:1.21.2.11
--- php-src/ext/dio/dio.c:1.21.2.10 Thu Sep 2 23:36:21 2004
+++ php-src/ext/dio/dio.c Wed Nov 17 18:43:31 2004
@@ -79,8 +79,10 @@
static void _dio_close_fd(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
php_fd_t *f = (php_fd_t *) rsrc->ptr;
- close(f->fd);
- free(f);
+ if (f) {
+ close(f->fd);
+ free(f);
+ }
}
#define RDIOC(c) REGISTER_LONG_CONSTANT(#c, c, CONST_CS | CONST_PERSISTENT)
@@ -142,10 +144,13 @@
php_info_print_table_end();
}
-static void new_php_fd(php_fd_t **f, int fd)
+static int new_php_fd(php_fd_t **f, int fd)
{
- *f = malloc(sizeof(php_fd_t));
+ if (!(*f = malloc(sizeof(php_fd_t)))) {
+ return 0;
+ }
(*f)->fd = fd;
+ return 1;
}
/* {{{ proto resource dio_open(string filename, int flags[, int mode])
@@ -179,7 +184,10 @@
RETURN_FALSE;
}
- new_php_fd(&f, fd);
+
+ if (!new_php_fd(&f, fd)) {
+ RETURN_FALSE;
+ }
ZEND_REGISTER_RESOURCE(return_value, f, le_fd);
}
/* }}} */
@@ -421,7 +429,9 @@
RETURN_FALSE;
}
- new_php_fd(&new_f, fcntl(f->fd, cmd, Z_LVAL_P(arg)));
+ if (!new_php_fd(&new_f, fcntl(f->fd, cmd, Z_LVAL_P(arg)))) {
+ RETURN_FALSE;
+ }
ZEND_REGISTER_RESOURCE(return_value, new_f, le_fd);
break;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php