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;
