Releases: saitoha/libsixel
v1.8.7 security update
First, my apologies for letting the project stagnate for so long, and my thanks to everyone on the libsixel/libsixel project who continued to deliver security fixes and improvements during my absence.
This repository (saitoha/libsixel) does not yet incorporate everything from libsixel/libsixel. In particular, I am still evaluating whether to adopt Meson for the build system. Reasons include: I currently have no Meson expertise; importing it as-is would eliminate a large number of #ifdefs and likely reduce portability; and I am considering a future port to OpenVMS. I know many people dislike GNU Autotools, so I will keep revisiting the build system choice. The slow ./configure on Windows is a major pain point, but predefining CONFIG_SITE should mitigate it substantially.
On security fixes, my understanding is that the majority are already addressed. A summary of overall progress appears further below in this post. We deferred CVE-2021-46700 (#158), which we have not been able to reproduce, as well as certain Dependabot alerts that appear to have limited impact, for a later release.
📢 What's New in libsixel-1.8.7
-
fix invalid pointer access in
encoder.c(#193, #195)
Thanks to @momo-trip, @akinomyoga -
fix wrong HLS to RGB conversion. (#191)
Thanks to @gnachman, @j4james -
fix NULL pointer dereference problem in
img2sixel.c(#192)
Thanks to @momo-trip, @akinomyoga -
fix double free problem in
encoder.c(#194)
Thanks to @momo-trip -
Serucity fix for #200, heap buffer overflow in debug palette function.
Thanks to @err2zero -
Travis-ci: added support for ppc64le (#140)
Thanks to @dthadi3 -
export
sixel_allocator_newto dll (#151)
Thanks to @johnnychen94 -
README: Add Idris 2 language bindings (#155)
Thanks to @Kaiepi -
performance: If width and height are unchanged, nothing to do. (#170)
Thanks to @rokuyama -
README: add
MacPortsto install options (#183)
Thanks to @barracuda156 -
Add backport feature (nanosleep) for windows,
github actionsCI (#202)
Thanks to @Kreijstal -
build: Remove override of $LIBJPEG_CFLAGS and $LIBJPEG_LIBS set by PKG_CHECK_MODULES()
-
fix Problems with the dithering palette calculation (#188)
Thanks to @gnachman, @j4james -
fix SEGV error in
sixel_encoder_setopt(#174)
Thanks to @shinibufa , @j4james -
curl: send original UserAgent header: "libsixel/${LIBSIXEL_VERSION}"
-
fix heap-buffer-overflow in error_diffuse, quant.c:876 #172
Thanks to @waugustus -
fix Heap-buffer-overflow in scale.c:214 #179
Thanks to @chameleon10712, @j4james -
build: fallback support for environments without
pkg-config. -
fix double-free problem in
loader.c(#150)
Thanks to @duytai, @ctrlcctrlv -
fix an assertion issue in
stbi__create_png_image_raw(#163)
Thanks to @kdsjZh, @dankamongmen -
Update
stb_image.hfrom upstream to version 2.30
THanks to @hzeller -
Update examples/drawing: add
SGR-Pixelsmode -
fix a problem on monochromatic encoded (-e) output (#112)
Thanks to @interkosmos, @j4james -
fix a FPE issue (#166, #167)
Thanks to @waugustus, @j4james -
cli: fix a scaling issue introduced in v1.6.1, which is caused
when one of -w/-h is a percentage and the other is unset or "auto" -
fix a memory leak ploblem (#164)
Thanks to @muetzenmann, @j4james
🛡️ libsixel Security Overview (CVE + Dependabot)
All CVEs reported for libsixel (2018–2025, including stb_image leftovers)
| CVE | Short Description | Fix Status (S = saitoha/libsixel / L = libsixel/libsixel fork) | S: Issues / PRs | L: Issues / PRs | Debian / Downstream Status | Notes |
|---|---|---|---|---|---|---|
| CVE-2025-9300 (NVD) | img2sixel: sixel_debug_print_palette stack/heap boundary error | S: ✅ fixed (316c086) |
Issues: #200 | – | Vulnerable (no DSA) | New in 2025; S fixed on master via #200 / 316c086; L archived. |
| CVE-2023-45661 (NVD) | stb_image: OOB memcpy read in stbi__gif_load_next (GIF) | S: ✅ Not Affected (stb ≥2.30 (vendored)) | – | – | Vulnerable (libstb) | libsixel provides its own gif_load_next() and we have verified it is unaffected; historically, when stb_image.h lacked animated gif support, we moved the gif loader to src/fromgif.c and have maintained it independently. |
| CVE-2023-43898 (NVD) | stb_image: NULL deref in stbi__convert_format (PICT) | S: ✅ fixed (stb 2.28) | – | – | Vulnerable (libstb) | |
| CVE-2022-29978 (NVD) | FPE in sixel_encoder_do_resize | S: ✅ fixed (07ab235) / L: 🟡 in progress |
Issues: #166, #167 | Issues: #60, #61, #63 | Vulnerable (postponed/No-DSA) | Debian postponed. |
| CVE-2022-29977 (NVD) | Assertion failure in stb JPEG huffman decode (stb_image) | S: ✅ fixed (1c58a6e) / L: ✅ fixed (138b4ee) |
Issues: #165, #159 | Issues: #62 / PRs: #83 | Vulnerable (postponed/No-DSA) | Debian postponed; L has #63. |
| CVE-2022-28042 (NVD) | stb_image: heap use-after-free in stbi__jpeg_huff_decode (v2.27) | S: ✅ fixed (stb 2.28) | – | – | Vulnerable (libstb) | |
| CVE-2022-28041 (NVD) | stb_image: integer overflow in stbi__jpeg_decode_block_prog_dc (v2.27) | S: ✅ fixed (stb 2.28.) | – | – | Vulnerable (libstb) | |
| CVE-2022-27046 (NVD) | Use-after-free in dither.c:388 | S: ✅ fixed (98189b8) / L: ✅ fixed (d299d67) |
Issues: #157 | Issues: #27 / PRs: #28 | Fixed (bookworm+) | Fixed in L via #28; Debian fixed in bookworm+. |
| CVE-2022-27044 (NVD) | Buffer overflow in quant.c | S: ✅ fixed (39c2de0) / L: ✅ fixed (dc96cdc) |
Issues: #172 | Issues: #25 / PRs: #26 | Fixed (bookworm+) | Debian marks fixed; L fixed in 1.10.x. |
| CVE-2021-46700 (NVD) | Double-free in sixel_encoder_output_without_macro | S: 🟡 can not reproduced in our side | Issues: #158 | – | Vulnerable (no DSA) | — |
| CVE-2021-45340 (NVD) | stb_image: NULL deref (PICT) | S: ✅ fixed (stb 2.26) (1c58a6e) / L: ✅ fixed (138b4ee) |
Issues: #160 | Issues: #73, #51 / PRs: #52 | Vulnerable (ignored) | Handled historically via stb bump to 2.26 in L. |
| CVE-2021-41715 (NVD) | Use-after-free in dither.c:379 | S: ✅ fixed (98189b8) / L: ✅ fixed (d299d67) |
Issues: #157 | Issues: #27 / PRs: #28 | Fixed (bookworm+) | Fixed in libsixel/libsixel (archived 2025-02-12); backport to S as needed |
| CVE-2021-40656 (NVD) | Buffer overflow in quant.c:867 (<1.10) | S: ✅ fixed (39c2de0) / L: ✅ fixed (dc96cdc) |
Issues: #156, #172 | Issues: #25 | Fixed (bookworm+) | — |
| **CVE-... |
libsixel Nightly
Nightly from multiple branches/OS. Generated on 2025-12-04T02:09:55Z (UTC)
v1.8.6 build fixes
v1.8.5 security update
-
Security fix for CVE-2019-20205 (#127), integer overflow problem,
reported by @sleicasper. -
Security fix for CVE-2019-20056 (#126), assertion failure problem,
reported by @sleicasper. -
Security fix for CVE-2019-20094 (#125), heap overflow problem,
reported by @cuanduo. -
Security fix for #124, illegal longjump() call problem,
reported by @cuanduo. -
Serucity fix for #74 and #123, access violation problem,
reported by @hongxuchen and SuhwanSong. -
Security fix for #122, heap overflow problem,
reported by @SuhwanSong. -
Security fix for CVE-2019-20023(#117, #119, #120), memory leaks problem,
reported by @SuhwanSong and @gutiniao. -
Strip first flag check in LZW compression function for issue #118,
reported by @yoichi
For more details, see below summary of vulnerabilities.
| No. | assigned CVE | PR | patch | status | fixed on | comment |
|---|---|---|---|---|---|---|
| #67 | CVE-2018-14072 CVE-2018-14073 | - | f94bc6f 84ed0bc | resolved | v1.8.2 | |
| #68 | - | - | 6a19d99 94a647c | resolved | v1.8.2 | |
| #69 | - | - | 0d70e04 | resolved | v1.8.2 | |
| #70 | - | - | 438188c | resolved | v1.8.2 | |
| #71 | - | - | 01c0bad ba21bb9 | resolved | v1.8.2 | |
| #72 | - | - | 570d6ae | released | v1.8.3 | |
| #73 | - | - | cb373ab 26ac06f | resolved | v1.8.4 | |
| #74 | - | - | 0b1e0b3 | resolved | v1.8.5 | |
| #75 | - | - | 7808a06 | resolved | v1.8.3 | |
| #76 | - | - | e3a4c0e 3c071b9 d7b2600 197d025 | partially resolved | partially fixed on v1.8.3 | |
| #77 | CVE-2018-19759 | #98 | 5f64fb1 | resolved | v1.8.3 | |
| #78 | CVE-2018-19761 | (#106) | (1377517) | resolved | v1.8.3 | *same as #105 |
| #79 | CVE-2018-19757 | #91 #94 | e903c93 a53c872 | resolved | v1.8.3 | |
| #80 | CVE-2018-19756 | #93 | d6e34fc | resolved | v1.8.3 | |
| #81 | CVE-2018-19762 | #92 | 9861272 | resolved | v1.8.3 | |
| #82 | CVE-2018-19763 | #95 | 614e761 | resolved | v1.8.3 | |
| #83 | CVE-2019-3573 CVE-2019-3574 | #99 | 9c013f2 68ecbc1 | resolved | v1.8.3 | |
| #85 | CVE-2019-11024 | - | b418f35 | resolved | v1.8.4 | |
| #88 | - | - | 7808a06 | resolved | v1.8.3 | |
| #89 | - | - | a516125 | resolved | v1.8.4 | |
| #90 | - | - | (1377517) | resolved | v1.8.3 | *same as #105 |
| #97 | - | - | (1377517) | resolved | v1.8.3 | *same as #105 |
| #102 | CVE-2019-19638 | #106 | e17c076 | resolved | v1.8.3 | |
| #103 | CVE-2019-19635 | #106 | 1377517 | resolved | v1.8.3 | |
| #104 | CVE-2019-19636 | #106 | bf46a7b | resolved | v1.8.3 | |
| #105 | CVE-2019-19637 | #106 | 1377517 | resolved | v1.8.3 | |
| #107 | - | - | 1d35033 | resolved | v1.8.4 | |
| #108 | (CVE-2019-19638) | (#106) | (e17c076) | resolved | v1.8.3 | *same as #102 |
| #109 | CVE-2019-19777 | (#93) | (d6e34fc) | resolved | v1.8.3 | *same as #80 |
| #110 | CVE-2019-19778 | (#95) | (614e761) | resolved | v1.8.3 | *same as #82 |
| #111 | - | (#106) | (1377517) | resolved | v1.8.3 | *same as #105 |
| #113 | - | (#93) | (aac1df6) | resolved | v1.8.3 | *same as #80 |
| #114 | - | - | (9d0a7ff) | resolved | v1.8.4 | *same as #116 |
| #116 | - | - | 9d0a7ff | resolved | v1.8.4 | |
| #117 | CVE-2019-20023 | - | b9a4175 | resolved | v1.8.5 | |
| #118 | - | - | 6367d2f | resolved | v1.8.4 | |
| #119 | (CVE-2019-20023) | - | b9a4175 | resolved | 1.8.5 | *same as #117 |
| #120 | (CVE-2019-20023) | - | b9a4175 | resolved | 1.8.5 | *same as #117 |
| #121 | - | (6367d2f) | resolved | v1.8.4 | *same as #118 | |
| #122 | - | 598c8c8 | resolved | v1.8.5 | ||
| #123 | - | (0b1e0b3) | resolved | v1.8.5 | *same as #74 | |
| #124 | - | c1ef812 | resolved | v1.8.5 | ||
| #125 | CVE-2019-20094 | a18b378 | resolved | v1.8.5 | ||
| #126 | CVE-2019-20096 | 814f831 | resolved | v1.8.5 | ||
| #127 | CVE-2019-20095 | 5543354 | resolved | v1.8.5 |
v1.8.4 security update
-
Security fix for CVE-2019-11024 (#85), recursive loop problem,
reported by @Loginsoft-Research. -
Security fix for #73, illegal memory access problem,
reported by @hongxuchen. -
Security fix for #89, core dumped issue,
reported by @niugx. -
Security fix for #107, large memory allocation problem,
reported by @cuanduo. -
Security fix for #114, heap-buffer-overflow problem,
reported by @SuhwanSong. -
Security fix for #116, heap-buffer-overflow problem,
reported by @SuhwanSong. -
Security fix for #118, heap-buffer-overflow problem,
reported by @SuhwanSong. -
Security fix for #121, heap-buffer-overflow problem,
reported by @gutiniao
For more details, see below summary of vulnerabilities.
| No. | assigned CVE | PR | patch | status | fixed on | comment |
|---|---|---|---|---|---|---|
| #67 | CVE-2018-14072 CVE-2018-14073 | - | f94bc6f 84ed0bc | resolved | v1.8.2 | |
| #68 | - | - | 6a19d99 94a647c | resolved | v1.8.2 | |
| #69 | - | - | 0d70e04 | resolved | v1.8.2 | |
| #70 | - | - | 438188c | resolved | v1.8.2 | |
| #71 | - | - | 01c0bad ba21bb9 | resolved | v1.8.2 | |
| #72 | - | - | 570d6ae | released | v1.8.3 | |
| #73 | - | - | cb373ab 26ac06f | resolved | v1.8.4 | |
| #74 | - | - | - | not resolved | - | |
| #75 | - | - | 7808a06 | resolved | v1.8.3 | |
| #76 | - | - | e3a4c0e 3c071b9 d7b2600 197d025 | partially resolved | partially fixed on v1.8.3 | |
| #77 | CVE-2018-19759 | #98 | 5f64fb1 | resolved | v1.8.3 | |
| #78 | CVE-2018-19761 | (#106) | (1377517) | resolved | v1.8.3 | *same as #105 |
| #79 | CVE-2018-19757 | #91 #94 | e903c93 a53c872 | resolved | v1.8.3 | |
| #80 | CVE-2018-19756 | #93 | d6e34fc | resolved | v1.8.3 | |
| #81 | CVE-2018-19762 | #92 | 9861272 | resolved | v1.8.3 | |
| #82 | CVE-2018-19763 | #95 | 614e761 | resolved | v1.8.3 | |
| #83 | CVE-2019-3573 CVE-2019-3574 | #99 | 9c013f2 68ecbc1 | resolved | v1.8.3 | |
| #85 | CVE-2019-11024 | - | b418f35 | resolved | v1.8.4 | |
| #88 | - | - | 7808a06 | resolved | v1.8.3 | |
| #89 | - | - | a516125 | resolved | v1.8.4 | |
| #90 | - | - | (1377517) | resolved | v1.8.3 | *same as #105 |
| #97 | - | - | (1377517) | resolved | v1.8.3 | *same as #105 |
| #102 | CVE-2019-19638 | #106 | e17c076 | resolved | v1.8.3 | |
| #103 | CVE-2019-19635 | #106 | 1377517 | resolved | v1.8.3 | |
| #104 | CVE-2019-19636 | #106 | bf46a7b | resolved | v1.8.3 | |
| #105 | CVE-2019-19637 | #106 | 1377517 | resolved | v1.8.3 | |
| #107 | - | - | 1d35033 | resolved | v1.8.4 | |
| #108 | (CVE-2019-19638) | (#106) | (e17c076) | resolved | v1.8.3 | *same as #102 |
| #109 | CVE-2019-19777 | (#93) | (d6e34fc) | resolved | v1.8.3 | *same as #80 |
| #110 | CVE-2019-19778 | (#95) | (614e761) | resolved | v1.8.3 | *same as #82 |
| #111 | - | (#106) | (1377517) | resolved | v1.8.3 | *same as #105 |
| #113 | - | (#93) | (aac1df6) | resolved | v1.8.3 | *same as #80 |
| #114 | - | - | (9d0a7ff) | resolved | v1.8.4 | *same as #116 |
| #116 | - | - | 9d0a7ff | resolved | v1.8.4 | |
| #117 | - | - | b9a4175 | patched | - | |
| #118 | - | - | 6367d2f | resolved | v1.8.4 | |
| #119 | - | - | b9a4175 | patched | - | *same as #117 |
| #120 | - | - | b9a4175 | patched | - | *same as #117 |
| #121 | - | (6367d2f) | resolved | v1.8.4 | *same as |
Security fix release
-
Security fix for CVE-2018-19757 (#79), NULL pointer dereference problem,
reported by @nluedtke and fixed by @knok (#91, #94). -
Security fix for CVE-2018-19762 (#81), heap-based buffer overflow problem,
reported by @nluedtke and fixed by @knok (#92). -
Security fix for CVE-2018-19756 (#80), heap-based buffer over-read problem,
reported by @nluedtke and fixed by @knok (#93). -
Security fix for CVE-2018-19763 (#82, reported by @nluedtke) and CVE-2019-19778 (#110, reported by @SuhwanSong),
heap-based buffer over-read problem, fixed by @knok (#95). -
Security fix for CVE-2018-19761, illegal address access, fixed by @knok (#96).
-
Security fix for CVE-2018-19759, heap-based buffer over-read problem, fixed by @knok (#98).
-
Security fix for CVE-2019-3753 (#83), infinite loop problem,
reported by @cool-tomato and fixed by @knok (#99). -
Security fix for CVE-2018-19759 (#102),
heap-based buffer over-read that will cause a denial of service.
reported and fixed by @YourButterfly. (#106) -
Security fix for CVE-2019-19635 (#103), heap-based buffer overflow,
reported and fixed by @YourButterfly. (#106) -
Security fix for CVE-2019-19636 (#104) and CVE-2019-19637 (#105), integer overflow problem.
reported and fixed by @YourButterfly. (#106) -
gif loader: check LZW code size (Issue #75), Thanks to @hongxuchen.
7808a06 -
core: Fix a global-buffer-overflow problem (Issue #72), Thanks to @fgeek.
c868b59 -
core: Fix unexpected hangs/performance issues (Issue #76), Thanks to @hongxuchen.
88561b7
2d3d9ff
c9363cd
v1.8.2
This release provides some security updates.
libsixel-1.8.1 Bug-fix release
v1.8.1 includes an important bug fix.
600f122
libsixel-1.8 released
------------------------------
What's new in libsixel-1.8 ?
------------------------------
-
core: Upgrade stb_image to 2.19.
-
core: Introduce new dithering method, a_dither / x_dither (http://pippin.gimp.org/a_dither/).
Thanks to @hodefoting.
#53 -
core: Fix wrong HLS color handling.
0fb35d2 -
core: Improve quality of 15bpp(hi-color mode) dither.
42f3428 -
img2sixel: Allow a deferred clear code in a GIF format
GIF decoder must do nothing when the table is full.
See Section "DEFERRED CLEAR CODE IN LZW COMPRESSION" in
https://www.w3.org/Graphics/GIF/spec-gif89a.txt.
Thanks to @mame.
#63 -
img2sixel: Marks -D option (read source images from stdin continuously) as deprecated
9c8ffa6 -
Some bug fixes and minor improvements.
Thanks to @set135, @ttdoda. -
Announcement for package maintainers:
Immutable tarball is provided, because GitHub auto-generated tarball may be not immutable.https://github.com/saitoha/libsixel/releases/download/v1.8.0/libsixel-1.8.0.tar.gz
For details, see #64 .
v1.7.3
We additionally provide immutable tarball:
https://github.com/saitoha/libsixel/releases/download/v1.7.3/libsixel-1.7.3.tar.gz
According to Issue #64, GitHub auto-generated tarball(https://github.com/saitoha/libsixel/archive/v1.7.3.tar.gz) may be not immutable.