Module Name: src Committed By: kre Date: Wed Jan 23 02:32:06 UTC 2019
Modified Files: src/lib/libwrap: expandm.c Log Message: There's no point setting errno, it is just overwritten by err in the exit path ... this function never fails, it simply sometimes doesn't actually expand the %m and just leaves the format string intact. And declare variables at the head of their scope, not at some random place in the middle of the code, whatever C allows, that is just ugly. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libwrap/expandm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libwrap/expandm.c diff -u src/lib/libwrap/expandm.c:1.9 src/lib/libwrap/expandm.c:1.10 --- src/lib/libwrap/expandm.c:1.9 Wed Jan 23 02:00:00 2019 +++ src/lib/libwrap/expandm.c Wed Jan 23 02:32:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: expandm.c,v 1.9 2019/01/23 02:00:00 christos Exp $ */ +/* $NetBSD: expandm.c,v 1.10 2019/01/23 02:32:06 kre Exp $ */ /*- * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: expandm.c,v 1.9 2019/01/23 02:00:00 christos Exp $"); +__RCSID("$NetBSD: expandm.c,v 1.10 2019/01/23 02:32:06 kre Exp $"); #include <limits.h> #include <stdio.h> @@ -56,11 +56,12 @@ expandm(const char *fmt, const char *sf, buf = NULL; for (ptr = fmt; (m = strstr(ptr, "%m")) != NULL; ptr = m + 2) { size_t cnt = 0; + size_t nlen; for (char *p = m; p >= ptr && *p == '%'; p--) cnt++; - size_t nlen = (size_t)(m - ptr); + nlen = (size_t)(m - ptr); /* * we can't exceed INT_MAX because int is used as * a format width @@ -73,10 +74,8 @@ expandm(const char *fmt, const char *sf, * We can't exceed PTRDIFF_MAX because we would * not be able to address the pointers */ - if (tlen >= PTRDIFF_MAX) { - errno = EINVAL; + if (tlen >= PTRDIFF_MAX) goto out; - } nbuf = realloc(buf, tlen + 1); if (nbuf == NULL)