summaryrefslogtreecommitdiffstats
path: root/Utilities/cmlibarchive/libarchive/archive_write.c
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-10-21 14:12:35 (GMT)
committerBrad King <brad.king@kitware.com>2015-10-21 14:18:52 (GMT)
commit932848f420a738ee07997198fead5b2c2fbf4787 (patch)
tree40404c3244ba87c5e71e8dd076f4dbcde6d8cfeb /Utilities/cmlibarchive/libarchive/archive_write.c
parente4b7d5afde91efafb59749a0a513732a089a6f0a (diff)
parent1a8c7bc2c649781d1163c1966245a45e0fb829ba (diff)
downloadCMake-932848f420a738ee07997198fead5b2c2fbf4787.zip
CMake-932848f420a738ee07997198fead5b2c2fbf4787.tar.gz
CMake-932848f420a738ee07997198fead5b2c2fbf4787.tar.bz2
Merge branch 'libarchive-upstream' into update-libarchive
Resolve conflicts by integrating changes from both sides.
Diffstat (limited to 'Utilities/cmlibarchive/libarchive/archive_write.c')
-rw-r--r--Utilities/cmlibarchive/libarchive/archive_write.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/Utilities/cmlibarchive/libarchive/archive_write.c b/Utilities/cmlibarchive/libarchive/archive_write.c
index 8997193..e3fa335 100644
--- a/Utilities/cmlibarchive/libarchive/archive_write.c
+++ b/Utilities/cmlibarchive/libarchive/archive_write.c
@@ -444,6 +444,12 @@ archive_write_client_close(struct archive_write_filter *f)
/* Clear the close handler myself not to be called again. */
f->close = NULL;
a->client_data = NULL;
+ /* Clear passphrase. */
+ if (a->passphrase != NULL) {
+ memset(a->passphrase, 0, strlen(a->passphrase));
+ free(a->passphrase);
+ a->passphrase = NULL;
+ }
return (ret);
}
@@ -592,6 +598,11 @@ _archive_write_free(struct archive *_a)
/* Release various dynamic buffers. */
free((void *)(uintptr_t)(const void *)a->nulls);
archive_string_free(&a->archive.error_string);
+ if (a->passphrase != NULL) {
+ /* A passphrase should be cleaned. */
+ memset(a->passphrase, 0, strlen(a->passphrase));
+ free(a->passphrase);
+ }
a->archive.magic = 0;
__archive_clean(&a->archive);
free(a);