mirror of
https://github.com/opnsense/src.git
synced 2026-06-07 07:42:26 -04:00
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 Differential Revision: https://reviews.freebsd.org/D48107
This commit is contained in:
parent
5862580ded
commit
2ecfc040a0
2 changed files with 29 additions and 13 deletions
|
|
@ -451,32 +451,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()");
|
||||
sigb = pkg_read_fd(fd, &sigsz);
|
||||
|
||||
while ((r = read(fd, buf, sizeof(buf))) >0) {
|
||||
fwrite(buf, 1, r, sig);
|
||||
}
|
||||
|
||||
fclose(sig);
|
||||
pk = calloc(1, sizeof(struct pubkey));
|
||||
pk->siglen = sigsz;
|
||||
pk->sig = calloc(1, pk->siglen);
|
||||
|
|
|
|||
|
|
@ -63,4 +63,6 @@ struct pubkey {
|
|||
int siglen;
|
||||
};
|
||||
|
||||
char *pkg_read_fd(int fd, size_t *osz);
|
||||
|
||||
#endif /* _PKG_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue