diff options
author | Brad King <brad.king@kitware.com> | 2015-10-21 14:12:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-10-21 14:18:52 (GMT) |
commit | 932848f420a738ee07997198fead5b2c2fbf4787 (patch) | |
tree | 40404c3244ba87c5e71e8dd076f4dbcde6d8cfeb /Utilities/cmlibarchive/libarchive/archive_write.c | |
parent | e4b7d5afde91efafb59749a0a513732a089a6f0a (diff) | |
parent | 1a8c7bc2c649781d1163c1966245a45e0fb829ba (diff) | |
download | CMake-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.c | 11 |
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); |