On June 8, 2006 6:02:44 PM -0400 Alan DeKok <aland@nitros9.org> wrote:
Frank Cusack <fcusack@fcusack.com> wrote: The libltdl retards would allocate a data structure, partially fill it in, and then RETURN IT to the caller if ltdl_open() didn't work. Since ltdl_open() is documented as returning PTR on success and NULL on fail, it would look like the dlopen succeeded. The code would then call ltdl_sym(), using the previous bullshit structure, and the retarded ltdl_sym() code would de-reference a NULL pointer. It doesn't need to check, apparently, because that field is supposed to be initialized if ltdl_open() worked.
Your patch is actually in lt_dlopenext(), not lt_dlopen(). On inspection, I don't see a code path that leaves handle non-NULL on an error return. I'm also unable to reproduce the problem, and none of the bugs referencing this problem has an adequate description. Can you give me a formula to demonstrate this problem? I don't have mysql, which a lot of the cases seem to revolve around. -frank