fix fallout from EOF changes in CLI decryptor
authorPhilipp Gesang <philipp.gesang@intra2net.com>
Mon, 10 Apr 2017 13:08:31 +0000 (15:08 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 2 Apr 2018 11:34:08 +0000 (13:34 +0200)
deltatar/crypto.py

index 834b8ac..6970786 100755 (executable)
@@ -96,8 +96,9 @@ class EndOfFile (Exception):
     remainder = 0
     msg       = 0
     def __init__ (self, n=None, msg=None):
-        self.remainder = n
-        self.msg       = msg
+        if n is not None:
+            self.remainder = n
+        self.msg = msg
 
 
 class InvalidParameter (Exception):
@@ -688,7 +689,7 @@ class Decrypt (Crypto):
                                             % type (tag))
                 data = self.enc.finalize_with_tag (self.tag)
         except cryptography.exceptions.InvalidTag:
-            return InvalidGCMTag ("done: tag mismatch of object %d: %r "
+            raise InvalidGCMTag ("done: tag mismatch of object %d: %r "
                                   "rejected by finalize ()"
                                   % (self.cnt, self.tag))
         self.ctsize += len (data)
@@ -766,10 +767,11 @@ def depdtcrypt (pw, ins, outs):
             if ctleft == 0: # current object requires finalization
                 if PDTCRYPT_VERBOSE is True:
                     noise ("PDT: %d finalize" % tell (ins))
-                ret, pt = decr.done ()
-                if ret is False:
-                    raise DecryptionError ("error finalizing object (%s)"
-                                           % pt)
+                try:
+                    pt = decr.done ()
+                except InvalidGCMTag as exn:
+                    raise DecryptionError ("error finalizing object (%s): %r"
+                                           % (pt, exn))
                 out (pt)
                 if PDTCRYPT_VERBOSE is True:
                     noise ("PDT:\t· object validated")