-
Notifications
You must be signed in to change notification settings - Fork 40
Closed
Description
Describe the bug
The version of gpg is not retrieved when certain gpg config options are present.
To Reproduce
Steps to reproduce the behavior:
- Create a gpg config file in
~/.gnupg/gpg.confwith a group defined (e.g.,group somegroup = D8AFDDA07A5B6EDFA7D8CCDAD6D055F927843F1C) python -c 'import gnupg; gnupg.GPG().list_keys()'
Expected behavior
No crash
Actual behavior
Crash
$ python -c 'import gnupg; gnupg.GPG().list_keys()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
import gnupg; gnupg.GPG().list_keys()
~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/site-packages/gnupg.py", line 1835, in list_keys
if self.version >= (2, 1):
^^^^^^^^^^^^^^^^^^^^^^
TypeError: '>=' not supported between instances of 'NoneType' and 'tuple'
Environment
- Arch Linux
- gpg
2.4.7 - python-gnupg
0.5.4
Additional information
Groups are reported in the gpg output before the version:
$ gpg --list-config --with-colons
cfg:group:somegroup:D8AFDDA07A5B6EDFA7D8CCDAD6D055F927843F1C
cfg:version:2.4.7
cfg:pubkey:1;16;17;18;19;22
cfg:pubkeyname:RSA;ELG;DSA;ECDH;ECDSA;EDDSA
[..snip..]
When checking the version, python-gnupg retrieves all options, but the version checking regex assumes that the first output is the version:
Lines 1147 to 1157 in fcc8ebe
| try: | |
| p = self._open_subprocess(['--list-config', '--with-colons']) | |
| except OSError: | |
| msg = 'Unable to run gpg (%s) - it may not be available.' % self.gpgbinary | |
| logger.exception(msg) | |
| raise OSError(msg) | |
| result = self.result_map['verify'](self) # any result will do for this | |
| self._collect_output(p, result, stdin=p.stdin) | |
| if p.returncode != 0: # pragma: no cover | |
| raise ValueError('Error invoking gpg: %s: %s' % (p.returncode, result.stderr)) | |
| m = VERSION_RE.match(result.data) |
Line 1056 in fcc8ebe
| VERSION_RE = re.compile(r'^cfg:version:(\d+(\.\d+)*)'.encode('ascii')) |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels