[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Nmh-workers] nmh 1.5 doesn't work on 64-bit big-endian archs(+patch
From: |
David Levine |
Subject: |
Re: [Nmh-workers] nmh 1.5 doesn't work on 64-bit big-endian archs(+patch) |
Date: |
Thu, 14 Jun 2012 08:20:26 -0500 |
az wrote:
> i've run into another gotcha: the base64-decoder doesn't
> work on 64-bit big-endian architectures: mhstore and co. write
> files of the correct length but which consist only of \0s.
>
> the culprit is uip/mhparse.c, which contains a pretty ugly
> base64 decoder (in two places). that thing allocates a
> "long int" as a container for the 24 bits that you get
> from four base-64 chars. the container is then accessed
> both as a single entity and as a byte array, which
> naturally depends on how wide the long int is and in what
> order things end up in there.
>
> the code distinguishes between big- and little-endian
> systems but wrongly assumes that sizeof(long int) == 4,
> which isn't universally true (quel surprise...).
>
> the attached patch fixes the issue, but in the long run we
> should insist on posix and use a64l().
Patch applied, thank you.
uip/mhparse.c has the only explicit dependencies on endian-ness.
Cleanup would be most welcome.
David
- Re: [Nmh-workers] nmh 1.5 doesn't work on 64-bit big-endian archs(+patch),
David Levine <=