fixing aes only mode: it turns out we were not closing correctly the aes stream
authorEduardo Robles Elvira <edulix@wadobo.com>
Thu, 17 Oct 2013 18:21:42 +0000 (20:21 +0200)
committerEduardo Robles Elvira <edulix@wadobo.com>
Thu, 17 Oct 2013 18:21:42 +0000 (20:21 +0200)
deltatar/tarfile.py
runtests.py

index 1832199..5dcfe9d 100644 (file)
@@ -540,7 +540,13 @@ class _Stream:
 
 
     def _new_aes_block(self, set_last_block_offset=False):
+        # this basically checks if it comes from new_compression_block() call,
+        # in which case we have to call to close
+        if self.comptype == "tar":
+            self.close(close_fileobj=False)
+            self.closed = False
         self.__write_to_file(self.encryption.close_enc())
+
         if set_last_block_offset:
             self.last_block_offset = self.fileobj.tell()
         self.encryption = aescrypto.AESCrypt(self.password,
@@ -606,7 +612,6 @@ class _Stream:
                 # it to look positive on all boxes.
                 chunk += struct.pack("<L", self.crc & 0xffffffffL)
                 chunk += struct.pack("<L", self.concat_pos & 0xffffFFFFL)
-
             self.__enc_write(chunk)
 
         if close_fileobj and not self._extfileobj:
@@ -824,7 +829,8 @@ class _Stream:
 
             return self.__split_enc_file(buf, last)
         else:
-            return self.fileobj.read(size)
+            buf = self.fileobj.read(size)
+            return buf
 
     def __split_enc_file(self, buf, last):
         if not buf:
index 19b17f5..0df4650 100644 (file)
@@ -27,7 +27,7 @@ from testing.test_deltatar import (DeltaTarTest, DeltaTar2Test,
     DeltaTarStreamTest, DeltaTarGzipTest, DeltaTarGzipStreamTest,
     DeltaTarGzipConcatTest, DeltaTarGzipAes128ConcatTest,
     DeltaTarGzipAes256ConcatTest,
-    #DeltaTarAes128ConcatTest, DeltaTarAes256ConcatTest
+    DeltaTarAes128ConcatTest, DeltaTarAes256ConcatTest
     )
 
 if __name__ == "__main__":