Fix buffer overflow, bug #105396.
authorMartin Schlemmer <azarah@gentoo.org>
Thu, 15 Sep 2005 11:00:46 +0000 (11:00 +0000)
committerMartin Schlemmer <azarah@gentoo.org>
Thu, 15 Sep 2005 11:00:46 +0000 (11:00 +0000)
Package-Manager: portage-2.0.52-r1

www-client/mozilla-firefox/ChangeLog
www-client/mozilla-firefox/Manifest
www-client/mozilla-firefox/files/digest-mozilla-firefox-1.0.6-r7 [new file with mode: 0644]
www-client/mozilla-firefox/files/mozilla-firefox-1.0.6-GLSA105396.patch [new file with mode: 0644]
www-client/mozilla-firefox/mozilla-firefox-1.0.6-r7.ebuild [new file with mode: 0644]

index 7fcd5815d0c8cdf64250cc7aa544b25b6128792a..17e443bfb4a5657deb27ae2e8e101c6d9aa5e845 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for www-client/mozilla-firefox
 # Copyright 2000-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/www-client/mozilla-firefox/ChangeLog,v 1.72 2005/09/15 04:01:01 josejx Exp $
+# $Header: /var/cvsroot/gentoo-x86/www-client/mozilla-firefox/ChangeLog,v 1.73 2005/09/15 11:00:46 azarah Exp $
+
+*mozilla-firefox-1.0.6-r7 (15 Sep 2005)
+
+  15 Sep 2005; Martin Schlemmer <azarah@gentoo.org>
+  +files/mozilla-firefox-1.0.6-GLSA105396.patch,
+  +mozilla-firefox-1.0.6-r7.ebuild:
+  Fix buffer overflow, bug #105396.
 
   15 Sep 2005; Joseph Jezak <josejx@gentoo.org>
   mozilla-firefox-1.0.6-r5.ebuild:
index a6cad49bf5a911adff06cb97650c631a1591d702..98a091977b8f064b163183e1afcbb400a1c4ba17 100644 (file)
@@ -1,38 +1,41 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-MD5 a9eaa4b74a48e3a5a234dad774d50951 ChangeLog 29646
 MD5 27212c3bfc3d15dc4bb42454380c533b mozilla-firefox-1.0.6-r5.ebuild 9631
-MD5 6d3af6331c1b75d7991a5680fc9602c7 mozilla-firefox-1.0.6-r2.ebuild 8318
-MD5 ce23390351fe8020387d93ee29e09a3d metadata.xml 160
 MD5 7f073b544e7967d3453ab8579292ef3e mozilla-firefox-1.0.6-r4.ebuild 9543
-MD5 d8c6c3085e4fc8d06ef878579dddf116 mozilla-firefox-1.0.6-r6.ebuild 11233
+MD5 3b600027915eb279ee0b8ffdfa5c2217 ChangeLog 29861
+MD5 64587ad7865b7c2f2f5ac93d41d5becf mozilla-firefox-1.0.6-r7.ebuild 9779
 MD5 06023401dbf9f17149696616a240647d mozilla-firefox-1.0.6-r3.ebuild 9154
-MD5 23d1fbd03cc6dd346a4e4ce8f2d88ebf files/mozilla-1.3-alpha-stubs.patch 4646
-MD5 03df358b463796309e2ce8b87b180085 files/securebrowserui-iirq.patch 1101
-MD5 3961b39c763ff8f98b56098ac0cdbecc files/mozilla-firefox-1.0-kp_separator.patch 444
-MD5 0aa74349ef4f69637967343f43540733 files/mozilla-firefox-1.0.3-prefs.patch 3406
+MD5 6d3af6331c1b75d7991a5680fc9602c7 mozilla-firefox-1.0.6-r2.ebuild 8318
+MD5 d8c6c3085e4fc8d06ef878579dddf116 mozilla-firefox-1.0.6-r6.ebuild 11233
+MD5 ce23390351fe8020387d93ee29e09a3d metadata.xml 160
+MD5 07a5a1ce0146f1badc4e04849a9b1830 files/mozilla-firefox-1.0.6-gcc4.patch 6131
+MD5 6da2b9dec8c7fbe104122a424727fb39 files/digest-mozilla-firefox-1.0.6-r3 451
+MD5 1652483bf7e1d08241cd5e0436bea2ae files/10MozillaFirefox 32
 MD5 e71e3d11bf8e3a03f965cf894593c28c files/digest-mozilla-firefox-1.0.6-r2 382
