diff --git a/gnome-vfs-2.24.xx-cdda-handle-invalid-data.patch b/gnome-vfs-2.24.xx-cdda-handle-invalid-data.patch new file mode 100644 index 0000000..8b80f0c --- /dev/null +++ b/gnome-vfs-2.24.xx-cdda-handle-invalid-data.patch @@ -0,0 +1,84 @@ +From 706b54502b1d3ccb179a4d8b91c585e152bbae81 Mon Sep 17 00:00:00 2001 +From: Alexander Larsson +Date: Mon, 25 May 2009 10:33:59 +0200 +Subject: [PATCH 3/6] cdda: Handle invalid data (#582303) + +Fix for CAN-2005-0706, handle negative values that may appear when +there is invalid input. Patch from openSUSE. + +Note: cdda is disabled by default, so this doesn't affect all users. +--- + modules/cdda-cddb.c | 36 +++++++++++++++++++++--------------- + 1 files changed, 21 insertions(+), 15 deletions(-) + +diff --git a/modules/cdda-cddb.c b/modules/cdda-cddb.c +index ce83b52..0ec4e25 100644 +--- a/modules/cdda-cddb.c ++++ b/modules/cdda-cddb.c +@@ -537,26 +537,30 @@ static void CDDBProcessLine(char *inbuffer,DiscData *data, + else if(!g_ascii_strncasecmp(inbuffer,"TTITLE",6)) { + track=atoi(strtok(inbuffer+6,"=")); + +- if(track= 0 && trackdata_track[track].track_name); + +- strncpy(data->data_track[track].track_name+len, ++ strncpy(data->data_track[track].track_name+len, + ChopWhite(strtok(NULL,"")),256-len); ++ } + } + else if(!g_ascii_strncasecmp(inbuffer,"TARTIST",7)) { + data->data_multi_artist=TRUE; + + track=atoi(strtok(inbuffer+7,"=")); + +- if(track= 0 && trackdata_track[track].track_artist); + +- st = strtok(NULL, ""); +- if(st == NULL) +- return; +- +- strncpy(data->data_track[track].track_artist+len, ++ st = strtok(NULL, ""); ++ if(st == NULL) ++ return; ++ ++ strncpy(data->data_track[track].track_artist+len, + ChopWhite(st),256-len); ++ } + } + else if(!g_ascii_strncasecmp(inbuffer,"EXTD",4)) { + len=strlen(data->data_extended); +@@ -566,15 +570,17 @@ static void CDDBProcessLine(char *inbuffer,DiscData *data, + else if(!g_ascii_strncasecmp(inbuffer,"EXTT",4)) { + track=atoi(strtok(inbuffer+4,"=")); + +- if(track= 0 && trackdata_track[track].track_extended); + +- st = strtok(NULL, ""); +- if(st == NULL) +- return; +- +- strncpy(data->data_track[track].track_extended+len, +- ChopWhite(st),4096-len); ++ st = strtok(NULL, ""); ++ if(st == NULL) ++ return; ++ ++ strncpy(data->data_track[track].track_extended+len, ++ ChopWhite(st),4096-len); ++ } + } + else if(!g_ascii_strncasecmp(inbuffer,"PLAYORDER",5)) { + len=strlen(data->data_playlist); +-- +1.6.3.3 + diff --git a/gnome-vfs-2.24.xx-netware-mounts-as-non-local.patch b/gnome-vfs-2.24.xx-netware-mounts-as-non-local.patch new file mode 100644 index 0000000..92cb203 --- /dev/null +++ b/gnome-vfs-2.24.xx-netware-mounts-as-non-local.patch @@ -0,0 +1,26 @@ +From f732047ada92a99f1f0cd3ceb7b76499789990f8 Mon Sep 17 00:00:00 2001 +From: Alexander Larsson +Date: Mon, 25 May 2009 10:37:14 +0200 +Subject: [PATCH 4/6] Mark netware mounts as non-local (#582304) + +Filesystems of type "novfs" come from Novell Client for Linux, i.e. +they are remote Netware mounts. +--- + modules/file-method.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/modules/file-method.c b/modules/file-method.c +index b74535d..37e4853 100644 +--- a/modules/file-method.c ++++ b/modules/file-method.c +@@ -1273,6 +1273,7 @@ do_is_local (GnomeVFSMethod *method, + (strcmp (type, "afs") != 0) && + (strcmp (type, "autofs") != 0) && + (strcmp (type, "unknown") != 0) && ++ (strcmp (type, "novfs") != 0) && + (strcmp (type, "ncpfs") != 0)); + G_UNLOCK (fstype); + } else { +-- +1.6.3.3 + diff --git a/gnome-vfs-2.24.xx-smb-64k-length.patch b/gnome-vfs-2.24.xx-smb-64k-length.patch new file mode 100644 index 0000000..c33bdb1 --- /dev/null +++ b/gnome-vfs-2.24.xx-smb-64k-length.patch @@ -0,0 +1,26 @@ +From bd5a83f1a6327cbb376ec4915f252f292b5bfb07 Mon Sep 17 00:00:00 2001 +From: Alexander Larsson +Date: Mon, 25 May 2009 10:41:34 +0200 +Subject: [PATCH 5/6] Don't pass in lengths > 64k to smb (#582308) + +There seem to be some limitation in smb that makes this not work. +--- + modules/smb-method.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/modules/smb-method.c b/modules/smb-method.c +index 8042a61..42d6c78 100644 +--- a/modules/smb-method.c ++++ b/modules/smb-method.c +@@ -1646,7 +1646,7 @@ do_read (GnomeVFSMethod *method, + + /* Important: perform_authentication leaves and re-enters the lock! */ + while (perform_authentication (&actx) > 0) { +- n = smb_context->read (smb_context, handle->file, buffer, num_bytes); ++ n = smb_context->read (smb_context, handle->file, buffer, MIN (USHRT_MAX, num_bytes)); + actx.res = (n >= 0) ? GNOME_VFS_OK : gnome_vfs_result_from_errno (); + } + +-- +1.6.3.3 + diff --git a/gnome-vfs-2.24.xx-uninitialized-struct.patch b/gnome-vfs-2.24.xx-uninitialized-struct.patch new file mode 100644 index 0000000..0bac51a --- /dev/null +++ b/gnome-vfs-2.24.xx-uninitialized-struct.patch @@ -0,0 +1,40 @@ +From ddccb959a78b44133716bf9f01c8faa2306c5408 Mon Sep 17 00:00:00 2001 +From: Alexander Larsson +Date: Thu, 16 Apr 2009 09:07:05 +0000 +Subject: [PATCH 1/6] =?utf-8?q?Bug=20500307=20=E2=80=93=20uninitialized=20GnomeVFSFileInfo=20struct=20in=20do=5Fseek()?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +2009-04-16 Alexander Larsson + + Bug 500307 – uninitialized GnomeVFSFileInfo struct in do_seek() + + * modules/sftp-method.c: + (do_seek): + Initialize info to avoid crashes. + Patch from Fabrice Bellet + + +svn path=/trunk/; revision=5551 +--- + ChangeLog | 9 +++++++++ + modules/sftp-method.c | 2 +- + 2 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/modules/sftp-method.c b/modules/sftp-method.c +index 4a53af2..07f0e4e 100644 +--- a/modules/sftp-method.c ++++ b/modules/sftp-method.c +@@ -2387,7 +2387,7 @@ do_seek (GnomeVFSMethod *method, + GnomeVFSContext *context) + { + SftpOpenHandle *handle; +- GnomeVFSFileInfo file_info; ++ GnomeVFSFileInfo file_info = { 0, }; + GnomeVFSResult res; + + DEBUG (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s: Enter", G_STRFUNC)); +-- +1.6.3.3 + diff --git a/gnome-vfs-2.24.xx-utf8-mounts.patch b/gnome-vfs-2.24.xx-utf8-mounts.patch new file mode 100644 index 0000000..3dea873 --- /dev/null +++ b/gnome-vfs-2.24.xx-utf8-mounts.patch @@ -0,0 +1,31 @@ + + gnome-vfs-daemon reads /proc/mounts at startup and uses HAL via + libhal_drive_from_device_file() in multiple places in gnome-vfs-hal-mounts.c + + Strings in DBUS must be valid UTF8. If the device path is not valid UTF8, + dbus_connection_send() will cause a disconnect of the caller and an exit. + + Threfore if the device path contains invalid utf8, gnome-vfs-daemon will fail + to start. If that happens during a session, gnome-vfs-daemon will be restarted + by any gnome application wich cause a lot of start/stop of gnome-vfs-daemon. + + The following patch simply ensures that we use valid utf8 for device path to + avoid problems with hal/dbus. + + Olivier Fourdan + + gnome-vfs-volume-monitor-daemon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff -up gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-volume-monitor-daemon.c.utf8-mount gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-volume-monitor-daemon.c +--- gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-volume-monitor-daemon.c.utf8-mount 2009-07-07 06:10:24.000000000 -0400 ++++ gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-volume-monitor-daemon.c 2009-07-07 06:10:34.000000000 -0400 +@@ -874,7 +874,7 @@ create_vol_from_mount (GnomeVFSVolumeMon + vol = g_object_new (GNOME_VFS_TYPE_VOLUME, NULL); + + vol->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; +- vol->priv->device_path = g_strdup (mount->device_path); ++ vol->priv->device_path = make_utf8 (mount->device_path); + vol->priv->unix_device = 0; /* Caller must fill in. */ + vol->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount->mount_path); + vol->priv->filesystem_type = g_strdup (mount->filesystem_type); diff --git a/gnome-vfs2.spec b/gnome-vfs2.spec index 399e23b..28b58f9 100644 --- a/gnome-vfs2.spec +++ b/gnome-vfs2.spec @@ -14,7 +14,7 @@ Summary: The GNOME virtual file-system libraries Name: gnome-vfs2 Version: 2.24.1 -Release: 5%{?dist} +Release: 6%{?dist} License: LGPLv2+ and GPLv2+ # the daemon and the library are LGPLv2+ # the modules are LGPLv2+ and GPLv2+ @@ -72,6 +72,18 @@ Patch6: gnome-vfs-2.15.91-mailto-command.patch # https://bugzilla.redhat.com/show_bug.cgi?id=335241 Patch300: gnome-vfs-2.20.0-ignore-certain-mountpoints.patch + +# backported from upstream +Patch400: gnome-vfs-2.24.xx-cdda-handle-invalid-data.patch +Patch401: gnome-vfs-2.24.xx-netware-mounts-as-non-local.patch +Patch402: gnome-vfs-2.24.xx-smb-64k-length.patch +Patch403: gnome-vfs-2.24.xx-uninitialized-struct.patch + +# gnome-vfs-daemon exits on dbus, and constantly restarted causing dbus/hal to hog CPU +# https://bugzilla.redhat.com/show_bug.cgi?id=486286 +Patch404: gnome-vfs-2.24.xx-utf8-mounts.patch + + %description GNOME VFS is the GNOME virtual file system. It is the foundation of the Nautilus file manager. It provides a modular architecture and @@ -121,6 +133,12 @@ shares (SMB) to applications using GNOME VFS. %patch300 -p1 -b .ignore-certain-mount-points +%patch400 -p1 -b .cdda-invalid-data +%patch401 -p1 -b .netware +%patch402 -p1 -b .smb-64k +%patch403 -p1 -b .uninitialized-struct +%patch404 -p1 -b .utf8-mounts + # for patch 10 autoheader autoconf @@ -242,6 +260,9 @@ fi %config %{_sysconfdir}/gnome-vfs-2.0/modules/smb-module.conf %changelog +* Tue Aug 4 2009 Tomas Bzatek - 2.24.1-6 +- Backport some upstream patches + * Mon Aug 3 2009 Tomas Bzatek - 2.24.1-5 - Fake POT-Creation-Date to prevent multilib issues (#514990)