diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2017-12-05 23:59:47 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2017-12-07 11:49:00 +1100 |
commit | 609d96b3d58475a15b2eb6b3d463f2c5d8e510c0 (patch) | |
tree | be75a3c395010d0ccf6e5c07e46e4e826203a221 /misc.c | |
parent | 168ecec13f9d7cb80c07df3bf7d414f4e4165e84 (diff) |
upstream commit
Replace atoi and strtol conversions for integer arguments
to config keywords with a checking wrapper around strtonum. This will
prevent and flag invalid and negative arguments to these keywords. ok djm@
OpenBSD-Commit-ID: 99ae3981f3d608a219ccb8d2fff635ae52c17998
Diffstat (limited to 'misc.c')
-rw-r--r-- | misc.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: misc.c,v 1.119 2017/11/25 06:46:22 dtucker Exp $ */ | 1 | /* $OpenBSD: misc.c,v 1.120 2017/12/05 23:59:47 dtucker 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. |
@@ -2112,3 +2112,17 @@ bad: | |||
2112 | *errstr = errbuf; | 2112 | *errstr = errbuf; |
2113 | return 0; | 2113 | return 0; |
2114 | } | 2114 | } |
2115 | |||
2116 | const char * | ||
2117 | atoi_err(const char *nptr, int *val) | ||
2118 | { | ||
2119 | const char *errstr = NULL; | ||
2120 | long long num; | ||
2121 | |||
2122 | if (nptr == NULL || *nptr == '\0') | ||
2123 | return "missing"; | ||
2124 | num = strtonum(nptr, 0, INT_MAX, &errstr); | ||
2125 | if (errstr == NULL) | ||
2126 | *val = (int)num; | ||
2127 | return errstr; | ||
2128 | } | ||