diff options
author | tobias@openbsd.org <tobias@openbsd.org> | 2015-12-04 21:51:06 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2015-12-07 12:38:59 +1100 |
commit | 8b56e59714d87181505e4678f0d6d39955caf10e (patch) | |
tree | 24507377b831df2b1c979ec3927695f9d083b009 | |
parent | 76c9fbbe35aabc1db977fb78e827644345e9442e (diff) |
upstream commit
Properly handle invalid %-format by calling fatal.
ok deraadt, djm
Upstream-ID: 5692bce7d9f6eaa9c488cb93d3b55e758bef1eac
-rw-r--r-- | misc.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: misc.c,v 1.99 2015/10/24 08:34:09 sthen Exp $ */ | 1 | /* $OpenBSD: misc.c,v 1.100 2015/12/04 21:51:06 tobias Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2005,2006 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2005,2006 Damien Miller. All rights reserved. |
@@ -604,6 +604,8 @@ percent_expand(const char *string, ...) | |||
604 | /* %% case */ | 604 | /* %% case */ |
605 | if (*string == '%') | 605 | if (*string == '%') |
606 | goto append; | 606 | goto append; |
607 | if (*string == '\0') | ||
608 | fatal("%s: invalid format", __func__); | ||
607 | for (j = 0; j < num_keys; j++) { | 609 | for (j = 0; j < num_keys; j++) { |
608 | if (strchr(keys[j].key, *string) != NULL) { | 610 | if (strchr(keys[j].key, *string) != NULL) { |
609 | i = strlcat(buf, keys[j].repl, sizeof(buf)); | 611 | i = strlcat(buf, keys[j].repl, sizeof(buf)); |