-MD5 8e7d6f3220336cd4467d20bbe402e09a files/embedprompter-modal.patch 1548
+MD5 03df358b463796309e2ce8b87b180085 files/securebrowserui-iirq.patch 1101
 MD5 8e6ffd5837cb4de55271592e3448b177 files/digest-mozilla-firefox-1.0.6-r5 447
-MD5 1652483bf7e1d08241cd5e0436bea2ae files/10MozillaFirefox 32
+MD5 8e6ffd5837cb4de55271592e3448b177 files/digest-mozilla-firefox-1.0.6-r7 447
 MD5 f48be110754a5106f06cd313c22c4337 files/svg-cairo-0.3.0-fix.patch 1063
+MD5 48baf2f328e6478812c24e59037ff99c files/firefox-0.9-init.tar.bz2 3322
+MD5 8f8d70da6eb8cf07acbbb85fb0f08636 files/mozilla-hppa.patch 7863
 MD5 a3ab6ae2213780c0e20c5b9aa8f018e9 files/mozilla-firefox-1.0.4-gcc4.patch 1818
-MD5 eafec999c965792bf81df6bcbbe6c5ea files/gtk-tooltips.patch 2308
 MD5 8e6ffd5837cb4de55271592e3448b177 files/digest-mozilla-firefox-1.0.6-r4 447
-MD5 8f8d70da6eb8cf07acbbb85fb0f08636 files/mozilla-hppa.patch 7863
-MD5 3970f49b3f72cec38e126a2a140b524f files/gtk-prompt-service.patch 5520
-MD5 8e6ffd5837cb4de55271592e3448b177 files/digest-mozilla-firefox-1.0.6-r6 447
-MD5 07a5a1ce0146f1badc4e04849a9b1830 files/mozilla-firefox-1.0.6-gcc4.patch 6131
-MD5 48baf2f328e6478812c24e59037ff99c files/firefox-0.9-init.tar.bz2 3322
+MD5 3961b39c763ff8f98b56098ac0cdbecc files/mozilla-firefox-1.0-kp_separator.patch 444
 MD5 07f9a980afa2dde67554657c00b8be18 files/mozilla-rpath-1.patch 1716
-MD5 6da2b9dec8c7fbe104122a424727fb39 files/digest-mozilla-firefox-1.0.6-r3 451
+MD5 0aa74349ef4f69637967343f43540733 files/mozilla-firefox-1.0.3-prefs.patch 3406
+MD5 8e6ffd5837cb4de55271592e3448b177 files/digest-mozilla-firefox-1.0.6-r6 447
+MD5 3970f49b3f72cec38e126a2a140b524f files/gtk-prompt-service.patch 5520
+MD5 8e7d6f3220336cd4467d20bbe402e09a files/embedprompter-modal.patch 1548
+MD5 eafec999c965792bf81df6bcbbe6c5ea files/gtk-tooltips.patch 2308
+MD5 787437939618daf271673626f6414b15 files/mozilla-firefox-1.0.6-GLSA105396.patch 4049
+MD5 23d1fbd03cc6dd346a4e4ce8f2d88ebf files/mozilla-1.3-alpha-stubs.patch 4646
 MD5 bff260036c5dcca45da3218517fb33d8 files/icon/firefox-icon.png 3979
 MD5 2cdd03eb2752bc01ba07ad837e926f39 files/icon/mozillafirefox.desktop 168
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.2 (GNU/Linux)
 
