From nobody Sat Jan 11 02:49:02 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YVNJb3sQMz5l4YL; Sat, 11 Jan 2025 02:49:03 +0000 (UTC) (envelope-from git@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YVNJZ5D3cz4Hl2; Sat, 11 Jan 2025 02:49:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736563742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+4AbTnQKVRvST/MxvFmnFYMYc6gWnNbR46o0/kgfslI=; b=QaEWtsYKEt2OPt1zIxL6fRmqVXxgYXcpnNxjfucFlTsknNUOdhCe8r7uGQxBYpQzfCObvP HlTCUtG6vMQTSwqyfs66rV0RuKJT5VHw1a3m1N1TMeNX7lC2MfCXRglt3xRZSAK+/buJ2/ tHMXFdu8sav2d7gLHqmpH+Hne7LpOMKAJ6fmOjtWJ4nbpdtRLZbiTv1D+UU2qUgCGtsJSG 0m0q7SembMq+THMlhmpcf5AT8EjHRnq6XPVTsTN/29szqSikYt0G5zFdzIL3FsYCJLLqpE 1vLzoNg5QvgykYXJGXSM/CihTawj8/u7OpDmaKY1GogQC9zbO/Pc6+O90X+UsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736563742; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+4AbTnQKVRvST/MxvFmnFYMYc6gWnNbR46o0/kgfslI=; b=VY/HEKCVOHo1Hrh4NWtUlthbgi5SN2m8GEWUPwfeEPPedBNLsACMCIaNRTJ7ITPUcWmDUi SYSQWhOqhCw7iYwbQQKLTph6utjG6Uz+9KYOTGZl2BYI4zvJKk2UbsFNm3BI2EpteFF1Qn pj/vCU0IbpcZVU+mhOaL6qmmWdxyF/yauRAIACsyQ9SltuF3sRU9vP2z2W5ZtPOqDuFKIN CurN0somx8pKAF91fdXt14gXZmHgCnyIifJoc0R8XbQrvkSd4hPFR02PFok1IgCnZClZ/K iO6IVY/wRItOqCdXcfQvkcgPJoObBV8fpbCKTn0uaUr3oEBqSHT556otbzqzfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1736563742; a=rsa-sha256; cv=none; b=X5u3AQO+Vc4of8hAOrn9QIZ/v0p3I+9ak1SyRJgozxi1EQ1u8rXnLPEPSyvtPS0s6DZw+O EPyNwWncqe0ft+MmLfwYU5krWduoAeLY/+Ft7GtAp2I8aNVmfSo5aUSMGb7OqC6EMC+M8y kfNj2M+hX23epDX8YlVODXO5tRa0OQTH+kIjTsHUQTVhwDtWQfHKLN6hqDE1l5nd3AIYpI CnwoQwjRi2IBUZKdrSF3zJyIgDVhgRSLSj9NXmebI3XKOIydYd+oxMy9xadxaaMoE4Evfs 38brf6wf/8f/jJYarjm9ToGi8XddTIUP6R//HdwDWCE45dcUCCNNcuK6IodWcw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YVNJZ4mRnzfy3; Sat, 11 Jan 2025 02:49:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50B2n2Tp066568; Sat, 11 Jan 2025 02:49:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50B2n2lo066565; Sat, 11 Jan 2025 02:49:02 GMT (envelope-from git) Date: Sat, 11 Jan 2025 02:49:02 GMT Message-Id: <202501110249.50B2n2lo066565@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9d25078d8121 - stable/13 - pkg: refactor out a pkg_read_fd() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 9d25078d81211b3a91021d12a19bca9231f0821d Auto-Submitted: auto-generated The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9d25078d81211b3a91021d12a19bca9231f0821d commit 9d25078d81211b3a91021d12a19bca9231f0821d Author: Kyle Evans AuthorDate: 2025-01-01 21:10:28 +0000 Commit: Kyle Evans CommitDate: 2025-01-11 02:48:30 +0000 pkg: refactor out a pkg_read_fd() We already have to do this for reading the pubkey, just pull it out for other uses. The ECC signer will use this to verify the bootstrap if the PUBKEY mechanism is used. Reviewed by: bapt, emaste (cherry picked from commit 2ecfc040a09f8c42f67bbfdcc4bd02ef84dac8b7) --- usr.sbin/pkg/pkg.c | 40 +++++++++++++++++++++++++++------------- usr.sbin/pkg/pkg.h | 2 ++ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/usr.sbin/pkg/pkg.c b/usr.sbin/pkg/pkg.c index 3e5e52751e0d..56bced7b9c5f 100644 --- a/usr.sbin/pkg/pkg.c +++ b/usr.sbin/pkg/pkg.c @@ -384,32 +384,46 @@ load_fingerprints(const char *path, int *count) return (fingerprints); } +char * +pkg_read_fd(int fd, size_t *osz) +{ + char *obuf; + char buf[4096]; + FILE *fp; + ssize_t r; + + obuf = NULL; + *osz = 0; + fp = open_memstream(&obuf, osz); + if (fp == NULL) + err(EXIT_FAILURE, "open_memstream()"); + + while ((r = read(fd, buf, sizeof(buf))) >0) { + fwrite(buf, 1, r, fp); + } + + if (ferror(fp)) + errx(EXIT_FAILURE, "reading file"); + + fclose(fp); + + return (obuf); +} + static struct pubkey * read_pubkey(int fd) { struct pubkey *pk; char *sigb; size_t sigsz; - FILE *sig; - char buf[4096]; - int r; if (lseek(fd, 0, 0) == -1) { warn("lseek"); return (NULL); } - sigsz = 0; - sigb = NULL; - sig = open_memstream(&sigb, &sigsz); - if (sig == NULL) - err(EXIT_FAILURE, "open_memstream()"); - - while ((r = read(fd, buf, sizeof(buf))) >0) { - fwrite(buf, 1, r, sig); - } + sigb = pkg_read_fd(fd, &sigsz); - fclose(sig); pk = calloc(1, sizeof(struct pubkey)); pk->siglen = sigsz; pk->sig = calloc(1, pk->siglen); diff --git a/usr.sbin/pkg/pkg.h b/usr.sbin/pkg/pkg.h index 01f69f5a825b..faa2be6c8376 100644 --- a/usr.sbin/pkg/pkg.h +++ b/usr.sbin/pkg/pkg.h @@ -47,4 +47,6 @@ struct pubkey { bool rsa_verify_cert(int, const char *, const unsigned char *, int, unsigned char *, int); +char *pkg_read_fd(int fd, size_t *osz); + #endif /* _PKG_H */