Fix warnings due to missing includes. Check that comment != NULL if len > 0, avoid _zip_memdup with size 0. --HG-- branch : HEAD
diff --git a/lib/zip_memdup.c b/lib/zip_memdup.c index 20a2700..4f38a01 100644 --- a/lib/zip_memdup.c +++ b/lib/zip_memdup.c
@@ -1,5 +1,5 @@ /* - $NiH: zip_memdup.c,v 1.34 2006/04/09 19:05:47 wiz Exp $ + $NiH: zip_memdup.c,v 1.1 2006/04/23 00:40:47 wiz Exp $ zip_memdup.c -- internal zip function, "strdup" with len Copyright (C) 1999, 2003, 2004, 2005, 2006 Dieter Baron and Thomas Klausner @@ -33,8 +33,8 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <sys/types.h> #include <stdlib.h> +#include <string.h> #include "zip.h" #include "zipint.h"
diff --git a/lib/zip_set_archive_comment.c b/lib/zip_set_archive_comment.c index 17fa344..86bb991 100644 --- a/lib/zip_set_archive_comment.c +++ b/lib/zip_set_archive_comment.c
@@ -1,5 +1,5 @@ /* - $NiH: zip_set_archive_comment.c,v 1.1 2006/04/23 00:40:48 wiz Exp $ + $NiH: zip_set_archive_comment.c,v 1.2 2006/04/23 15:26:30 dillo Exp $ zip_set_archive_comment.c -- set archive comment Copyright (C) 2006 Dieter Baron and Thomas Klausner @@ -35,6 +35,8 @@ +#include <stdlib.h> + #include "zip.h" #include "zipint.h" @@ -45,13 +47,18 @@ { char *tmpcom; - if (len < 0 || len > MAXCOMLEN) { + if (len < 0 || len > MAXCOMLEN + || (len > 0 && comment == NULL)) { _zip_error_set(&za->error, ZIP_ER_INVAL, 0); return -1; } - if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL) - return -1; + if (len > 0) { + if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL) + return -1; + } + else + tmpcom = NULL; free(za->ch_comment); za->ch_comment = tmpcom;
diff --git a/lib/zip_set_file_comment.c b/lib/zip_set_file_comment.c index 68e877e..28c8891 100644 --- a/lib/zip_set_file_comment.c +++ b/lib/zip_set_file_comment.c
@@ -1,5 +1,5 @@ /* - $NiH: zip_set_file_comment.c,v 1.2 2006/04/23 13:06:06 wiz Exp $ + $NiH: zip_set_file_comment.c,v 1.3 2006/04/23 15:26:30 dillo Exp $ zip_set_file_comment.c -- set comment for file in archive Copyright (C) 2006 Dieter Baron and Thomas Klausner @@ -35,6 +35,8 @@ +#include <stdlib.h> + #include "zip.h" #include "zipint.h" @@ -45,18 +47,19 @@ { char *tmpcom; - if (idx < 0 || idx >= za->nentry) { + if (idx < 0 || idx >= za->nentry + || len < 0 || len > MAXCOMLEN + || (len > 0 && comment == NULL)) { _zip_error_set(&za->error, ZIP_ER_INVAL, 0); return -1; } - if (len < 0 || len > MAXCOMLEN) { - _zip_error_set(&za->error, ZIP_ER_INVAL, 0); - return -1; + if (len > 0) { + if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL) + return -1; } - - if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL) - return -1; + else + tmpcom = NULL; free(za->entry[idx].ch_comment); za->entry[idx].ch_comment = tmpcom;