-iD8DBQFDKPIucsIHjyDViGQRAkNbAKCtDamNUpVYWgMBZRSGOCgWbCunIgCfSdf0
-CY+WNTVdoUJZt4ky+zTOdFs=
-=UT7J
+iD8DBQFDKVS41ZcsMnZjRyIRAno9AKCUAdB5y68DfYXcuJoLPwRpESLx4QCeMVht
+GWD6V+0p+nHwcx6EpO7ErT4=
+=3AIX
 -----END PGP SIGNATURE-----
diff --git a/www-client/mozilla-firefox/files/digest-mozilla-firefox-1.0.6-r7 b/www-client/mozilla-firefox/files/digest-mozilla-firefox-1.0.6-r7
new file mode 100644 (file)
index 0000000..fee4910
--- /dev/null
@@ -0,0 +1,6 @@
+MD5 7b4c1d10d478dcb4c52fbbe3e41745d9 firefox-1.0.6-source.tar.bz2 32782840
+MD5 1d6205bf7449fcdcae08cc1db524760d mozilla-firefox-1.0-4ft2.patch.bz2 5601
+MD5 39c7b08477b68fe0cb3fba75970c8125 mozilla-firefox-1.0.3-ia64.patch.bz2 2531
+MD5 7960994910bda4c14a52bc119f9ceefc mozilla-jslibmath-alpha.patch 625
+MD5 a120cd14ade242622387f76875ca9c39 mozilla-1.7.10-nsplugins-v2.patch 1968
+MD5 e0442e619add9045d0d04e97c274bc85 embed-typeaheadfind.patch 41038
diff --git a/www-client/mozilla-firefox/files/mozilla-firefox-1.0.6-GLSA105396.patch b/www-client/mozilla-firefox/files/mozilla-firefox-1.0.6-GLSA105396.patch
new file mode 100644 (file)
index 0000000..30839e8
--- /dev/null
@@ -0,0 +1,104 @@
+Index: nsStandardURL.cpp
+===================================================================
+RCS file: /cvs/mozilla/netwerk/base/src/nsStandardURL.cpp,v
+retrieving revision 1.60.16.2
+diff -p -u -1 -2 -r1.60.16.2 nsStandardURL.cpp
+--- 1/netwerk/base/src/nsStandardURL.cpp       17 Feb 2005 23:40:53 -0000      1.60.16.2
++++ 2/netwerk/base/src/nsStandardURL.cpp       9 Sep 2005 16:34:46 -0000
+@@ -403,24 +403,25 @@ nsStandardURL::AppendToBuf(char *buf, PR
+ //  4- update url segment positions and lengths
+ nsresult
+ nsStandardURL::BuildNormalizedSpec(const char *spec)
+ {
+     // Assumptions: all member URLSegments must be relative the |spec| argument
+     // passed to this function.
+ 
+     // buffers for holding escaped url segments (these will remain empty unless
+     // escaping is required).
+     nsCAutoString encUsername;
+     nsCAutoString encPassword;
+     nsCAutoString encHost;
++    PRBool useEncHost;
+     nsCAutoString encDirectory;
+     nsCAutoString encBasename;
+     nsCAutoString encExtension;
+     nsCAutoString encParam;
+     nsCAutoString encQuery;
+     nsCAutoString encRef;
+ 
+     //
+     // escape each URL segment, if necessary, and calculate approximate normalized
+     // spec length.
+     //
+     PRInt32 approxLen = 3; // includes room for "://"
+@@ -440,34 +441,36 @@ nsStandardURL::BuildNormalizedSpec(const
+         approxLen += encoder.EncodeSegmentCount(spec, mBasename,  esc_FileBaseName,  encBasename);
+         approxLen += encoder.EncodeSegmentCount(spec, mExtension, esc_FileExtension, encExtension);
+         approxLen += encoder.EncodeSegmentCount(spec, mParam,     esc_Param,         encParam);
+         approxLen += encoder.EncodeSegmentCount(spec, mQuery,     esc_Query,         encQuery);
+         approxLen += encoder.EncodeSegmentCount(spec, mRef,       esc_Ref,           encRef);
+     }
+ 
+     // do not escape the hostname, if IPv6 address literal, mHost will
+     // already point to a [ ] delimited IPv6 address literal.
+     // However, perform Unicode normalization on it, as IDN does.
+     mHostEncoding = eEncoding_ASCII;
+     if (mHost.mLen > 0) {
++        useEncHost = PR_FALSE;
+         const nsCSubstring& tempHost =
+             Substring(spec + mHost.mPos, spec + mHost.mPos + mHost.mLen);
+         if (IsASCII(tempHost))
+             approxLen += mHost.mLen;
+         else {
+             mHostEncoding = eEncoding_UTF8;
+             if (gIDNService &&
+-                NS_SUCCEEDED(gIDNService->Normalize(tempHost, encHost)))
++                NS_SUCCEEDED(gIDNService->Normalize(tempHost, encHost))) {
+                 approxLen += encHost.Length();
+-            else {
++                useEncHost = PR_TRUE;
++            } else {
+                 encHost.Truncate();
+                 approxLen += mHost.mLen;
+             }
+         }
+     }
+ 
+     //
+     // generate the normalized URL string
+     //
+     mSpec.SetLength(approxLen + 32);
+     char *buf;
+     mSpec.BeginWriting(buf);
+@@ -483,25 +486,30 @@ nsStandardURL::BuildNormalizedSpec(const
+     mAuthority.mPos = i;
+ 
+     // append authority
+     if (mUsername.mLen > 0) {
+         i = AppendSegmentToBuf(buf, i, spec, mUsername, &encUsername);
+         if (mPassword.mLen >= 0) {
+             buf[i++] = ':';
+             i = AppendSegmentToBuf(buf, i, spec, mPassword, &encPassword);
+         }
+         buf[i++] = '@';
+     }
+     if (mHost.mLen > 0) {
+-        i = AppendSegmentToBuf(buf, i, spec, mHost, &encHost);
++        if (useEncHost) {
++            mHost.mPos = i;
++            mHost.mLen = encHost.Length();
++            i = AppendToBuf(buf, i, encHost.get(), mHost.mLen);
++        } else
++            i = AppendSegmentToBuf(buf, i, spec, mHost);
+         net_ToLowerCase(buf + mHost.mPos, mHost.mLen);
+         if (mPort != -1 && mPort != mDefaultPort) {
+             nsCAutoString portbuf;
+             portbuf.AppendInt(mPort);
+             buf[i++] = ':';
+             i = AppendToBuf(buf, i, portbuf.get(), portbuf.Length());
+         }
+     }
+ 
+     // record authority length
+     mAuthority.mLen = i - mAuthority.mPos;
+ 
diff --git a/www-client/mozilla-firefox/mozilla-firefox-1.0.6-r7.ebuild b/www-client/mozilla-firefox/mozilla-firefox-1.0.6-r7.ebuild
new file mode 100644 (file)
index 0000000..bc5f3c3
--- /dev/null
@@ -0,0 +1,293 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/www-client/mozilla-firefox/mozilla-firefox-1.0.6-r7.ebuild,v 1.1 2005/09/15 11:00:46 azarah Exp $
+
+unset ALLOWED_FLAGS  # stupid extra-functions.sh ... bug 49179
+inherit flag-o-matic toolchain-funcs eutils mozconfig mozilla-launcher makeedit multilib
+
+DESCRIPTION="Firefox Web Browser"
+HOMEPAGE="http://www.mozilla.org/projects/firefox/"
+SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}-source.tar.bz2
+       mirror://gentoo/mozilla-firefox-1.0-4ft2.patch.bz2
+       mirror://gentoo/mozilla-firefox-1.0.3-ia64.patch.bz2
+       mirror://gentoo/mozilla-jslibmath-alpha.patch
+       http://dev.gentoo.org/~agriffis/dist/mozilla-1.7.10-nsplugins-v2.patch
+       http://dev.gentoo.org/~anarchy/dist/embed-typeaheadfind.patch"
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~sparc ~x86"
+SLOT="0"
+LICENSE="MPL-1.1 NPL-1.1"
+IUSE="gnome java mozdevelop mozsvg mozcalendar"
+
+# xrender.pc appeared for the first time in xorg-x11-6.7.0-r2
+# and is required to build with support for cairo.  #71504
+RDEPEND="java? ( virtual/jre )
+       >=media-libs/libmng-1.0.0
+       mozsvg? (
+               !<x11-base/xorg-x11-6.7.0-r2
+               x11-libs/cairo
+       )
+       >=www-client/mozilla-launcher-1.39"
+
+DEPEND="${RDEPEND}
+       java? ( >=dev-java/java-config-0.2.0 )"
+
+S=${WORKDIR}/mozilla
+
+# Needed by src_compile() and src_install().
+# Would do in pkg_setup but that loses the export attribute, they
+# become pure shell variables.
+export BUILD_OFFICIAL=1
+export MOZILLA_OFFICIAL=1
+export MOZ_PHOENIX=1
+
+src_unpack() {
+       declare x
+
+       for x in ${A}; do
+               [[ $x == *.tar.* ]] || continue
+               unpack $x || die "unpack failed"
+       done
+       cd ${S} || die "cd failed"
+
+       ####################################
+       #
+       # architecture patches
+       #
+       ####################################
+
+       # alpha stubs patch from lfs project.
+       # <taviso@gentoo.org> (26 Jun 2003)
+       use alpha && epatch ${FILESDIR}/mozilla-1.3-alpha-stubs.patch
+
+       # hppa patches from Ivar <orskaug@stud.ntnu.no>
+       # <gmsoft@gentoo.org> (22 Dec 2004)
+       epatch ${FILESDIR}/mozilla-hppa.patch
+
+       # patch to solve segfaults on ia64, from Debian, originally from David
+       # Mosberger
+       epatch ${DISTDIR}/mozilla-firefox-1.0.3-ia64.patch.bz2
+
+       # patch to fix math operations on alpha, makes maps.google.com work!
+       epatch ${DISTDIR}/mozilla-jslibmath-alpha.patch
+
+       ####################################
+       #
+       # general compilation and run-time fixes
+       #
+       ####################################
+
+       # GCC4 compile fix, bug #87800
+       epatch ${FILESDIR}/${P}-gcc4.patch
+
+       # patch out ft caching code since the API changed between releases of
+       # freetype; this enables freetype-2.1.8+ compat.
+       # https://bugzilla.mozilla.org/show_bug.cgi?id=234035#c65
+       epatch ${DISTDIR}/mozilla-firefox-1.0-4ft2.patch.bz2
+
+       # Patch for newer versions of cairo #80301
+       if has_version '>=x11-libs/cairo-0.3.0'; then
+               epatch ${FILESDIR}/svg-cairo-0.3.0-fix.patch
+       fi
+
+       ####################################
+       #
+       # behavioral fixes
+       #
+       ####################################
+
+       # patch to fix separate character on euro keyboards, bug 68995
+       epatch ${FILESDIR}/mozilla-firefox-1.0-kp_separator.patch
+
+       # some patches from Debian to set default preferences:
+       # - inherit LANG from env
+       # - shut off SSLv2 and 40-bit ciphers by default
+       # - disable application auto-updating
+       epatch ${FILESDIR}/mozilla-firefox-1.0.3-prefs.patch
+
+       # look in /usr/lib/nsplugins for plugins, in addition to the usual places
+       epatch ${DISTDIR}/mozilla-1.7.10-nsplugins-v2.patch
+
+       # patch to fix crash in GtkPromptService::Prompt
+       # https://bugzilla.mozilla.org/show_bug.cgi?id=265599
+       epatch ${FILESDIR}/gtk-prompt-service.patch
+
+       # patch to make prompts window modal instead of application modal
+       # https://bugzilla.mozilla.org/show_bug.cgi?id=224454
+       epatch ${FILESDIR}/embedprompter-modal.patch
+
+       # patch to fix typeahead find for browsers which embed Firefox
+       # http://bugzilla.gnome.org/show_bug.cgi?id=157435
+       epatch ${DISTDIR}/embed-typeaheadfind.patch
+
+       # patch to make the interface requestor give out its nsIDOMWindow
+       # https://bugzilla.mozilla.org/show_bug.cgi?id=277587
+       epatch ${FILESDIR}/securebrowserui-iirq.patch
+
+       # patch to add border to tooltips
+       # https://bugzilla.mozilla.org/show_bug.cgi?id=238052
+       epatch ${FILESDIR}/gtk-tooltips.patch
+
+       ###################################
+       #
+       # security fixes
+       #
+       ###################################
+       epatch ${FILESDIR}/${P}-GLSA105396.patch
+}
+
+src_compile() {
+       declare MOZILLA_FIVE_HOME=/usr/$(get_libdir)/${PN}
+
+       ####################################
+       #
+       # mozconfig, CFLAGS and CXXFLAGS setup
+       #
+       ####################################
+
+       mozconfig_init
+
+       # Bug 60668: Galeon doesn't build without oji enabled, so enable it
+       # regardless of java setting.
+       mozconfig_annotate '' --enable-oji --enable-mathml --enable-extensions=typeaheadfind
+
+       # Other ff-specific settings
+       mozconfig_use_enable mozdevelop jsd
+       mozconfig_use_enable mozdevelop xpctools
+       mozconfig_use_extension mozdevelop venkman
+       mozconfig_use_enable gnome gnomevfs
+       mozconfig_use_extension gnome gnomevfs
+       mozconfig_use_enable mozcalendar calendar
+       mozconfig_use_enable mozsvg svg
+       mozconfig_use_enable mozsvg svg-renderer-cairo
+       mozconfig_annotate '' --with-default-mozilla-five-home=${MOZILLA_FIVE_HOME}
+       #mozconfig_annotate '' --with-user-appdir=.firefox
+
+       # Finalize and report settings
+       mozconfig_final
+
+       # hardened GCC uses -fstack-protector-all by default, which breaks us
+       has_hardened && append-flags -fno-stack-protector-all
+       replace-flags -fstack-protector-all -fstack-protector
+
+       ####################################
+       #
+       #  Configure and build
+       #
+       ####################################
+
+       CPPFLAGS="${CPPFLAGS} -DARON_WAS_HERE" \
+       CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" \
+       econf || die
+
+       # It would be great if we could pass these in via CPPFLAGS or CFLAGS prior
+       # to econf, but the quotes cause configure to fail.
+       grep -Flre -DARON_WAS_HERE --exclude=config.\* . | xargs sed -i -e \
+       's|-DARON_WAS_HERE|-DGENTOO_NSPLUGINS_DIR=\\\"/usr/'"$(get_libdir)"'/nsplugins\\\" -DGENTOO_NSBROWSER_PLUGINS_DIR=\\\"/usr/'"$(get_libdir)"'/nsbrowser/plugins\\\"|'
+
+       # This removes extraneous CFLAGS from the Makefiles to reduce RAM
+       # requirements while compiling
+       edit_makefiles
+
+       emake || die
+}
+
+src_install() {
+       declare MOZILLA_FIVE_HOME=/usr/$(get_libdir)/${PN}
+
+       # Most of the installation happens here
+       dodir ${MOZILLA_FIVE_HOME}
+       cp -RL ${S}/dist/bin/* ${D}${MOZILLA_FIVE_HOME} || die "Failed to Copy"
+
+       # Create directory structure to support portage-installed extensions.
+       # See update_chrome() in mozilla-launcher
+       keepdir ${MOZILLA_FIVE_HOME}/chrome.d
+       keepdir ${MOZILLA_FIVE_HOME}/extensions.d
+       cp ${D}${MOZILLA_FIVE_HOME}/chrome/installed-chrome.txt \
+               ${D}${MOZILLA_FIVE_HOME}/chrome.d/0_base-chrome.txt || die "Failed to Copy"
+
+       # Create /usr/bin/firefox
+       install_mozilla_launcher_stub firefox ${MOZILLA_FIVE_HOME}
+
+       # Install icon and .desktop for menu entry
+       insinto /usr/share/pixmaps
+       doins ${FILESDIR}/icon/firefox-icon.png
+
+       # Fix bug 54179: Install .desktop file into /usr/share/applications
+       # instead of /usr/share/gnome/apps/Internet (18 Jun 2004 agriffis)
+       insinto /usr/share/applications
+       doins ${FILESDIR}/icon/mozillafirefox.desktop
+
+       # Fix icons to look the same everywhere
+       insinto ${MOZILLA_FIVE_HOME}/icons
+       doins ${S}/build/package/rpm/SOURCES/mozicon16.xpm
+       doins ${S}/build/package/rpm/SOURCES/mozicon50.xpm
+
+       ####################################
+       #
+       # Install files necessary for applications to build against firefox
+       #
+       ####################################
+
+       einfo "Installing includes and idl files..."
+       dodir ${MOZILLA_FIVE_HOME}/include/idl /usr/include
+       cd ${S}/dist
+       cp -LfR include/* ${D}${MOZILLA_FIVE_HOME}/include || die "Failed to Copy"
+       cp -LfR idl/* ${D}${MOZILLA_FIVE_HOME}/include/idl || die "Failed to Copy"
+
+       # Dirty hack to get some applications using this header running
+       dosym ${MOZILLA_FIVE_HOME}/include/necko/nsIURI.h \
+               /usr/$(get_libdir)/${MOZILLA_FIVE_HOME##*/}/include/nsIURI.h
+
+       # Compatibility symlink so that applications can still build against firefox
+       # even though it has moved.  To remove this symlink, grep -r MozillaFirefox
+       # /usr/portage and fix those ebuilds
+       dosym ${MOZILLA_FIVE_HOME##*/} ${MOZILLA_FIVE_HOME%/*}/MozillaFirefox
+
+       # Fix firefox-config and install it
+       sed -i -e "s|/usr/lib/firefox-${PV}|${MOZILLA_FIVE_HOME}|g
+               s|/usr/include/firefox-${PV}|${MOZILLA_FIVE_HOME}/include|g" \
+               ${S}/build/unix/firefox-config
+       exeinto ${MOZILLA_FIVE_HOME}
+       doexe ${S}/build/unix/firefox-config
+
+       # Fix pkgconfig files and install them
+       insinto /usr/$(get_libdir)/pkgconfig
+       for x in ${S}/build/unix/*.pc; do
+               sed -i -e "s|^libdir=.*|libdir=${MOZILLA_FIVE_HOME}|
+                       s|^includedir=.*|includedir=${MOZILLA_FIVE_HOME}/include|" ${x}
+               doins ${x}
+       done
+
+       # Install env.d snippet, which isn't necessary for running firefox, but
+       # might be necessary for programs linked against firefox
+       insinto /etc/env.d
+       doins ${FILESDIR}/10MozillaFirefox
+       dosed "s|/usr/lib|/usr/$(get_libdir)|" /etc/env.d/10MozillaFirefox
+
+       # Install docs
+       dodoc LEGAL LICENSE
+}
+
+pkg_postinst() {
+       declare MOZILLA_FIVE_HOME=/usr/$(get_libdir)/${PN}
+
+       # Update the component registry
+       MOZILLA_LIBDIR=${ROOT}${MOZILLA_FIVE_HOME} MOZILLA_LAUNCHER=firefox \
+               /usr/libexec/mozilla-launcher -register
+
+       # This should be called in the postinst and postrm of all the
+       # mozilla, mozilla-bin, firefox, firefox-bin, thunderbird and
+       # thunderbird-bin ebuilds.
+       update_mozilla_launcher_symlinks
+}
+
+pkg_postrm() {
+       declare MOZILLA_FIVE_HOME=/usr/$(get_libdir)/${PN}
+
+       # Update the component registry
+       MOZILLA_LIBDIR=${ROOT}${MOZILLA_FIVE_HOME} MOZILLA_LAUNCHER=firefox \
+               /usr/libexec/mozilla-launcher -register
+
+       update_mozilla_launcher_symlinks
+}