"Import Key File" fails when the path of the file has special characters
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| software-properties (Ubuntu) |
Medium
|
Unassigned | ||
| Trusty |
Medium
|
Unassigned |
Bug Description
[Impact]
Importing a key that is in a path that contains special characters (like "/home/
[Test Case]
1. Download a PGP key for a Debian repository (for example, the VideoLAN
team's key: download.
2. Move the key file to a folder that contains special characters, or rename
the file to contain them (example: VídeoLAN.asc).
3. Open "Software & Updates" from the Dash, then select the Authentication
tab.
4. Press the "Import Key File..." button and then choose the key file.
Admin authentication should then be requested, so authenticate yourself.
If the bug is fixed: the key should now appear in the list of keys.
If not: the key was not added.
[Regression Potential]
If the fix is not correct, I suppose it could potentially break the "import key" feature even more, so it wouldn't work even in "normal" paths.
[Original Report]
The "Import Key File..." button in the "Authentication" tab fails silently when the path of the selected key file includes special characters.
I'm using Ubuntu in Portuguese, so the "/home/
Adding a key from that folder fails, but adding a key from "/home/$USER" (no special characters) succeeds.
The problem is that, in softwarepropert
if res == Gtk.ResponseTyp
try:
if not self.backend.
except dbus.DBusException as e:
if e._dbus_error_name == 'com.ubuntu.
"self.backend.
This is probably a side effect of switching from Python 2 to 3 (and 'bytes' now being used in network communications where 'str' was previously used).
Another issue is that the error isn't reported to the user, and it should be.
ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: software-
ProcVersionSign
Uname: Linux 3.13.0-37-generic x86_64
ApportVersion: 2.14.1-0ubuntu3.5
Architecture: amd64
CurrentDesktop: Unity
Date: Tue Oct 14 13:22:21 2014
EcryptfsInUse: Yes
InstallationDate: Installed on 2014-10-13 (0 days ago)
InstallationMedia: Ubuntu 14.04.1 LTS "Trusty Tahr" - Release amd64 (20140722.2)
PackageArchitec
SourcePackage: software-properties
UpgradeStatus: No upgrade log present (probably fresh install)
Related branches
- Michael Vogt: Approve on 2014-11-21
-
Diff: 11 lines (+1/-0)1 file modifiedsoftwareproperties/SoftwareProperties.py (+1/-0)
- Brian Murray: Approve on 2015-07-08
- Michael Vogt: Approve on 2015-07-07
-
Diff: 47 lines (+6/-5)2 files modifiedsoftwareproperties/SoftwareProperties.py (+2/-4)
softwareproperties/gtk/SoftwarePropertiesGtk.py (+4/-1)
- Brian Murray: Needs Fixing on 2015-09-02
- Michael Vogt: Pending requested 2015-08-12
-
Diff: 16 lines (+3/-2)1 file modifiedsoftwareproperties/SoftwareProperties.py (+3/-2)
Bruno Nova (brunonova) wrote : | #1 |
Bruno Nova (brunonova) wrote : | #2 |
Bruno Nova (brunonova) wrote : | #3 |
I finally found the cause of the problem!
It seems that the DBus service (or the whole DBus) is not running in a UTF-8 locale, thus causing errors in UTF-8 strings.
The workaround is to edit softwarepropert
path = path.encode(
in method "def add_key(self, path)" around line 800 before the line:
if not os.path.
This encoding issue may be causing problems in other parts of the program, and other programs.
Meanwhile, I found another bug:
Dragging and dropping a key file to the list doesn't work, raising an exception:
Traceback (most recent call last):
File "/usr/lib/
keydata = selection.
AttributeError: 'SelectionData' object has no attribute 'data'
Bruno Nova (brunonova) wrote : | #4 |
Reported that other bug I mentioned in Bug #1383289.
Brian Murray (brian-murray) wrote : | #5 |
Michael - Could you have a look at this?
Changed in software-properties (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
assignee: | nobody → Michael Vogt (mvo) |
Launchpad Janitor (janitor) wrote : | #6 |
This bug was fixed in the package software-properties - 0.96.1
---------------
software-properties (0.96.1) vivid; urgency=low
* fix autopkgtest failure
-- Michael Vogt <email address hidden> Mon, 01 Dec 2014 08:04:47 +0100
Changed in software-properties (Ubuntu): | |
status: | Triaged → Fix Released |
Changed in software-properties (Ubuntu Trusty): | |
status: | New → In Progress |
importance: | Undecided → Medium |
description: | updated |
Hello Bruno, or anyone else affected,
Accepted software-properties into trusty-proposed. The package will build now and be available at https:/
Please help us by testing this new package. See https:/
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-
Further information regarding the verification process can be found at https:/
Changed in software-properties (Ubuntu Trusty): | |
status: | In Progress → Fix Committed |
tags: | added: verification-needed |
Bruno Nova (brunonova) wrote : | #8 |
I updated to -proposed and tested but, unfortunately, the bug isn't fixed!
The other bug is fixed, though.
Adding a key in "/home/
However, if I run software-
After further investigation, I would say that software-
I checked the file "/proc/
@Michael, that's probably why I said that the fix with your changes worked (https:/
It seems that your simplification doesn't work after all. :)
@Michael, check the diff here: https:/
Adding that line fixes this bug, I've checked it now.
Do you want to make this change yourself, or shall I do it?
tags: |
added: verification-failed removed: verification-needed |
Brian Murray (brian-murray) wrote : | #9 |
I've followed the test case provided for Wily and the bug does not seem fixed there either, so I am going to set the task back to In Progress and look at Bruno Nova's change that was missed.
Changed in software-properties (Ubuntu): | |
status: | Fix Released → In Progress |
assignee: | Michael Vogt (mvo) → Brian Murray (brian-murray) |
Brian Murray (brian-murray) wrote : | #10 |
Using the change provided (path = path.encode(
Brian Murray (brian-murray) wrote : | #11 |
Here is the Traceback I see
ipdb> n
dbus.exceptions
File "/usr/lib/
retval = candidate_
File "/usr/lib/
return self.add_key(path)
File "/usr/lib/
path = path.encode(
File "/usr/lib/
os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in position 58: ordinal not in range(128)
Bruno Nova (brunonova) wrote : | #12 |
I added a comment to the merge request.
Changed in software-properties (Ubuntu Trusty): | |
status: | Fix Committed → In Progress |
Mathew Hodson (mhodson) wrote : | #13 |
https:/
The new software-properties 0.92.37.5 package reverted the changes for "fix importing keys from path with special chars" so this bug shouldn't block the SRU of the new package.
tags: | removed: verification-failed |
Launchpad Janitor (janitor) wrote : | #14 |
This bug was fixed in the package software-properties - 0.92.37.5
---------------
software-properties (0.92.37.5) trusty-proposed; urgency=medium
* cloudarchive: Enable support for the Liberty Ubuntu Cloud Archive on
14.04 (LP: #1472586).
* Revert SRU changes for "fix importing keys from path with special chars"
due to verification-failed in trusty-proposed.
-- Corey Bryant <email address hidden> Wed, 02 Sep 2015 12:31:11 -0400
Changed in software-properties (Ubuntu Trusty): | |
status: | In Progress → Fix Released |
Changed in software-properties (Ubuntu Trusty): | |
status: | Fix Released → In Progress |
Changed in software-properties (Ubuntu): | |
assignee: | Brian Murray (brian-murray) → nobody |
status: | In Progress → Triaged |
Changed in software-properties (Ubuntu Trusty): | |
status: | In Progress → Triaged |
Changed in software-properties (Ubuntu Trusty): | |
status: | Triaged → Confirmed |
Changed in software-properties (Ubuntu Trusty): | |
status: | Confirmed → Triaged |
Here's a traceback of the exception:
org.freedesktop .DBus.Python. UnicodeEncodeEr ror: Traceback (most recent call last): python3/ dist-packages/ dbus/service. py", line 707, in _message_cb method( self, *args, **keywords) python3/ dist-packages/ softwarepropert ies/dbus/ SoftwarePropert iesDBus. py", line 288, in AddKey python3/ dist-packages/ softwarepropert ies/SoftwarePro perties. py", line 800, in add_key exists( path): python3. 4/genericpath. py", line 19, in exists
File "/usr/lib/
retval = candidate_
File "/usr/lib/
return self.add_key(path)
File "/usr/lib/
if not os.path.
File "/usr/lib/
os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode character '\xea' in position 20: ordinal not in range(128)