misc: Fix OpenSSH banner parsing

Signed-off-by: Lucas Mulling <lucas.mulling@suse.com>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Norbert Pocs <norbertpocs0@gmail.com>
This commit is contained in:
Lucas Mulling
2025-04-24 15:48:32 -03:00
committed by Lucas Mülling
parent bfae56634c
commit d758990d39
3 changed files with 24 additions and 2 deletions

View File

@@ -1426,6 +1426,7 @@ int ssh_analyze_banner(ssh_session session, int server)
char *tmp = NULL;
unsigned long int major = 0UL;
unsigned long int minor = 0UL;
int off = 0;
/*
* The banner is typical:
@@ -1445,8 +1446,9 @@ int ssh_analyze_banner(ssh_session session, int server)
}
errno = 0;
minor = strtoul(openssh + 10, &tmp, 10);
if ((tmp == (openssh + 10)) ||
off = major >= 10 ? 11 : 10;
minor = strtoul(openssh + off, &tmp, 10);
if ((tmp == (openssh + off)) ||
((errno == ERANGE) && (major == ULONG_MAX)) ||
((errno != 0) && (major == 0)) ||
(minor > 100)) {