diff --git a/src/misc.c b/src/misc.c index f7efb9df..e890e829 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1361,21 +1361,25 @@ int ssh_analyze_banner(ssh_session session, int server) * 012345678901234567890 */ if (strlen(openssh) > 9) { + errno = 0; major = strtoul(openssh + 8, &tmp, 10); if ((tmp == (openssh + 8)) || ((errno == ERANGE) && (major == ULONG_MAX)) || ((errno != 0) && (major == 0)) || ((major < 1) || (major > 100))) { /* invalid major */ + errno = 0; goto done; } + errno = 0; minor = strtoul(openssh + 10, &tmp, 10); if ((tmp == (openssh + 10)) || ((errno == ERANGE) && (major == ULONG_MAX)) || ((errno != 0) && (major == 0)) || (minor > 100)) { /* invalid minor */ + errno = 0; goto done; } diff --git a/tests/pkd/pkd_util.c b/tests/pkd/pkd_util.c index 0e3b19b4..e8e6fbb7 100644 --- a/tests/pkd/pkd_util.c +++ b/tests/pkd/pkd_util.c @@ -81,6 +81,7 @@ static int is_openssh_client_new_enough(void) { ((major < 1) || (major > 100))) { fprintf(stderr, "failed to parse OpenSSH client version, " "errno %d\n", errno); + errno = 0; goto errversion; }