diff --git a/ChangeLog b/ChangeLog
index d31d8e4..950e318 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
diff --git a/NEWS b/NEWS
index 9d2f2f7..8fa2289 100644
--- a/NEWS
+++ b/NEWS
@@ -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 b4f89b4..c3e1321 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,7 +113,7 @@
 
 
 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 2c17cb7..4693683 100644
--- a/poppler/DCTStream.cc
+++ b/poppler/DCTStream.cc
@@ -14,21 +14,25 @@
 
 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 @@
   // 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 @@
       }
       else startFound = true;
     }
-    n++;
   }
 
   jpeg_read_header(&cinfo, TRUE);
@@ -121,7 +123,9 @@
 
   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];
