Ignore:
Timestamp:
04/09/08 00:29:49 (5 years ago)
Author:
alanbach-guest
Message:
  • New upstream stable release, Sync'd with Debian 2.22.2-1
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pkg/viola/main/nautilus/trunk/debian/patches/07_desktop_file_activation.patch

    r3275 r3516  
    1 See Debian #408556, #408948. 
    2  
    3 --- nautilus-2.21.1.orig/libnautilus-private/nautilus-file.c    2007-12-20 16:48:14.000000000 +0100 
    4 +++ nautilus-2.21.1/libnautilus-private/nautilus-file.c 2008-01-07 15:11:12.000000000 +0100 
    5 @@ -40,6 +40,7 @@ 
     1Fixes two security issues about disguised .desktop files. 
     2Debian #408556, GNOME #405291 
     3Debian #408948, GNOME #405052 
     4diff -Naur nautilus-2.22.0.old/libnautilus-private/nautilus-file.c nautilus-2.22.0/libnautilus-private/nautilus-file.c 
     5--- nautilus-2.22.0.old/libnautilus-private/nautilus-file.c     2008-03-19 16:04:39.000000000 +0100 
     6+++ nautilus-2.22.0/libnautilus-private/nautilus-file.c 2008-03-19 16:06:54.000000000 +0100 
     7@@ -41,6 +41,7 @@ 
    68 #include "nautilus-link.h" 
    79 #include "nautilus-metadata.h" 
     
    1113 #include "nautilus-search-directory-file.h" 
    1214 #include "nautilus-thumbnails.h" 
    13 @@ -2978,6 +2979,33 @@ 
    14                  monitor_remove, (file, client)); 
    15  }                             
     15@@ -1084,6 +1085,46 @@ 
     16        return g_file_get_child (dir, eel_ref_str_peek (file->details->name)); 
     17 } 
    1618  
    1719+static gboolean 
     
    1921+{ 
    2022+       gboolean ret = TRUE; 
    21 +       char *uri = nautilus_file_get_uri (file); 
     23+       GFile *uri = nautilus_file_get_location (file); 
    2224+       char *path = NULL; 
     25+       char *scheme = NULL; 
    2326+ 
    2427+       if (uri) { 
    25 +               path = gnome_vfs_get_local_path_from_uri (uri); 
     28+               path = g_file_get_parse_name (uri); 
    2629+       } 
    2730+ 
     
    3235+               ret = FALSE; 
    3336+       } 
     37+        
     38+       scheme = g_file_get_uri_scheme (file); 
     39+       if (scheme != NULL && strncmp (scheme, "file://", 7) == 0) { 
     40+         char *path_tmp = path + 7; 
    3441+ 
    35 +       if (file->details->info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_IDS && 
    36 +           file->details->info->uid && 
    37 +           (uid_t) file->details->info->uid != geteuid ()) 
     42+         if (eel_str_has_prefix (path, "/mnt") || 
     43+             eel_str_has_prefix (path, "/media")) { 
     44+               ret = FALSE; 
     45+         } 
     46+       } 
     47+       g_free (scheme); 
     48+ 
     49+       if (file->details->uid != -1 && 
     50+           file->details->uid != 0 && 
     51+           (uid_t) file->details->uid != geteuid ()) 
    3852+               ret = FALSE; 
    3953+ 
    40 +       g_free (uri); 
     54+       g_object_unref (uri); 
    4155+       g_free (path); 
    4256+       return ret; 
    4357+} 
    44   
    45  /* Return the uri associated with the passed-in file, which may not be 
    46   * the actual uri if the file is an desktop file or a nautilus 
    47 @@ -2988,7 +3016,9 @@ 
     58+ 
     59 /* Return the actual uri associated with the passed-in file. */ 
     60 char * 
     61 nautilus_file_get_uri (NautilusFile *file) 
     62@@ -3053,7 +3094,8 @@ 
    4863 { 
    4964        g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL); 
    5065  
    5166-       if (file->details->activation_location != NULL) { 
    52 +       if ((file->details->activation_location != NULL) && 
    53 +           (!eel_str_has_prefix (file->details->activation_location, NAUTILUS_DESKTOP_COMMAND_SPECIFIER) || 
    54 +                safe_to_launch_desktop_file (file))) { 
     67+       if (file->details->activation_location != NULL && 
     68+           safe_to_launch_desktop_file (file)) { 
    5569                return g_file_get_uri (file->details->activation_location); 
    5670        } 
    5771         
    58 @@ -5764,6 +5794,12 @@ 
    59         return nautilus_file_is_mime_type (file, "application/x-desktop"); 
     72@@ -3065,7 +3107,8 @@ 
     73 { 
     74        g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL); 
     75  
     76-       if (file->details->activation_location != NULL) { 
     77+       if (file->details->activation_location != NULL && 
     78+           safe_to_launch_desktop_file (file)) { 
     79                return g_object_ref (file->details->activation_location); 
     80        } 
     81         
     82diff -Naur nautilus-2.22.0.old/libnautilus-private/nautilus-mime-actions.c nautilus-2.22.0/libnautilus-private/nautilus-mime-actions.c 
     83--- nautilus-2.22.0.old/libnautilus-private/nautilus-mime-actions.c     2008-03-19 16:04:39.000000000 +0100 
     84+++ nautilus-2.22.0/libnautilus-private/nautilus-mime-actions.c 2008-03-19 16:04:48.000000000 +0100 
     85@@ -727,7 +727,8 @@ 
     86 { 
     87   return (nautilus_file_is_directory (file) || 
     88          NAUTILUS_IS_DESKTOP_ICON_FILE (file) || 
     89-         nautilus_file_is_nautilus_link (file)); 
     90+         (nautilus_file_is_nautilus_link (file) && 
     91+          !nautilus_file_is_launcher (file))); 
    6092 } 
    6193  
    62 +gboolean 
    63 +nautilus_file_is_desktop_launcher (NautilusFile *file) 
    64 +{ 
    65 +       return eel_str_has_prefix (file->details->activation_uri, NAUTILUS_DESKTOP_COMMAND_SPECIFIER); 
    66 +} 
    67 + 
    68  /** 
    69   * nautilus_file_is_directory 
    70   *  
    71 --- nautilus-2.21.1.orig/src/file-manager/fm-directory-view.c   2008-01-07 14:35:36.000000000 +0100 
    72 +++ nautilus-2.21.1/src/file-manager/fm-directory-view.c        2008-01-07 15:21:57.000000000 +0100 
    73 @@ -4197,9 +4197,11 @@ 
    74         for (node = selection; node != NULL; node = node->next) { 
     94 static ActivationAction 
     95diff -Naur nautilus-2.22.0.old/src/file-manager/fm-directory-view.c nautilus-2.22.0/src/file-manager/fm-directory-view.c 
     96--- nautilus-2.22.0.old/src/file-manager/fm-directory-view.c    2008-03-19 16:04:39.000000000 +0100 
     97+++ nautilus-2.22.0/src/file-manager/fm-directory-view.c        2008-03-19 16:04:48.000000000 +0100 
     98@@ -4264,9 +4264,11 @@ 
     99  
    75100                file = NAUTILUS_FILE (node->data); 
    76101  
     
    78103-                       (!nautilus_mime_file_opens_in_view (file) || 
    79104-                        nautilus_file_is_directory (file)); 
    80 +               if (activation_action != ACTIVATION_ACTION_OPEN_IN_APPLICATION && 
    81 +                       (NAUTILUS_IS_DESKTOP_ICON_FILE (file) || 
    82 +                            nautilus_file_is_nautilus_link (file))) { 
     105+               if (nautilus_mime_file_opens_in_external_app (file) && 
     106+                   (NAUTILUS_IS_DESKTOP_ICON_FILE (file) || 
     107+                    nautilus_file_is_nautilus_link (file))) { 
    83108+                       other_applications_visible = FALSE; 
    84109+               } 
     
    86111  
    87112        default_app = NULL; 
    88 --- nautilus-2.21.1.orig/libnautilus-private/nautilus-file.h    2007-12-14 11:25:48.000000000 +0100 
    89 +++ nautilus-2.21.1/libnautilus-private/nautilus-file.h 2008-01-07 15:03:55.000000000 +0100 
    90 @@ -177,6 +177,7 @@ 
    91  char *                  nautilus_file_get_symbolic_link_target_uri      (NautilusFile                   *file); 
    92  gboolean                nautilus_file_is_broken_symbolic_link           (NautilusFile                   *file); 
    93  gboolean                nautilus_file_is_nautilus_link                  (NautilusFile                   *file); 
    94 +gboolean                nautilus_file_is_desktop_launcher               (NautilusFile                   *file); 
    95  gboolean                nautilus_file_is_executable                     (NautilusFile                   *file); 
    96  gboolean                nautilus_file_is_directory                      (NautilusFile                   *file); 
    97  gboolean                nautilus_file_is_in_trash                       (NautilusFile                   *file); 
    98 --- nautilus-2.21.1.orig/libnautilus-private/nautilus-mime-actions.c    2008-01-07 15:18:21.000000000 +0100 
    99 +++ nautilus-2.21.1/libnautilus-private/nautilus-mime-actions.c 2008-01-07 15:19:14.000000000 +0100 
    100 @@ -702,7 +702,8 @@ 
    101  { 
    102    return (nautilus_file_is_directory (file) || 
    103           NAUTILUS_IS_DESKTOP_ICON_FILE (file) || 
    104 -         nautilus_file_is_nautilus_link (file)); 
    105 +         (nautilus_file_is_nautilus_link (file) && 
    106 +              !nautilus_file_is_desktop_launcher (file))); 
    107  } 
    108   
    109  static ActivationAction 
Note: See TracChangeset for help on using the changeset viewer.