diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 5ad096d..8b477fe 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -594,12 +594,11 @@
         b = [self.buf]
         x = len(self.buf)
         while x < size:
-            try:
-                raw = self.fileobj.read(self.blocksize)
-                data = self.bz2obj.decompress(raw)
-                b.append(data)
-            except EOFError:
+            raw = self.fileobj.read(self.blocksize)
+            if not raw:
                 break
+            data = self.bz2obj.decompress(raw)
+            b.append(data)
             x += len(data)
         self.buf = "".join(b)
 
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index a9797ae..f8e8ddb 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -751,6 +751,29 @@
     class ReadFileobjTestBzip2(ReadFileobjTest):
         comp = "bz2"
 
+    class PartialReadTestBzip2(unittest.TestCase):
+        # Issue5068: The _BZ2Proxy.read() method loops forever
+        # on an empty or partial bzipped file.
+
+        def _test_partial_input(self, mode):
+            class MyStringIO(StringIO.StringIO):
+                hit_eof = False
+                def read(self, n):
+                    if self.hit_eof:
+                        raise AssertionError("infinite loop detected in tarfile.open()")
+                    self.hit_eof = self.pos == self.len
+                    return StringIO.StringIO.read(self, n)
+
+            data = bz2.compress(tarfile.TarInfo("foo").tobuf())
+            for x in range(len(data) + 1):
+                tarfile.open(fileobj=MyStringIO(data[:x]), mode=mode)
+
+        def test_partial_input(self):
+            self._test_partial_input("r")
+
+        def test_partial_input_bz2(self):
+            self._test_partial_input("r:bz2")
+
 # If importing gzip failed, discard the Gzip TestCases.
 if not gzip:
     del ReadTestGzip
@@ -811,7 +834,7 @@
             WriteTestBzip2, WriteStreamTestBzip2,
             ReadDetectTestBzip2, ReadDetectFileobjTestBzip2,
             ReadAsteriskTestBzip2, ReadStreamAsteriskTestBzip2,
-            ReadFileobjTestBzip2
+            ReadFileobjTestBzip2, PartialReadTestBzip2
         ])
     try:
         test_support.run_unittest(*tests)
diff --git a/Misc/NEWS b/Misc/NEWS
index 2cd6252..6b256b6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -4,6 +4,20 @@
 
 (editors: check NEWS.help for information about editing NEWS using ReST.)
 
+What's New in Python 2.5.5?
+===========================
+
+*Release date: XX-XXX-20XX*
+
+Library
+-------
+
+- Issue #5068: Fixed the tarfile._BZ2Proxy.read() method that would loop
+  forever on incomplete input. That caused tarfile.open() to hang when used
+  with mode 'r' or 'r:bz2' and a fileobj argument that contained no data or
+  partial bzip2 compressed data.
+
+
 What's New in Python 2.5.4?
 ===========================
 
