[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: 64bit issue in libraries/liblunicode/ucdata/ucdata.c causes slapd to dump core (ITS#1960)



I've committed a quick hack which should resolve the
problem on most systems.  However, the code is inheritly
non-portable.  The code should assume the *.dat files
are platform specific, not worry about byte ordering
(except for a safety check), and have all writes use
one type (int or long).  Don't have time to re-write
it presently, patch welcomed.

Kurt

At 01:22 PM 2002-07-17, rhafer@suse.de wrote:
>Full_Name: Ralf Haferkamp
>Version: HEAD
>OS: LInux on IA64
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (213.95.15.201)
>
>
>At the top of the file the following struct is defined:
>
>typedef struct {
>    unsigned short bom;
>    unsigned short cnt;
>    union {
>        unsigned long bytes;
>        unsigned short len[2];
>    } size;
>} _ucheader_t;
>
>The type "long" is however 8 bytes long on (most) 64Bit Archs. So the union
>"size" make some trouble, when you access it through the len[] array.
>
>One workaround could be to change the "long" to "uint32_t" which is available on
>Linux but I am not sure how portable this is. Is there a "uint32_t" on BSD?
>
>If I make this change slapd seems to work flawlessly. All test cases succeed.