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

Bug #1165569 reported by Michał Sawicz
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
Triaged
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)

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

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

Revision history for this message
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.

Revision history for this message
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  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.