diff options
author | 2014-03-17 04:09:39 +0000 | |
---|---|---|
committer | 2014-03-17 04:09:39 +0000 | |
commit | 9083d0fce2f0c2a87b84a99a07914f68c0b863c5 (patch) | |
tree | 8b3e9ce02ed507bb4b5c72541f2c91c69d7b02dc | |
parent | tweak a few messages (diff) | |
download | wireguard-openbsd-9083d0fce2f0c2a87b84a99a07914f68c0b863c5.tar.xz wireguard-openbsd-9083d0fce2f0c2a87b84a99a07914f68c0b863c5.zip |
simplify readmsg loop
-rw-r--r-- | usr.bin/signify/signify.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/usr.bin/signify/signify.c b/usr.bin/signify/signify.c index 515a328945f..844e7e2f187 100644 --- a/usr.bin/signify/signify.c +++ b/usr.bin/signify/signify.c @@ -1,4 +1,4 @@ -/* $OpenBSD: signify.c,v 1.66 2014/03/17 03:33:57 tedu Exp $ */ +/* $OpenBSD: signify.c,v 1.67 2014/03/17 04:09:39 tedu Exp $ */ /* * Copyright (c) 2013 Ted Unangst <tedu@openbsd.org> * @@ -175,21 +175,22 @@ readmsg(const char *filename, unsigned long long *msglenp) struct stat sb; ssize_t x, space; int fd; - const size_t chunklen = 64 * 1024; fd = xopen(filename, O_RDONLY | O_NOFOLLOW, 0); if (fstat(fd, &sb) == 0 && S_ISREG(sb.st_mode)) { if (sb.st_size > (1UL << 30)) errx(1, "msg too large in %s", filename); space = sb.st_size + 1; - msg = xmalloc(space + 1); } else { - space = 0; + space = 64 * 1024; } + msg = xmalloc(space + 1); while (1) { if (space == 0) { - space = msglen + chunklen; + if (msglen * 2 > (1UL << 30)) + errx(1, "msg too large in %s", filename); + space = msglen; if (!(msg = realloc(msg, msglen + space + 1))) errx(1, "realloc"); } @@ -199,8 +200,6 @@ readmsg(const char *filename, unsigned long long *msglenp) break; space -= x; msglen += x; - if (msglen > (1UL << 30)) - errx(1, "msg too large in %s", filename); } msg[msglen] = 0; |