From dcb8de96ab47d1932ce313adbac5a673210b1c91 Mon Sep 17 00:00:00 2001 From: kientzle Date: Wed, 21 Sep 2005 04:25:06 +0000 Subject: Add a lot of error checks, based on the patches provided by Dan Lukes. Also fixes a memory leak reported by Andrew Turner. PR: bin/83476 Thanks to: Dan Lukes, Andrew Turner --- lib/libarchive/archive_read_open_fd.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/libarchive/archive_read_open_fd.c') diff --git a/lib/libarchive/archive_read_open_fd.c b/lib/libarchive/archive_read_open_fd.c index e3b2527..c5d1195 100644 --- a/lib/libarchive/archive_read_open_fd.c +++ b/lib/libarchive/archive_read_open_fd.c @@ -58,6 +58,11 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size) } mine->block_size = block_size; mine->buffer = malloc(mine->block_size); + if (mine->buffer == NULL) { + archive_set_error(a, ENOMEM, "No memory"); + free(mine); + return (ARCHIVE_FATAL); + } mine->fd = fd; return (archive_read_open(a, mine, file_open, file_read, file_close)); } @@ -94,6 +99,7 @@ file_close(struct archive *a, void *client_data) struct read_fd_data *mine = client_data; (void)a; /* UNUSED */ + free(mine->buffer); free(mine); return (ARCHIVE_OK); } -- cgit v1.1