diff options
author | Kristian Høgsberg <krh@redhat.com> | 2006-01-10 22:54:01 +0000 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2006-01-10 22:54:01 +0000 |
commit | 74129e8c7b1c5e7ef0d22875632cbce8acc60d12 (patch) | |
tree | 0494807edd1d711fc3796f81f8d158fdc126ae5b | |
parent | 9c3d0ab91e42404cfd215de3739fa5b2bdf71964 (diff) |
2006-01-10 Kristian Høgsberg <krh@redhat.com>poppler-0.4.4
* configure.ac: Bump realease to 0.4.4.
* NEWS: Sum up changes.
* poppler/DCTStream.cc: Backport patch for KDE #119569.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | poppler/DCTStream.cc | 26 |
4 files changed, 29 insertions, 12 deletions
@@ -1,5 +1,13 @@ 2006-01-10 Kristian Høgsberg <krh@redhat.com> + * configure.ac: Bump realease to 0.4.4. + + * NEWS: Sum up changes. + + * poppler/DCTStream.cc: Backport patch for KDE #119569. + +2006-01-10 Kristian Høgsberg <krh@redhat.com> + Security patch from Martin Pitt (#5516). Multiple integer/buffer overflows. @@ -1,3 +1,8 @@ +Release 0.4.4 + + - Security update; CVE-2005-3624, CVE-2005-3625, CVE-2005-3627. + - Fix KDE bug #119569, endless loop in jpeg decoder. + Release 0.4.3 - Fix selection crasher (Nickolay V. Shmyrev, #4402). diff --git a/configure.ac b/configure.ac index b4f89b42..c3e13216 100644 --- a/configure.ac +++ b/configure.ac @@ -113,7 +113,7 @@ dnl Based on kde acinclude.m4.in, LGPL Licensed AC_PREREQ(2.59) -AC_INIT(poppler, 0.4.3) +AC_INIT(poppler, 0.4.4) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(poppler/poppler-config.h) diff --git a/poppler/DCTStream.cc b/poppler/DCTStream.cc index 2c17cb75..46936838 100644 --- a/poppler/DCTStream.cc +++ b/poppler/DCTStream.cc @@ -14,21 +14,25 @@ static void str_init_source(j_decompress_ptr cinfo) static boolean str_fill_input_buffer(j_decompress_ptr cinfo) { + int c; struct str_src_mgr * src = (struct str_src_mgr *)cinfo->src; if (src->index == 0) { - src->buffer = 0xFF; + c = 0xFF; src->index++; } else if (src->index == 1) { - src->buffer = 0xD8; + c = 0xD8; src->index++; } - else { - src->buffer = src->str->getChar(); + else c = src->str->getChar(); + if (c != EOF) + { + src->buffer = c; + src->pub.next_input_byte = &src->buffer; + src->pub.bytes_in_buffer = 1; + return TRUE; } - src->pub.next_input_byte = &src->buffer; - src->pub.bytes_in_buffer = 1; - return TRUE; + else return FALSE; } static void str_skip_input_data(j_decompress_ptr cinfo, long num_bytes) @@ -83,18 +87,17 @@ void DCTStream::reset() { // the start marker... bool startFound = false; int c = 0, c2 = 0; - int n = 0; while (!startFound) { if (!c) { c = str->getChar(); - if (c != 0xFF) c = 0; if (c == -1) { error(-1, "Could not find start of jpeg data"); exit(1); } + if (c != 0xFF) c = 0; } else { @@ -106,7 +109,6 @@ void DCTStream::reset() { } else startFound = true; } - n++; } jpeg_read_header(&cinfo, TRUE); @@ -121,7 +123,9 @@ int DCTStream::getChar() { if (x == 0) { if (cinfo.output_scanline < cinfo.output_height) - jpeg_read_scanlines(&cinfo, row_buffer, 1); + { + if (!jpeg_read_scanlines(&cinfo, row_buffer, 1)) return EOF; + } else return EOF; } c = row_buffer[0][x]; |