[64bit] openldap compilation doesn't produce shared libraries
Corinna Vinschen
corinna-cygwin@cygwin.com
Thu Jun 13 09:08:00 GMT 2013
On Jun 13 10:37, Dr. Volker Zell wrote:
> >>>>> Yaakov writes:
>
> > On 2013-06-10 07:46, Dr. Volker Zell wrote:
> >> I think the stack trace translates to the following:
> >>
> >> Stack trace:
> >> Frame Function Args
> >> ber_get_stringbvl
> >> /usr/src/debug/openldap-2.4.35-1/libraries/liblber/decode.c:414
> >> ber_scanf
> >> /usr/src/debug/openldap-2.4.35-1/libraries/liblber/decode.c:790
> >> ldap_get_attribute_ber
> >> /usr/src/debug/openldap-2.4.35-1/libraries/libldap/getattr.c:132
> >> print_entry
> >> /usr/src/debug/openldap-2.4.35-1/clients/tools/ldapsearch.c:1634
> >> main
> >> /usr/src/debug/openldap-2.4.35-1/clients/tools/ldapsearch.c:1222
> >>
> >> The offending code line
> >> case BvOff:
> >> res.bo = (char *) b->result + b->off;
> >> ((struct berval *) (res.bo + tot_size))->bv_val = NULL; <- line 414
> >> tot_size = 0;
> >> break;
>
> > That is where it is crashing, but after some debugging, AFAICS the real culprit
> > is the call to ber_scanf() in ldap_get_attribute_ber(). Presumably because this
> > is a varargs function, the compiler wasn't able to handle the necessary type
> > promotion automatically (ber_len_t is an unsigned long); so b->off was showing
> > here as 0x600000000, taking line 414 off to la-la land. Patch attached and
> > pushed to Ports git.
>
> Thanks for the patch. I will try the openldap 64bit testsuite on the
> weekend.
>
> By the way is this something which should be send to upstream ? or is it
> cygwin specific.
Not casting to the required datatype size is a bug. While it works on
other 64 bit systems, it only does so because the ABI it has been ported
to is forgiving so the bug hasn't been noticed.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
More information about the Cygwin-apps
mailing list