Oops, sorry I should have mentioned, the inputs I am working with that do not set errno are

999999999999999999999
1000000000000000000000
4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

For context, they come from test cases in libpg_query

https://github.com/pganalyze/libpg_query/blob/15-latest/test/scan_tests.c#L30

On Fri, Dec 1, 2023 at 2:08 PM Anuraag Agrawal <anuraaga@gmail.com> wrote:
Currently, __intscan, used by functions like strtol, does not seem to check for overflow during multiplication.

https://git.musl-libc.org/cgit/musl/tree/src/internal/intscan.c#n69

It at the end checks against the limit, e.g. the size of a long

https://git.musl-libc.org/cgit/musl/tree/src/internal/intscan.c#n90

However, if the value overflows and ends up in the range of the limit, errno will not be set. It seems that each multiplication operation needs to be checking for overflow and return errno if it ever happens.