diff options
author | 2007-02-12 19:14:05 +0000 | |
---|---|---|
committer | 2007-02-12 19:14:05 +0000 | |
commit | 3c36c16e12ba644e9a140cf12102ad248ebd1840 (patch) | |
tree | 2bd33e074ae83f67ba942cca8d548498b1b9972a /xfce-base | |
parent | stable x86; bug 163541 (diff) | |
download | gentoo-2-3c36c16e12ba644e9a140cf12102ad248ebd1840.tar.gz gentoo-2-3c36c16e12ba644e9a140cf12102ad248ebd1840.tar.bz2 gentoo-2-3c36c16e12ba644e9a140cf12102ad248ebd1840.zip |
Fix unaligned memory access in exif code -patch from upstream bugzilla.
(Portage version: 2.1.2-r9)
Diffstat (limited to 'xfce-base')
-rw-r--r-- | xfce-base/thunar/ChangeLog | 9 | ||||
-rw-r--r-- | xfce-base/thunar/files/digest-thunar-0.8.0-r2 | 3 | ||||
-rw-r--r-- | xfce-base/thunar/files/thunar-0.8.0-jpeg.patch | 168 | ||||
-rw-r--r-- | xfce-base/thunar/thunar-0.8.0-r2.ebuild | 73 |
4 files changed, 252 insertions, 1 deletions
diff --git a/xfce-base/thunar/ChangeLog b/xfce-base/thunar/ChangeLog index caf28e7f1177..d66b470d65a9 100644 --- a/xfce-base/thunar/ChangeLog +++ b/xfce-base/thunar/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for xfce-base/thunar # Copyright 2000-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/xfce-base/thunar/ChangeLog,v 1.18 2007/02/04 17:11:37 drac Exp $ +# $Header: /var/cvsroot/gentoo-x86/xfce-base/thunar/ChangeLog,v 1.19 2007/02/12 19:14:05 drac Exp $ + +*thunar-0.8.0-r2 (12 Feb 2007) + + 12 Feb 2007; Samuli Suominen <drac@gentoo.org> + +files/thunar-0.8.0-jpeg.patch, +thunar-0.8.0-r2.ebuild: + Fix unaligned memory access in exif code -patch from upstream bugzilla, bug + 2880. *thunar-0.8.0-r1 (04 Feb 2007) diff --git a/xfce-base/thunar/files/digest-thunar-0.8.0-r2 b/xfce-base/thunar/files/digest-thunar-0.8.0-r2 new file mode 100644 index 000000000000..36154971d4f9 --- /dev/null +++ b/xfce-base/thunar/files/digest-thunar-0.8.0-r2 @@ -0,0 +1,3 @@ +MD5 9f7b0945d6a235391049f6818fb4d188 Thunar-0.8.0.tar.bz2 6205993 +RMD160 95d29cca64c102b7d8bdcc0592f6fcab7198148b Thunar-0.8.0.tar.bz2 6205993 +SHA256 460484f8397a0e0e4115d1629d2ae027b5052dc2c564d4a4629a3557e4a055f9 Thunar-0.8.0.tar.bz2 6205993 diff --git a/xfce-base/thunar/files/thunar-0.8.0-jpeg.patch b/xfce-base/thunar/files/thunar-0.8.0-jpeg.patch new file mode 100644 index 000000000000..5c9b28f61565 --- /dev/null +++ b/xfce-base/thunar/files/thunar-0.8.0-jpeg.patch @@ -0,0 +1,168 @@ +diff -ur Thunar-0.8.0.orig/thunar-vfs/thunar-vfs-thumb-jpeg.c Thunar-0.8.0/thunar-vfs/thunar-vfs-thumb-jpeg.c +--- Thunar-0.8.0.orig/thunar-vfs/thunar-vfs-thumb-jpeg.c 2007-01-20 22:39:09.000000000 +0200 ++++ Thunar-0.8.0/thunar-vfs/thunar-vfs-thumb-jpeg.c 2007-02-12 20:16:29.000000000 +0200 +@@ -1,4 +1,4 @@ +-/* $Id: thunar-0.8.0-jpeg.patch,v 1.1 2007/02/12 19:14:05 drac Exp $ */ ++/* $Id: thunar-0.8.0-jpeg.patch,v 1.1 2007/02/12 19:14:05 drac Exp $ */ + /*- + * Copyright (c) 2005-2007 Benedikt Meurer <benny@xfce.org> + * +@@ -310,18 +310,18 @@ + { + struct /* thumbnail JPEG */ + { +- guint thumb_jpeg_length; +- guint thumb_jpeg_offset; +- }; ++ guint length; ++ guint offset; ++ } thumb_jpeg; + struct /* thumbnail TIFF */ + { +- guint thumb_tiff_length; +- guint thumb_tiff_offset; +- guint thumb_tiff_interp; +- guint thumb_tiff_height; +- guint thumb_tiff_width; +- }; +- }; ++ guint length; ++ guint offset; ++ guint interp; ++ guint height; ++ guint width; ++ } thumb_tiff; ++ } thumb; + + gboolean big_endian; + } TvtjExif; +@@ -330,24 +330,24 @@ + + static guint + tvtj_exif_get_ushort (const TvtjExif *exif, +- gconstpointer data) ++ const guchar *data) + { + if (G_UNLIKELY (exif->big_endian)) +- return GUINT16_FROM_BE (*((const guint16 *) data)); ++ return ((data[0] << 8) | data[1]); + else +- return GUINT16_FROM_LE (*((const guint16 *) data)); ++ return ((data[1] << 8) | data[0]); + } + + + + static guint + tvtj_exif_get_ulong (const TvtjExif *exif, +- gconstpointer data) ++ const guchar *data) + { + if (G_UNLIKELY (exif->big_endian)) +- return GUINT32_FROM_BE (*((const guint32 *) data)); ++ return ((data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]); + else +- return GUINT32_FROM_LE (*((const guint32 *) data)); ++ return ((data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0]); + } + + +@@ -415,15 +415,15 @@ + + /* and remember it appropriately */ + if (tag == 0x0100) +- exif->thumb_tiff_width = value; ++ exif->thumb.thumb_tiff.width = value; + else if (tag == 0x0100) +- exif->thumb_tiff_height = value; ++ exif->thumb.thumb_tiff.height = value; + else if (tag == 0x0106) +- exif->thumb_tiff_interp = value; ++ exif->thumb.thumb_tiff.interp = value; + else if (tag == 0x0111) +- exif->thumb_tiff_offset = value; ++ exif->thumb.thumb_tiff.offset = value; + else +- exif->thumb_tiff_length = value; ++ exif->thumb.thumb_tiff.length = value; + } + else if (tag == 0x0201 || tag == 0x0202) + { +@@ -435,9 +435,9 @@ + + /* and remember it appropriately */ + if (G_LIKELY (tag == 0x201)) +- exif->thumb_jpeg_offset = value; ++ exif->thumb.thumb_jpeg.offset = value; + else +- exif->thumb_jpeg_length = value; ++ exif->thumb.thumb_jpeg.length = value; + } + } + } +@@ -503,25 +503,25 @@ + if (G_LIKELY (exif.thumb_compression == 6)) /* JPEG */ + { + /* check if we have a valid thumbnail JPEG */ +- if (exif.thumb_jpeg_offset > 0 && exif.thumb_jpeg_length > 0 +- && exif.thumb_jpeg_offset + exif.thumb_jpeg_length <= length) ++ if (exif.thumb.thumb_jpeg.offset > 0 && exif.thumb.thumb_jpeg.length > 0 ++ && exif.thumb.thumb_jpeg.offset + exif.thumb.thumb_jpeg.length <= length) + { + /* try to load the embedded thumbnail JPEG */ +- return tvtj_jpeg_load (data + exif.thumb_jpeg_offset, exif.thumb_jpeg_length, size); ++ return tvtj_jpeg_load (data + exif.thumb.thumb_jpeg.offset, exif.thumb.thumb_jpeg.length, size); + } + } + else if (exif.thumb_compression == 1) /* Uncompressed */ + { + /* check if we have a valid thumbnail (current only RGB interpretations) */ +- if (G_LIKELY (exif.thumb_tiff_interp == 2) +- && exif.thumb_tiff_offset > 0 && exif.thumb_tiff_length > 0 +- && exif.thumb_tiff_offset + exif.thumb_tiff_length <= length +- && exif.thumb_tiff_height * exif.thumb_tiff_width == exif.thumb_tiff_length) ++ if (G_LIKELY (exif.thumb.thumb_tiff.interp == 2) ++ && exif.thumb.thumb_tiff.offset > 0 && exif.thumb.thumb_tiff.length > 0 ++ && exif.thumb.thumb_tiff.offset + exif.thumb.thumb_tiff.length <= length ++ && exif.thumb.thumb_tiff.height * exif.thumb.thumb_tiff.width == exif.thumb.thumb_tiff.length) + { + /* plain RGB data, just what we need for a GdkPixbuf */ +- return gdk_pixbuf_new_from_data (g_memdup (data + exif.thumb_tiff_offset, exif.thumb_tiff_length), +- GDK_COLORSPACE_RGB, FALSE, 8, exif.thumb_tiff_width, +- exif.thumb_tiff_height, exif.thumb_tiff_width, ++ return gdk_pixbuf_new_from_data (g_memdup (data + exif.thumb.thumb_tiff.offset, exif.thumb.thumb_tiff.length), ++ GDK_COLORSPACE_RGB, FALSE, 8, exif.thumb.thumb_tiff.width, ++ exif.thumb.thumb_tiff.height, exif.thumb.thumb_tiff.width, + (GdkPixbufDestroyNotify) g_free, NULL); + } + } +@@ -615,7 +615,7 @@ + if (G_LIKELY (fstat (fd, &statb) == 0 && statb.st_size > 0)) + { + /* try to mmap the file */ +- content = mmap (NULL, statb.st_size, PROT_READ, MAP_SHARED, fd, 0); ++ content = (JOCTET *) mmap (NULL, statb.st_size, PROT_READ, MAP_SHARED, fd, 0); + + /* verify that the mmap was successful */ + if (G_LIKELY (content != (JOCTET *) MAP_FAILED)) +@@ -630,7 +630,7 @@ + } + + /* unmap the file content */ +- munmap (content, statb.st_size); ++ munmap ((void *) content, statb.st_size); + } + + /* close the file */ +@@ -638,9 +638,9 @@ + } + + return pixbuf; +-#endif +- ++#else + return NULL; ++#endif + } + + diff --git a/xfce-base/thunar/thunar-0.8.0-r2.ebuild b/xfce-base/thunar/thunar-0.8.0-r2.ebuild new file mode 100644 index 000000000000..8c70fb94f444 --- /dev/null +++ b/xfce-base/thunar/thunar-0.8.0-r2.ebuild @@ -0,0 +1,73 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/xfce-base/thunar/thunar-0.8.0-r2.ebuild,v 1.1 2007/02/12 19:14:05 drac Exp $ + +inherit eutils xfce44 + +MY_P="${P/t/T}" +S="${WORKDIR}/${MY_P}" + +xfce44 + +DESCRIPTION="File manager" +HOMEPAGE="http://thunar.xfce.org" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86" +IUSE="doc dbus debug exif gnome hal plugins pcre startup-notification" + +RDEPEND=">=dev-lang/perl-5.6 + x11-libs/libSM + >=x11-libs/gtk+-2.6 + >=dev-libs/glib-2.6 + >=xfce-extra/exo-0.3.2 + >=x11-misc/shared-mime-info-0.15 + >=dev-util/desktop-file-utils-0.10 + >=xfce-base/libxfce4util-${XFCE_MASTER_VERSION} + virtual/fam + dbus? ( || ( dev-libs/dbus-glib <sys-apps/dbus-1 ) ) + hal? ( sys-apps/hal ) + >=media-libs/freetype-2 + gnome? ( gnome-base/gconf ) + exif? ( >=media-libs/libexif-0.6 ) + >=media-libs/jpeg-6b + startup-notification? ( x11-libs/startup-notification ) + pcre? ( >=dev-libs/libpcre-6 ) + plugins? ( dbus? ( >=xfce-base/xfce4-panel-${XFCE_MASTER_VERSION} ) ) + gnome-base/librsvg" +DEPEND="${RDEPEND} + dev-util/pkgconfig + dev-util/intltool + doc? ( dev-util/gtk-doc )" + +XFCE_CONFIG="${XFCE_CONFIG} $(use_enable exif) $(use_enable gnome gnome-thumbnailers) \ + $(use_enable dbus) $(use_enable pcre)" + +pkg_setup() { + if use hal; then + XFCE_CONFIG="${XFCE_CONFIG} --with-volume-manager=hal" + else + XFCE_CONFIG="${XFCE_CONFIG} --with-volume-manager=none" + fi + + if use plugins && ! use dbus ; then + XFCE_CONFIG="${XFCE_CONFIG} --disable-tpa-plugin" + ewarn "Plugins requires ${PN} with dbus support. Enable dbus use flag" + ewarn "and re-emerge this ebuild if you want this feature." + epause 3 + fi + + if use hal && ! use dbus ; then + ewarn "HAL requires ${PN} with dbus support. Enable dbus use flag" + ewarn "and re-emerge this ebuild if you want this feature." + die "re-emerge with USE dbus" + fi +} + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}/${P}-jpeg.patch" +} + +DOCS="AUTHORS ChangeLog HACKING FAQ THANKS TODO README NEWS" + +xfce44_extra_package |