Control: tags -1 +patch +pending +unreproducible On 2013-09-16 17:37:15, Joey Hess wrote: [...] > File "/usr/lib/python2.7/dist-packages/monkeysign/gtkui.py", line 222, in > __init__ > self.mykey.append_text(key.uidslist[0].uid) > AttributeError: OpenPGPkey instance has no attribute 'uidslist' > > I determined this crash was due to one of these two keys. > These are old keys I have lying around, that I don't know what I used > them for, and that do not have a uid. I bet the lack of uid is the problem. > > sec 1024D/16D0B8EF 2003-09-11 > ssb 1024g/FBA4BC10 2003-09-11 > > sec 1024D/788A3F4C 1999-09-08 > ssb 2048g/1950ED18 1999-09-08
Hi joeyh, It's very hard to reproduce your problem because, of course, I do not have access to old private key material such as yours. But I have tried to fix this anyways. Please try the attached patch:
>From 006a29582bf891c45ba7885792eb76931185935d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= <anar...@debian.org> Date: Thu, 1 Sep 2016 19:09:45 -0400 Subject: [PATCH] skip keys without uids (Closes: #723152) notice how we unconditionnally set uidslist now - not sure why we were doing that before --- monkeysign/gpg.py | 2 +- monkeysign/gtkui.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/monkeysign/gpg.py b/monkeysign/gpg.py index f477e78..8864780 100644 --- a/monkeysign/gpg.py +++ b/monkeysign/gpg.py @@ -737,7 +737,7 @@ def parse_gpg_list(self, text): pass else: raise NotImplementedError(_("record type '%s' not implemented") % rectype) - if uidslist: self.uidslist = uidslist + self.uidslist = uidslist def __str__(self): diff --git a/monkeysign/gtkui.py b/monkeysign/gtkui.py index 394ba1e..fb285b2 100644 --- a/monkeysign/gtkui.py +++ b/monkeysign/gtkui.py @@ -278,6 +278,9 @@ def create_secret_keys_display(self): for key in Keyring().get_keys(None, True, False).values(): if key.invalid or key.disabled or key.expired or key.revoked: continue + # weird key without uids, skip (see BTS#723152) + if not key.uidslist: + continue uid = key.uidslist[0].uid self.uimanager.add_ui(self.uimanager.new_merge_id(), '/menu/identity', key.fpr, key.fpr, gtk.UI_MANAGER_AUTO, True) action = gtk.RadioAction(key.fpr, "%s (%s)" % (uid, key.keyid()), str(key), None, i) -- 2.1.4
Also available here: https://0xacab.org/monkeysphere/monkeysign/commit/006a29582bf891c45ba7885792eb76931185935d Thanks for the bug report! A. -- La nature n'a créé ni maîtres ni esclaves Je ne veux ni donner ni recevoir de lois. - Denis Diderot