| Summary: | x11-libs/gdk-pixbuf: (CVE-2017-6312) Possible out-of-bounds read or undefined behavior in io-ico.c | ||
|---|---|---|---|
| Product: | Gentoo Security | Reporter: | Ian Zimmerman <nobrowser> |
| Component: | Vulnerabilities | Assignee: | Gentoo Security <security> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | normal | ||
| Priority: | Normal | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | Linux | ||
| URL: | https://bugzilla.gnome.org/show_bug.cgi?id=779012 | ||
| Whiteboard: | |||
| Package list: | Runtime testing required: | --- | |
*** This bug has been marked as a duplicate of bug 611390 *** |
According to the upstream tracker (see ${URL}): Before the patch to bug 313818 (https://bugzilla.gnome.org/show_bug.cgi?id=313818) it was clear it was possible to overflow State->HeaderSize in io-ico.c. See line 334: State->HeaderSize = entry->DIBoffset + INFOHEADER_SIZE; So a check of (State->HeaderSize < 0) was added after this operation. However, I noticed that with optimization compilation flags, this check never took place. Specifically when the project was compiled with gcc with the flags "-O1 -fstrict-overflow -ftree-vrp" (or anything including these, such as -O2 or -O3). You can read about these flags to understand why this happens. This is a problem because I know that many distributions do default to allowing optimizations when building packages and I believe the default of JHBuild is to compile with -O2. This leads to a possible out-of-bounds read of BIH later in line 362 From line 359: BIH = Data+entry->DIBoffset; Reproducible: Always