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);