63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
From eb9dc8cfc45875ddf8dd193eb16e506937ce5355 Mon Sep 17 00:00:00 2001
|
|
From: Norbert Pocs <npocs@redhat.com>
|
|
Date: Tue, 7 Jun 2022 14:28:30 +0200
|
|
Subject: [PATCH] Add errno reset with strtoul call
|
|
|
|
Contaminated errno can happen before strtoul call, thereofore
|
|
cleaning it before the call.
|
|
The errno is not used for checking later in code if fail happens,
|
|
therefore cleaning it right after error.
|
|
|
|
Signed-off-by: Norbert Pocs <npocs@redhat.com>
|
|
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
|
|
---
|
|
src/misc.c | 4 ++++
|
|
tests/pkd/pkd_util.c | 1 +
|
|
2 files changed, 5 insertions(+)
|
|
|
|
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;
|
|
}
|
|
|
|
--
|
|
2.33.0
|
|
|