On Wed, Aug 28, 2024 at 05:40:33AM -0600, Omar Polo wrote:
> CVSROOT: /cvs
> Module name: src
> Changes by: [email protected] 2024/08/28 05:40:33
>
> Modified files:
> lib/libpcap : scanner.l
>
> Log message:
> libpcap: replace hand-rolled number parser with strtol
>
> can't use strtonum here since it needs to handle octal and hex
> notations as well. Part of a larger diff that's ok beck@
This broke slaacd, vxlan, wg and rip6cksum regress. I doubt it was ever
tested.
According to the manual, strtol() assigns endptr to '\0' when the
complete string is valid.
Index: scanner.l
===================================================================
RCS file: /cvs/src/lib/libpcap/scanner.l,v
diff -u -p -r1.31 scanner.l
--- scanner.l 28 Aug 2024 11:40:33 -0000 1.31
+++ scanner.l 29 Aug 2024 04:43:02 -0000
@@ -344,7 +344,7 @@ stoi(char *s)
errno = 0;
lval = strtol(s, &ep, 0);
- if (*s == '\0' || *ep == '\0')
+ if (*s == '\0' || *ep != '\0')
bpf_error("invalid number %s", s);
if ((errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) ||
(lval > INT_MAX || lval < INT_MIN))