diff --git a/htmldoc-CVE-2022-27114.patch b/htmldoc-CVE-2022-27114.patch new file mode 100644 index 0000000..debbb9a --- /dev/null +++ b/htmldoc-CVE-2022-27114.patch @@ -0,0 +1,72 @@ +diff --git a/htmldoc/image.cxx b/htmldoc/image.cxx +index 8aeccced..9b4d11de 100644 +--- a/htmldoc/image.cxx ++++ b/htmldoc/image.cxx +@@ -26,6 +26,13 @@ extern "C" { /* Workaround for JPEG header problems... */ + #endif // HAVE_LIBPNG + + ++/* ++ * Limits... ++ */ ++ ++#define IMAGE_MAX_DIM 37837 // Maximum dimension - sqrt(4GiB / 3) ++ ++ + /* + * GIF definitions... + */ +@@ -926,7 +933,7 @@ image_load_bmp(image_t *img, /* I - Image to load into */ + colors_used = (int)read_dword(fp); + read_dword(fp); + +- if (img->width <= 0 || img->width > 8192 || img->height <= 0 || img->height > 8192 || info_size < 0) ++ if (img->width <= 0 || img->width > IMAGE_MAX_DIM || img->height <= 0 || img->height > IMAGE_MAX_DIM || info_size < 0) + return (-1); + + if (info_size > 40) +@@ -1278,7 +1285,7 @@ image_load_gif(image_t *img, /* I - Image pointer */ + img->height = (buf[9] << 8) | buf[8]; + ncolors = 2 << (buf[10] & 0x07); + +- if (img->width <= 0 || img->width > 32767 || img->height <= 0 || img->height > 32767) ++ if (img->width <= 0 || img->width > IMAGE_MAX_DIM || img->height <= 0 || img->height > IMAGE_MAX_DIM) + return (-1); + + // If we are writing an encrypted PDF file, bump the use count so we create +@@ -1326,7 +1333,7 @@ image_load_gif(image_t *img, /* I - Image pointer */ + img->height = (buf[7] << 8) | buf[6]; + img->depth = gray ? 1 : 3; + +- if (img->width <= 0 || img->width > 32767 || img->height <= 0 || img->height > 32767) ++ if (img->width <= 0 || img->width > IMAGE_MAX_DIM || img->height <= 0 || img->height > IMAGE_MAX_DIM) + return (-1); + + if (transparent >= 0) +@@ -1443,6 +1450,12 @@ JSAMPROW row; /* Sample row pointer */ + img->height = (int)cinfo.output_height; + img->depth = (int)cinfo.output_components; + ++ if (img->width <= 0 || img->width > IMAGE_MAX_DIM || img->height <= 0 || img->height > IMAGE_MAX_DIM) ++ { ++ jpeg_destroy_decompress(&cinfo); ++ return (-1); ++ } ++ + if (!load_data) + { + jpeg_destroy_decompress(&cinfo); +@@ -1598,6 +1611,12 @@ image_load_png(image_t *img, /* I - Image pointer */ + img->width = (int)png_get_image_width(pp, info); + img->height = (int)png_get_image_height(pp, info); + ++ if (img->width <= 0 || img->width > IMAGE_MAX_DIM || img->height <= 0 || img->height > IMAGE_MAX_DIM) ++ { ++ png_destroy_read_struct(&pp, &info, NULL); ++ return (-1); ++ } ++ + if (color_type & PNG_COLOR_MASK_ALPHA) + { + if ((PSLevel == 0 && PDFVersion >= 14) || PSLevel == 3) + diff --git a/htmldoc.changes b/htmldoc.changes index 389870b..afc325d 100644 --- a/htmldoc.changes +++ b/htmldoc.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed May 11 07:35:17 UTC 2022 - pgajdos@suse.com + +- security update +- added patches + fix CVE-2022-27114 [bsc#1199370], image_load_jpeg can cause integer overflow + + htmldoc-CVE-2022-27114.patch + ------------------------------------------------------------------- Fri Apr 29 06:02:30 UTC 2022 - pgajdos@suse.com diff --git a/htmldoc.spec b/htmldoc.spec index a2e3d14..5597538 100644 --- a/htmldoc.spec +++ b/htmldoc.spec @@ -26,6 +26,8 @@ URL: https://michaelrsweet.github.io/htmldoc/index.html Source: https://github.com/michaelrsweet/htmldoc/releases/download/v%{version}/htmldoc-%{version}-source.tar.gz # CVE-2022-28085 [bsc#1198933], Heap buffer overflow in function pdf_write_names in ps-pdf.cxx Patch0: htmldoc-CVE-2022-28085.patch +# CVE-2022-27114 [bsc#1199370], image_load_jpeg can cause integer overflow +Patch1: htmldoc-CVE-2022-27114.patch BuildRequires: fltk-devel BuildRequires: gcc-c++ BuildRequires: hicolor-icon-theme