[prelude-cvslog] r9818 - libprelude/trunk/src
noreply at prelude-ids.org
noreply at prelude-ids.org
Fri Aug 17 18:59:25 CEST 2007
Author: yoann
Date: 2007-08-17 18:59:21 +0200 (Fri, 17 Aug 2007)
New Revision: 9818
Modified:
libprelude/trunk/src/prelude-io.c
Log:
Protect against bad prelude-io usage.
Modified: libprelude/trunk/src/prelude-io.c
===================================================================
--- libprelude/trunk/src/prelude-io.c 2007-08-17 16:54:22 UTC (rev 9817)
+++ libprelude/trunk/src/prelude-io.c 2007-08-17 16:59:21 UTC (rev 9818)
@@ -220,6 +220,7 @@
* ferror / clearerror can be macro that might dereference fd_ptr.
*/
fd = pio->fd_ptr;
+ prelude_return_val_if_fail(fd, -1);
ret = fread(buf, count, 1, fd);
if ( ret <= 0 ) {
@@ -240,6 +241,8 @@
{
size_t ret;
+ prelude_return_val_if_fail(pio->fd_ptr, -1);
+
ret = fwrite(buf, count, 1, pio->fd_ptr);
if ( ret <= 0 )
return ret;
@@ -254,6 +257,7 @@
static int file_close(prelude_io_t *pio)
{
+ prelude_return_val_if_fail(pio->fd_ptr, -1);
return fclose(pio->fd_ptr);
}
@@ -476,7 +480,7 @@
*/
ssize_t prelude_io_read(prelude_io_t *pio, void *buf, size_t count)
{
- prelude_return_val_if_fail(pio && buf, -1);
+ prelude_return_val_if_fail(pio && pio->read && buf, -1);
return pio->read(pio, buf, count);
}
@@ -610,7 +614,7 @@
*/
ssize_t prelude_io_write(prelude_io_t *pio, const void *buf, size_t count)
{
- prelude_return_val_if_fail(pio && buf, -1);
+ prelude_return_val_if_fail(pio && pio->write && buf, -1);
return pio->write(pio, buf, count);
}
@@ -678,7 +682,7 @@
*/
int prelude_io_close(prelude_io_t *pio)
{
- prelude_return_val_if_fail(pio, -1);
+ prelude_return_val_if_fail(pio && pio->close, -1);
return pio->close(pio);
}
@@ -695,7 +699,7 @@
*/
int prelude_io_new(prelude_io_t **ret)
{
- *ret = malloc(sizeof(**ret));
+ *ret = calloc(1, sizeof(**ret));
if ( ! *ret )
return prelude_error_from_errno(errno);
More information about the Prelude-cvslog
mailing list