From owner-svn-src-head@freebsd.org Mon Jan 6 13:21:12 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 115761DDEFB; Mon, 6 Jan 2020 13:21:12 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47rx3W6lmDz3D8S; Mon, 6 Jan 2020 13:21:11 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CA4F8EFAA; Mon, 6 Jan 2020 13:21:11 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 006DLBbw055286; Mon, 6 Jan 2020 13:21:11 GMT (envelope-from mm@FreeBSD.org) Received: (from mm@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 006DLBFY055284; Mon, 6 Jan 2020 13:21:11 GMT (envelope-from mm@FreeBSD.org) Message-Id: <202001061321.006DLBFY055284@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mm set sender to mm@FreeBSD.org using -f From: Martin Matuska Date: Mon, 6 Jan 2020 13:21:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r356416 - head/contrib/libarchive/libarchive X-SVN-Group: head X-SVN-Commit-Author: mm X-SVN-Commit-Paths: head/contrib/libarchive/libarchive X-SVN-Commit-Revision: 356416 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2020 13:21:12 -0000 Author: mm Date: Mon Jan 6 13:21:10 2020 New Revision: 356416 URL: https://svnweb.freebsd.org/changeset/base/356416 Log: MFV r356415 Sync libarchive with vendor Relevant vendor changes: Issue #1302: Re-do fix for archive_write_client_open() X-MFC-With: r356212,r356365 MFC after: 1 week Modified: head/contrib/libarchive/libarchive/archive_cryptor.c head/contrib/libarchive/libarchive/archive_hmac.c head/contrib/libarchive/libarchive/archive_write.c Directory Properties: head/contrib/libarchive/ (props changed) Modified: head/contrib/libarchive/libarchive/archive_cryptor.c ============================================================================== --- head/contrib/libarchive/libarchive/archive_cryptor.c Mon Jan 6 13:13:58 2020 (r356415) +++ head/contrib/libarchive/libarchive/archive_cryptor.c Mon Jan 6 13:21:10 2020 (r356416) @@ -299,6 +299,7 @@ aes_ctr_release(archive_crypto_ctx *ctx) } #elif defined(HAVE_LIBMBEDCRYPTO) && defined(HAVE_MBEDTLS_AES_H) + static int aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len) { Modified: head/contrib/libarchive/libarchive/archive_hmac.c ============================================================================== --- head/contrib/libarchive/libarchive/archive_hmac.c Mon Jan 6 13:13:58 2020 (r356415) +++ head/contrib/libarchive/libarchive/archive_hmac.c Mon Jan 6 13:21:10 2020 (r356416) @@ -151,6 +151,7 @@ __hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx) } #elif defined(HAVE_LIBMBEDCRYPTO) && defined(HAVE_MBEDTLS_MD_H) + static int __hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len) { Modified: head/contrib/libarchive/libarchive/archive_write.c ============================================================================== --- head/contrib/libarchive/libarchive/archive_write.c Mon Jan 6 13:13:58 2020 (r356415) +++ head/contrib/libarchive/libarchive/archive_write.c Mon Jan 6 13:21:10 2020 (r356416) @@ -339,6 +339,7 @@ archive_write_client_open(struct archive_write_filter struct archive_none *state; void *buffer; size_t buffer_size; + int ret; f->bytes_per_block = archive_write_get_bytes_per_block(f->archive); f->bytes_in_last_block = @@ -363,7 +364,13 @@ archive_write_client_open(struct archive_write_filter if (a->client_opener == NULL) return (ARCHIVE_OK); - return (a->client_opener(f->archive, a->client_data)); + ret = a->client_opener(f->archive, a->client_data); + if (ret != ARCHIVE_OK) { + free(state->buffer); + free(state); + f->data = NULL; + } + return (ret); } static int @@ -449,30 +456,6 @@ archive_write_client_write(struct archive_write_filter } static int -archive_write_client_free(struct archive_write_filter *f) -{ - struct archive_write *a = (struct archive_write *)f->archive; - struct archive_none *state = (struct archive_none *)f->data; - - if (state != NULL) { - free(state->buffer); - free(state); - state = 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 (ARCHIVE_OK); -} - - -static int archive_write_client_close(struct archive_write_filter *f) { struct archive_write *a = (struct archive_write *)f->archive; @@ -508,7 +491,15 @@ archive_write_client_close(struct archive_write_filter } if (a->client_closer) (*a->client_closer)(&a->archive, a->client_data); - + free(state->buffer); + free(state); + a->client_data = NULL; + /* Clear passphrase. */ + if (a->passphrase != NULL) { + memset(a->passphrase, 0, strlen(a->passphrase)); + free(a->passphrase); + a->passphrase = NULL; + } /* Clear the close handler myself not to be called again. */ f->state = ARCHIVE_WRITE_FILTER_STATE_CLOSED; return (ret); @@ -539,7 +530,6 @@ archive_write_open(struct archive *_a, void *client_da client_filter->open = archive_write_client_open; client_filter->write = archive_write_client_write; client_filter->close = archive_write_client_close; - client_filter->free = archive_write_client_free; ret = __archive_write_filters_open(a); if (ret < ARCHIVE_WARN) {