Closed Bug 5842 Opened 25 years ago Closed 25 years ago

native-libpng builds compile with Mozilla libpng header files

Categories

(Core :: Graphics: ImageLib, defect, P3)

x86
Linux
defect

Tracking

()

VERIFIED INVALID

People

(Reporter: newt, Assigned: briano)

References

Details

(Whiteboard: when native libs are linked, dist/includes are used instead of native includes.)

When building with a native (system) libpng, Mozilla links libnspng.so against
the system library but compiles it with its own png.h and pngconf.h.  This was
already the cause of bug 5841, but it is guaranteed to happen again for other
system libpng versions, either past or future.  This is probably also a problem
with the native libjpeg builds and libnsjpg.so.
FYI, if this does happen with libjpeg you should see libjpeg error exits with
"Wrong JPEG library version: library is %d, caller expects %d" or
"JPEG parameter struct mismatch: library thinks size is %u, caller expects %u".
I do not recall whether libpng has any comparable defenses.
libpng checks version numbers, but that's encoded in png.h and didn't trigger
here (only pngconf.h is bogus).  I suspect the bug had to do with the size of
jmp_buf, which in turn would affect the size of the main png_struct.  But I
don't think there are any libpng tests for that.

In any case, I assume you generally want to compile with a consistent libjpeg
header file regardless of whether any gross inconsistencies are reported at
runtime.  Subtle bugs are even worse (he said with feeling).
Status: NEW → ASSIGNED
I'm on it.
-pn
Looks like the config scripts are always looking the
dist directory for exported headers.
Still digging,
pn
Assignee: pnunn → cyeh
Status: ASSIGNED → NEW
Whiteboard: when native libs are linked, dist/includes are used instead of native includes.
Ramiro said that you get the autoconf/build related problems.
I'd be happy to work with you on this, but I need some help.
I looked at autoconf yesterday and got a headache. It looks to me
like we use the dist/includes always. which could give us a different
version of the include.
Assignee: cyeh → briano
Target Milestone: M6
I'll take this.  I think I know (sort of) how to fix this.
We'll see if I'm as smart as I think I am.... ;-)
Status: NEW → ASSIGNED
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → INVALID
OK, this one is pilot error (I don't even know if there's a documentation issue
since I haven't looked lately :-) ).  The problem is that "make clobber" doesn't
wipe dist/include; you have to do "make clobber_all".  I did that last night,
reconfigured and rebuilt; it never links its own copy of the PNG headers into
dist/include (which is good for MOZ_NATIVE_PNG), and everything still works
(e.g., http://www.cdrom.com/pub/png/pngs-img.html).  I'll go ahead and change
the resolution to INVALID.

Many thanks to Christopher Seawood (offline e-mails) for helping resolve this.
*** Bug 5803 has been marked as a duplicate of this bug. ***
Status: RESOLVED → VERIFIED
Rubber-stamping Verified/Invalid, since Briano Is Always Right. (tm)
You need to log in before you can comment on or make changes to this bug.