This patch was fed back to the upstream community: http://code.google.com/p/libarchive/issues/detail?id=288 Given the response "This issue has been already fixed in master branch." it should no longer be needed with the next release. --- libarchive/libarchive/archive_string.c.orig Mon Mar 26 19:49:00 2012 +++ libarchive/libarchive/archive_string.c Tue Nov 27 18:10:35 2012 @@ -1120,8 +1120,8 @@ } sc->to_charset = strdup(tc); if (sc->to_charset == NULL) { - free(sc); free(sc->from_charset); + free(sc); return (NULL); } archive_string_init(&sc->utftmp);