Fix extra field modification functions (clone extra fields before modifying).
Check return value of _zip_dirent_clone().
diff --git a/lib/zip_file_set_comment.c b/lib/zip_file_set_comment.c
index 16955ac..143d03a 100644
--- a/lib/zip_file_set_comment.c
+++ b/lib/zip_file_set_comment.c
@@ -85,10 +85,14 @@
 	changed = (cstr != NULL);
 	
     if (changed) {
-	if (e->changes == NULL)
-	    e->changes = _zip_dirent_clone(e->orig);
-	e->changes->comment = cstr;
-	e->changes->changed |= ZIP_DIRENT_COMMENT;
+        if (e->changes == NULL) {
+            if ((e->changes=_zip_dirent_clone(e->orig)) == NULL) {
+                _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+                return -1;
+            }
+        }
+        e->changes->comment = cstr;
+        e->changes->changed |= ZIP_DIRENT_COMMENT;
     }
     else {
 	_zip_string_free(cstr);