install: Prefer strsnvis() to strsvis().

MFC after:	1 week
Sponsored by:	Klara, Inc.
Reviewed by:	allanjude
Differential Revision:	https://reviews.freebsd.org/D44514
This commit is contained in:
Dag-Erling Smørgrav 2024-03-27 11:03:59 +01:00
parent 2ae8d34666
commit 2cab4be46b

View file

@ -1529,15 +1529,18 @@ metadata_log(const char *path, const char *type, struct timespec *ts,
static const char extra[] = { ' ', '\t', '\n', '\\', '#', '\0' };
const char *p;
char *buf;
size_t destlen;
size_t buflen, destlen;
struct flock metalog_lock;
if (!metafp)
return;
/* Buffer for strsvis(3). */
buf = (char *)malloc(4 * strlen(path) + 1);
if (buf == NULL) {
warnx("%s", strerror(ENOMEM));
/* Buffer for strsnvis(3), used for both path and slink. */
buflen = strlen(path);
if (slink && strlen(slink) > buflen)
buflen = strlen(slink);
buflen = 4 * buflen + 1;
if ((buf = malloc(buflen)) == NULL) {
warn(NULL);
return;
}
@ -1562,7 +1565,7 @@ metadata_log(const char *path, const char *type, struct timespec *ts,
}
while (*p && *p == '/')
p++;
strsvis(buf, p, VIS_OCTAL, extra);
strsnvis(buf, buflen, p, VIS_OCTAL, extra);
p = buf;
/* Print details. */
fprintf(metafp, ".%s%s type=%s", *p ? "/" : "", p, type);
@ -1572,14 +1575,14 @@ metadata_log(const char *path, const char *type, struct timespec *ts,
fprintf(metafp, " gname=%s", group);
fprintf(metafp, " mode=%#o", mode);
if (slink) {
strsvis(buf, slink, VIS_CSTYLE, extra); /* encode link */
strsnvis(buf, buflen, slink, VIS_CSTYLE, extra);
fprintf(metafp, " link=%s", buf);
}
if (*type == 'f') /* type=file */
fprintf(metafp, " size=%lld", (long long)size);
if (ts != NULL && dopreserve)
fprintf(metafp, " time=%lld.%09ld",
(long long)ts[1].tv_sec, ts[1].tv_nsec);
(long long)ts[1].tv_sec, ts[1].tv_nsec);
if (digestresult && digest)
fprintf(metafp, " %s=%s", digest, digestresult);
if (fflags)