diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2021-01-11 02:12:57 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2021-01-11 15:04:12 +1100 |
commit | 6d30673fedec2d251f4962c526fd0451f70c4d97 (patch) | |
tree | 171f633481c7aa816fae802df3d6f2507ccc4fc7 /misc.c | |
parent | 7a57adb8b07b2ad0aead4b2e09ee18edc04d0481 (diff) | |
download | openssh-git-6d30673fedec2d251f4962c526fd0451f70c4d97.tar.gz |
upstream: Change convtime() from returning long to returning int.
On platforms where sizeof(int) != sizeof(long), convtime could accept values
>MAX_INT which subsequently truncate when stored in an int during config
parsing. bz#3250, ok djm@
OpenBSD-Commit-ID: 8fc932683d6b4660d52f50911d62bd6639c5db31
Diffstat (limited to 'misc.c')
-rw-r--r-- | misc.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.157 2020/12/22 00:12:22 djm Exp $ */ +/* $OpenBSD: misc.c,v 1.158 2021/01/11 02:12:57 dtucker Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2005-2020 Damien Miller. All rights reserved. @@ -543,7 +543,7 @@ a2tun(const char *s, int *remote) * * Return -1 if time string is invalid. */ -long +int convtime(const char *s) { long total, secs, multiplier; @@ -560,7 +560,7 @@ convtime(const char *s) while (*p) { secs = strtol(p, &endp, 10); if (p == endp || - (errno == ERANGE && (secs == LONG_MIN || secs == LONG_MAX)) || + (errno == ERANGE && (secs == INT_MIN || secs == INT_MAX)) || secs < 0) return -1; @@ -591,10 +591,10 @@ convtime(const char *s) default: return -1; } - if (secs >= LONG_MAX / multiplier) + if (secs >= INT_MAX / multiplier) return -1; secs *= multiplier; - if (total >= LONG_MAX - secs) + if (total >= INT_MAX - secs) return -1; total += secs; if (total < 0) |