add-apt-repository crashes in non-UTF locale with UTF in key description

Bug #1165569 reported by Michał Sawicz on 2013-04-06
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
High
Unassigned

Bug Description

When using add-apt-repository under non-UTF locale to add a PPA with non-ascii characters, the following crash happens:

gpg: keyring `/tmp/tmp01qdlw/secring.gpg' created
gpg: keyring `/tmp/tmp01qdlw/pubring.gpg' created
gpg: requesting key 95BF72AD from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp01qdlw/trustdb.gpg: trustdb created
gpg: key 95BF72AD: public key "Launchpad PPA for Micha\xc5\x82 Sawicz" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.3/threading.py", line 639, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 141, in run
    self.add_ppa_signing_key(self.ppa_path)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 238, in add_ppa_signing_key
    tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir):
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 190, in _verify_fingerprint
    got_fingerprints = self._get_fingerprints(keyring, keyring_dir)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 182, in _get_fingerprints
    output = subprocess.check_output(cmd, universal_newlines=True)
  File "/usr/lib/python3.3/subprocess.py", line 575, in check_output
    output, unused_err = process.communicate(timeout=timeout)
  File "/usr/lib/python3.3/subprocess.py", line 909, in communicate
    stdout = _eintr_retry_call(self.stdout.read)
  File "/usr/lib/python3.3/subprocess.py", line 476, in _eintr_retry_call
    return func(*args)
  File "/usr/lib/python3.3/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 94: ordinal not in range(128)

ProblemType: Bug
DistroRelease: Ubuntu 13.04
Package: software-properties-common 0.92.17
ProcVersionSignature: Ubuntu 3.8.0-7.16-generic 3.8.0
Uname: Linux 3.8.0-7-generic x86_64
NonfreeKernelModules: wl nvidia
ApportVersion: 2.9.2-0ubuntu5
Architecture: amd64
Date: Sun Apr 7 00:19:57 2013
MarkForUpload: True
PackageArchitecture: all
SourcePackage: software-properties
UpgradeStatus: No upgrade log present (probably fresh install)

Michał Sawicz (saviq) wrote :
Changed in software-properties (Ubuntu):
importance: Undecided → High
status: New → Triaged
Nick Østergaard (nickoe) wrote :

This still happens in Ubuntu 14.04.1 LTS, with python-software-properties 0.92.36.

Nick Østergaard (nickoe) wrote :

Hmm, I had export LANG=C, then I started a new terminal such that the LANG variable was da_DK.UTF-8, then it succeed without error.

g (wgordonw1) wrote :

On a default 14.04.2 server install one can do the following to get around this issue:

****** THE FOLLOWING FAILS ********

$ sudo add-apt-repository --yes ppa:ts.sch.gr/ppa
gpg: keyring `/tmp/tmp72b1dl0x/secring.gpg' created
gpg: keyring `/tmp/tmp72b1dl0x/pubring.gpg' created
gpg: requesting key 03AFA832 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp72b1dl0x/trustdb.gpg: trustdb created
gpg: key 03AFA832: public key "\xce\x91\xcf\x80\xce\xbf\xce\xb8\xce\xb5\xcf\x84\xce\xae\xcf\x81\xce\xb9\xce\xbf \xce\xa4\xce\xb5\xcf\x87\xce\xbd\xce\xb9\xce\xba\xce\xae\xcf\x82 \xce\xa3\xcf\x84\xce\xae\xcf\x81\xce\xb9\xce\xbe\xce\xb7\xcf\x82 \xce\xa3\xce\x95\xce\xa0\xce\x95\xce\x97\xce\xa5" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.4/threading.py", line 868, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 687, in addkey_func
    func(**kwargs)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 370, in add_key
    return apsk.add_ppa_signing_key()
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 261, in add_ppa_signing_key
    tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir):
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 210, in _verify_fingerprint
    got_fingerprints = self._get_fingerprints(keyring, keyring_dir)
  File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 202, in _get_fingerprints
    output = subprocess.check_output(cmd, universal_newlines=True)
  File "/usr/lib/python3.4/subprocess.py", line 605, in check_output
    output, unused_err = process.communicate(inputdata, timeout=timeout)
  File "/usr/lib/python3.4/subprocess.py", line 936, in communicate
    stdout = _eintr_retry_call(self.stdout.read)
  File "/usr/lib/python3.4/subprocess.py", line 487, in _eintr_retry_call
    return func(*args)
  File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 71: ordinal not in range(128)

***** THE FOLLOWING SUCCEEDS *******

$ export LANG=C.UTF-8
$ sudo add-apt-repository --yes ppa:ts.sch.gr
gpg: keyring `/tmp/tmp07_sm4eg/secring.gpg' created
gpg: keyring `/tmp/tmp07_sm4eg/pubring.gpg' created
gpg: requesting key 03AFA832 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp07_sm4eg/trustdb.gpg: trustdb created
gpg: key 03AFA832: public key "Αποθετήριο Τεχνικής Στήριξης ΣΕΠΕΗΥ" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers