]> thyrsus.com Git - ssh-installkeys.git/commitdiff
Make the code robust against comments and garbage in key lines.
authorEric S. Raymond <esr@thyrsus.com>
Sun, 1 Apr 2012 20:33:26 +0000 (16:33 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 1 Apr 2012 20:33:26 +0000 (16:33 -0400)
ssh-installkeys

index 524fb7a95345b3d0fe72abf0906cf62f17a0c3f1..74c602b9de4b27debe915bc4c24cebdef97f353a 100755 (executable)
@@ -1961,14 +1961,18 @@ class KeyConfig(ConfigParser.RawConfigParser):
         keydict = {}
         for line in authorized.split("\n"):
             if line:
-                (keytype, content, keyid) = line.strip().split()
-                if keyid not in keydict:
-                    keydict[keyid] = []
-                keydict[keyid].append(keytype)
-        self.remove_section(session.host)
-        self.add_section(session.host)
-        for (keyid, types) in keydict.items():
-            self.set(session.host, keyid, ",".join(types))
+                try:
+                    (keytype, content, keyid) = line.strip().split()
+                    if keyid not in keydict:
+                        keydict[keyid] = []
+                    keydict[keyid].append(keytype)
+                except ValueError:
+                    print "unexpected format in key line ''." % repr(line)
+        if keydict:
+            self.remove_section(session.host)
+            self.add_section(session.host)
+            for (keyid, types) in keydict.items():
+                self.set(session.host, keyid, ",".join(types))
     def forget(self, host):
         self.remove_section(host)