[Bug 1381050] Re: "Import Key File" fails when the path of the file has special characters

Bruno Nova 1381050 at bugs.launchpad.net
Tue Jul 7 19:10:02 UTC 2015


** Description changed:

+ [Impact]
+ 
+ Importing a key that is in a path that contains special characters (like
+ "/home/$USER/Transferências") fails silently.
+ 
+ [Test Case]
+ 
+ 1. Download a PGP key for a Debian repository (for example, the VideoLAN
+    team's key: download.videolan.org/pub/debian/videolan-apt.asc)
+ 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/$USER/Downloads" folder is named "/home/$USER/Transferências" here.
  Adding a key from that folder fails, but adding a key from "/home/$USER" (no special characters) succeeds.
  
  The problem is that, in softwareproperties/gtk/SoftwarePropertiesGtk.py
  in method SoftwarePropertiesGtk.add_key_clicked() at around line 952:
  
-         if res == Gtk.ResponseType.ACCEPT:
-             try:
-                 if not self.backend.AddKey(chooser.get_filename()):
-                     error(self.window_main,
-                           _("Error importing selected file"),
-                           _("The selected file may not be a GPG key file "
-                             "or it might be corrupt."))
-             except dbus.DBusException as e:
-                 if e._dbus_error_name == 'com.ubuntu.SoftwareProperties.PermissionDeniedByPolicy':
-                     logging.error("Authentication canceled, changes have not been saved")
+         if res == Gtk.ResponseType.ACCEPT:
+             try:
+                 if not self.backend.AddKey(chooser.get_filename()):
+                     error(self.window_main,
+                           _("Error importing selected file"),
+                           _("The selected file may not be a GPG key file "
+                             "or it might be corrupt."))
+             except dbus.DBusException as e:
+                 if e._dbus_error_name == 'com.ubuntu.SoftwareProperties.PermissionDeniedByPolicy':
+                     logging.error("Authentication canceled, changes have not been saved")
  
  "self.backend.AddKey(chooser.get_filename())" throws a "org.freedesktop.DBus.Python.UnicodeEncodeError" exception for paths with special characters.
  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-properties-gtk 0.92.37.1
  ProcVersionSignature: Ubuntu 3.13.0-37.64-generic 3.13.11.7
  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)
  PackageArchitecture: all
  SourcePackage: software-properties
  UpgradeStatus: No upgrade log present (probably fresh install)

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to software-properties in Ubuntu.
https://bugs.launchpad.net/bugs/1381050

Title:
  "Import Key File" fails when the path of the file has special
  characters

Status in software-properties package in Ubuntu:
  Fix Released
Status in software-properties source package in Trusty:
  In Progress

Bug description:
  [Impact]

  Importing a key that is in a path that contains special characters
  (like "/home/$USER/Transferências") fails silently.

  [Test Case]

  1. Download a PGP key for a Debian repository (for example, the VideoLAN
     team's key: download.videolan.org/pub/debian/videolan-apt.asc)
  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/$USER/Downloads" folder is named "/home/$USER/Transferências" here.
  Adding a key from that folder fails, but adding a key from "/home/$USER" (no special characters) succeeds.

  The problem is that, in
  softwareproperties/gtk/SoftwarePropertiesGtk.py in method
  SoftwarePropertiesGtk.add_key_clicked() at around line 952:

          if res == Gtk.ResponseType.ACCEPT:
              try:
                  if not self.backend.AddKey(chooser.get_filename()):
                      error(self.window_main,
                            _("Error importing selected file"),
                            _("The selected file may not be a GPG key file "
                              "or it might be corrupt."))
              except dbus.DBusException as e:
                  if e._dbus_error_name == 'com.ubuntu.SoftwareProperties.PermissionDeniedByPolicy':
                      logging.error("Authentication canceled, changes have not been saved")

  "self.backend.AddKey(chooser.get_filename())" throws a "org.freedesktop.DBus.Python.UnicodeEncodeError" exception for paths with special characters.
  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-properties-gtk 0.92.37.1
  ProcVersionSignature: Ubuntu 3.13.0-37.64-generic 3.13.11.7
  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)
  PackageArchitecture: all
  SourcePackage: software-properties
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1381050/+subscriptions



More information about the foundations-bugs mailing list