Hi,

ap_size_parameter_parse() (added in #829) and the LimitXMLRequestBody test
from #825 depend on how strtoll() handles input containing no digits at
all, such as "abc", "+", or "-".

glibc does not set errno in this case, while FreeBSD libc and musl set
EINVAL, which apr_strtoff() propagates.

The configuration is rejected either way, but on those systems
ap_size_parameter_parse() returned APR_ERANGE instead of APR_EINVAL,
contrary to its documented contract, and test_core_010_002 fails.

I verified this on a FreeBSD 14.5 VM, where test_core_010_002 fails for
abc123, "+", and "-", and on Alpine 3.17, where apr_strtoff() returns EINVAL
for the same kind of no-conversion input.

The fix is in #848; it also incorporates the #847 change to use the common
parser for LimitXMLRequestBody.

Our CI currently builds on Ubuntu/glibc and Windows, so it cannot catch
this kind of libc difference. Would there be interest in adding a job that
builds trunk on Alpine/musl in a container and runs at least the core
pytest suite?

FreeBSD would require a VM and is probably not worth the additional CI cost.

If people agree, I can prepare a separate PR for linux.yml once these fixes
are in.

Regards,

Arturo

Reply via email to