[bug] Return KeyNotFound Failure if not valid key is given to put_raw_key
authorRuben Pollan <meskio@sindominio.net>
Sun, 20 Mar 2016 17:44:23 +0000 (18:44 +0100)
committerRuben Pollan <meskio@sindominio.net>
Sun, 20 Mar 2016 19:01:01 +0000 (20:01 +0100)
- Resolves: #7974

changes/next-changelog.txt
src/leap/keymanager/__init__.py

index 163c1ee..2dd34d4 100644 (file)
@@ -21,6 +21,8 @@ Features
 
 Bugfixes
 ~~~~~~~~
+- `#7974 <https://leap.se/code/issues/7974>`_: Return KeyNotFound Failure if not valid key is given to put_raw_key.
+
 - `#1235 <https://leap.se/code/issues/1235>`_: Description for the fixed stuff corresponding with issue #1235.
 - Bugfix without related issue number.
 
index 9e3b6ee..1106c23 100644 (file)
@@ -820,9 +820,10 @@ class KeyManager(object):
 
         :return: A Deferred which fires when the key is in the storage, or
                  which fails with KeyAddressMismatch if address doesn't match
-                 any uid on the key or fails with KeyNotValidUpdate if a key
-                 with the same uid exists and the new one is not a valid update
-                 for it.
+                 any uid on the key or fails with KeyNotFound if no OpenPGP
+                 material was found in key or fails with KeyNotValidUpdate if a
+                 key with the same uid exists and the new one is not a valid
+                 update for it.
         :rtype: Deferred
 
         :raise UnsupportedKeyTypeError: if invalid key type
@@ -831,6 +832,10 @@ class KeyManager(object):
         _keys = self._wrapper_map[ktype]
 
         pubkey, privkey = _keys.parse_ascii_key(key, address)
+
+        if pubkey is None:
+            return defer.fail(KeyNotFound(key))
+
         pubkey.validation = validation
         d = self.put_key(pubkey)
         if privkey is not None: