NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: can not download IMAP messages with isync/mbsync
On Mon, 14 Nov 2022, Mouse wrote:
My guess is that the buffer you're testing with is near the top of the
address space, within ~1GB of address 0xffffffff, and what you're
seeing is due to wraparound.
Thanks for that analysis--address-wrapping was my first guess too, but,
I didn't have the time to confirm it: the 1GB was with a standalone
program; in mbsync itself, the range was much smaller--less than 1MB even.
Also,
- uint maxlen = UINT_MAX;
+ uint maxlen = sizeof(buf);
if maxlen is passed unchanged to strnlen, I can't see how the original
code isn't a bug; there's no point in using strnlen if you're pass a
maxlen greater than the space remaining in the buffer your pointer
points into.
It _is_ passed as-is to strnlen(). I chose sizeof(buf) instead of UINT_MAX
because `buf' seemed sized for the RFC-5322 recommended line-length limit
of 998 octets.
The 9.1 manpage for strnlen says
The strnlen() function returns either the same result as strlen() or
maxlen, whichever is smaller.
which makes this a violation of its spec.
Right, then Marko can file a PR so that this can be fixed a) either in the
ARM assembly, or b) by NetBSD-ARM just using the C version like the other
ports.
Thx,
-RVP
Home |
Main Index |
Thread Index |
Old Index