From nobody Sat Jan 11 02:48:57 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 4YVNJT5vXGz5l4dN; Sat, 11 Jan 2025 02:48:57 +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 4YVNJT3tXpz4Hvf; Sat, 11 Jan 2025 02:48:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736563737; 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=gj7LkWGR/B9A6t0ggLHfeC/OB3x7UWw/k1FgLOxIKVs=; b=vvg/WneFeSODTgykOcvo5XVmzuW9sLd7sZ3Qc3mxupSETKO8v2zr1KGDzCiJkfF0g0yXck InLdTVClM5MrpFWY2/o5awY4EJKrxdV7+e3kNsnRC1RW4YXItBLfxBfWx60ZV/M1Cdef1w 6MDG3h43rH5y91OmDgwDwzDurtD3v3xR/NtZyDfHSpBHy88n3hYrH3xi71EwwQSqAx2V8/ GsT51OuOS4Rm8wf56BpK2ZRjELASPQIYS18QQ/RBo+s54IPN+LFqOxghaFCm4ngEVYuv9/ FfsWgATyF5JmruI1hA9RKSzP9pxd9ZAgBpxNjhLyAzkl54voHjcSQWga3miL4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736563737; 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=gj7LkWGR/B9A6t0ggLHfeC/OB3x7UWw/k1FgLOxIKVs=; b=tozInuGvQ2YhrMQXDCojrA8WdpxknVGYm3wvbdx+6umiY+H4e0XWTgeQ3sQ5RFUoYozfdy FGsllVrHmU6E59wWGJL+6WsB8uRSVXd6YbrNclDQDj52rvuUcSovYywhXYYzw2QNbMyS6g Vtmj8Zy/XHu3VTIEIFxmYlAUgx/fX/fdGXk2dkQiIfH9auHVcYn6yXCPSo6+T1/HjTcf1C C7kntJhiMNn9p/Y8jp2V5qgCCVhTeiXvYMOix2fZljR0ucgvZpERfftG8Kf28kENFpypBM zXYLup21YvW4YN4Of65N7tZlj8u8vY9FiWebrQcbQYXPh5w+IdoQzSuz6KCvcw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1736563737; a=rsa-sha256; cv=none; b=UxfKKzSHDCzQpTvHYx9A25okrO6zYQrgtzxo46r0JzUPwErXBh+UFcwD2+4NUoMa7qOv2X I+DwY1gff6lhwPTGe3rp/MUPXK193AX5Z4wi8ZG7hb9Nwc2X8NyzAaFEycbjoM797CR09S l2tBaQAKg41bxFP3KOwie82qUVPspUr0XUtnpBkOBvRchNkBFyauB9POc3Lfc3cs5+OcmM 0fGfZX09lsAWq2dYb93hjCIX1rEwbh9ic4AG+xCTM7XSB+raCvQ3ct7pEnpkNsWtiKBBrs Nfp8yFBIe8jzgoRDhMdSIncDw4nB9EM+zmwT664gxyPC/MugqYpLUs1XPVuCVw== 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 4YVNJT3Tv4zgBy; Sat, 11 Jan 2025 02:48:57 +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 50B2mvk6066203; Sat, 11 Jan 2025 02:48:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50B2mviI066200; Sat, 11 Jan 2025 02:48:57 GMT (envelope-from git) Date: Sat, 11 Jan 2025 02:48:57 GMT Message-Id: <202501110248.50B2mviI066200@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: 836f1da80eb3 - stable/14 - 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/14 X-Git-Reftype: branch X-Git-Commit: 836f1da80eb3d3c502d42a18411ba2e083e65e26 Auto-Submitted: auto-generated The branch stable/14 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=836f1da80eb3d3c502d42a18411ba2e083e65e26 commit 836f1da80eb3d3c502d42a18411ba2e083e65e26 Author: Kyle Evans AuthorDate: 2025-01-01 21:10:28 +0000 Commit: Kyle Evans CommitDate: 2025-01-11 02:48:25 +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 4cadff155516..9b7938c97211 100644 --- a/usr.sbin/pkg/pkg.c +++ b/usr.sbin/pkg/pkg.c @@ -386,32 +386,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 */