prepare FF 51 -> 51.0b14
authorWolfgang Rosenauer <wr@rosenauer.org>
Fri, 20 Jan 2017 23:56:59 +0100
changeset 935 9ae2b79d3bb1
parent 934 b61e849fe451
child 936 096e59808e91
prepare FF 51 -> 51.0b14
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/l10n_changesets.txt
MozillaFirefox/mozilla-flex_buffer_overrun.patch
firefox-kde.patch
mozilla-flex_buffer_overrun.patch
mozilla-kde.patch
mozilla-openaes-decl.patch
mozilla-shared-nss-db.patch
series
--- a/MozillaFirefox/MozillaFirefox.changes	Wed Jan 18 22:06:23 2017 +0100
+++ b/MozillaFirefox/MozillaFirefox.changes	Fri Jan 20 23:56:59 2017 +0100
@@ -1,7 +1,37 @@
 -------------------------------------------------------------------
+Fri Jan 20 13:57:56 UTC 2017 - wr@rosenauer.org
+
+- update to Firefox 51.0b14 (boo#)
+  * requires NSPR >= 4.13.1, NSS >= 3.28.1
+- removed obsolete patches
+  * mozilla-flex_buffer_overrun.patch
+
+-------------------------------------------------------------------
 Mon Dec 12 21:18:41 UTC 2016 - wr@rosenauer.org
 
-- update to Firefox 50.1.0 (boo#)
+- update to Firefox 50.1.0 (boo#1015422)
+  * MFSA 2016-94
+    CVE-2016-9894: Buffer overflow in SkiaGL (bmo#1306628)
+    CVE-2016-9899: Use-after-free while manipulating DOM events and
+                   audio elements (bmo#1317409)
+    CVE-2016-9895: CSP bypass using marquee tag (bmo#1312272)
+    CVE-2016-9896: Use-after-free with WebVR (bmo#1315543)
+    CVE-2016-9897: Memory corruption in libGLES (bmo#1301381)
+    CVE-2016-9898: Use-after-free in Editor while manipulating
+                   DOM subtrees (bmo#1314442)
+    CVE-2016-9900: Restricted external resources can be loaded by
+                   SVG images through data URLs (bmo#1319122)
+    CVE-2016-9904: Cross-origin information leak in shared atoms
+                   (bmo#1317936)
+    CVE-2016-9901: Data from Pocket server improperly sanitized
+                   before execution (bmo#1320057)
+    CVE-2016-9902: Pocket extension does not validate the origin
+                   of events (bmo#1320039)
+    CVE-2016-9903: XSS injection vulnerability in add-ons SDK
+                   (bmo#1315435)
+    CVE-2016-9080: Memory safety bugs fixed in Firefox 50.1
+    CVE-2016-9893: Memory safety bugs fixed in Firefox 50.1 and
+                   Firefox ESR 45.6
 
 -------------------------------------------------------------------
 Fri Dec  9 17:57:22 UTC 2016 - cgrobertson@novell.com
--- a/MozillaFirefox/MozillaFirefox.spec	Wed Jan 18 22:06:23 2017 +0100
+++ b/MozillaFirefox/MozillaFirefox.spec	Fri Jan 20 23:56:59 2017 +0100
@@ -19,9 +19,9 @@
 
 # changed with every update
 %define major 50
-%define mainver %major.1.0
-%define update_channel release
-%define releasedate 20161212000000
+%define mainver %major.99
+%define update_channel beta
+%define releasedate 20170117000000
 
 # PIE, full relro (x86_64 for now)
 %define build_hardened 1
@@ -74,8 +74,8 @@
 BuildRequires:  libnotify-devel
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
-BuildRequires:  mozilla-nspr-devel >= 4.12
-BuildRequires:  mozilla-nss-devel >= 3.26.2
+BuildRequires:  mozilla-nspr-devel >= 4.13.1
+BuildRequires:  mozilla-nss-devel >= 3.28.1
 BuildRequires:  nss-shared-helper-devel
 BuildRequires:  python-devel
 BuildRequires:  startup-notification-devel
@@ -152,7 +152,6 @@
 Patch102:       firefox-no-default-ualocale.patch
 Patch103:       firefox-branded-icons.patch
 # hotfix
-Patch150:       mozilla-flex_buffer_overrun.patch
 Patch200:       mozilla-aarch64-startup-crash.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -266,7 +265,6 @@
 %patch101 -p1
 %patch102 -p1
 %patch103 -p1
-%patch150 -p1
 %patch200 -p1
 
 %build
--- a/MozillaFirefox/create-tar.sh	Wed Jan 18 22:06:23 2017 +0100
+++ b/MozillaFirefox/create-tar.sh	Fri Jan 20 23:56:59 2017 +0100
@@ -5,10 +5,10 @@
 # "moz_source_stamp": "c1de04f39fa956cfce83f6065b0e709369215ed5"
 # http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/l10n_changesets.txt
 
-CHANNEL="release"
+CHANNEL="beta"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="8612c3320053b796678921f8f23358e3e9df997e"
-VERSION="50.1.0"
+RELEASE_TAG="FIREFOX_51_0b14_RELEASE"
+VERSION="50.99"
 
 # mozilla
 if [ -d mozilla ]; then
--- a/MozillaFirefox/l10n_changesets.txt	Wed Jan 18 22:06:23 2017 +0100
+++ b/MozillaFirefox/l10n_changesets.txt	Fri Jan 20 23:56:59 2017 +0100
@@ -1,92 +1,93 @@
-ach 72c548f97e82
-af 676daf929ded
-an 9c672ba38dae
-ar 6bd1cb920a48
-as 9710b1ce7a29
-ast 5a06502c9fc1
-az f12bc2c29510
-be 3c6fd4559f7f
-bg 7843a5e79d32
-bn-BD 3cbe5cfb0859
-bn-IN 578eacdbac9d
-br a16ed131653a
-bs 3425b8fcf1ab
-ca c6b4f835d64e
-cak 710c1faa7291
-cs e1f114f9588d
-cy 07118becc133
-da fbec55bbfd36
-de 20748e20ccf2
-dsb 4b8493859a20
-el 16fdb46a6a47
-en-GB e7242fb885cf
-en-ZA 118b4d922a17
-eo ae85ceef76b2
-es-AR a18a4b85f35f
-es-CL c5ff11d180da
-es-ES e841d9340b7c
-es-MX 2eaf1f216766
-et 8920752eaf5b
-eu eb3cb2d122eb
-fa e481522b74f8
-ff 88f5cd66688d
-fi b20587491f77
-fr 628920fcb9f1
-fy-NL 56f04c122d2a
-ga-IE ffbfd52e15d6
-gd 9f50ee991ed8
-gl e15306f877bf
-gn 68f844f4138a
-gu-IN 54ac9d906390
-he 7c087889358a
-hi-IN aea1bb23685c
-hr b0cc9aa34502
-hsb d7ea2d9d91ea
-hu 5106349d21dd
-hy-AM 3f5103ed23e2
-id 69b0d5120660
-is 8b6a14ea919f
-it ec06674eebb4
-ja 488fbb4070d9
-ja-JP-mac e120b04c4a90
-kk 60c09b46e90d
-km 00277d0045d3
-kn 0aff09069416
-ko 33cf1dd48c33
-lij 6a94ea30eef6
-lt 15947ce6f7ff
-lv 3a43a0e2c12c
-mai b43ac46bf163
-mk 0f98fd626df2
-ml b6b5a2b26a09
-mr 0c2a798af2d9
-ms a0a74230784a
-nb-NO 378c5b201531
-nl 750fcda42314
-nn-NO 444e256b7ed8
-or 5ac88ef59ea5
-pa-IN ab02b30c28ea
-pl cd84bd057189
-pt-BR dc5c8b030a57
-pt-PT 900fd62886bb
-rm b6416ed6a3a1
-ro 2e2e9b5a07f5
-ru 1d962dfc279e
-si 03a3b09a2203
-sk 4e8311d1d017
-sl b43e8e65c00e
-son 544d3eea9a59
-sq 25e86afe807e
-sr 233c45e5d423
-sv-SE 6b9266a60638
-ta 0256c1b190ce
-te 8565fd8f778a
-th e2b0b5a2dc9c
-tr 255e7e613fca
-uk e36fe69f4a3f
-uz 6d46754186ab
-vi 5c32df50f35d
-xh c96bc753a170
-zh-CN 411faa039900
-zh-TW e1416ff1b4d6
+ach d6ba00c5c59a
+af 221acbf9c551
+an efef89681add
+ar 940e066d2dd8
+as a97311f0a051
+ast 37ff5970cc8f
+az 374715191cd0
+bg d15a763f746a
+bn-BD b4cdbb48d9fb
+bn-IN 405c89530a66
+br e730984a8770
+bs e25f083ed28a
+ca 2909feec9b62
+cak b0fe49f697f3
+cs 53096821fe5c
+cy 4690316110e9
+da 24845323c326
+de ec96b812a542
+dsb 8e338605ccb9
+el 34a3488407a6
+en-GB 8000aa9daf28
+en-ZA ad5be8ba60f3
+eo 3a024766912e
+es-AR 541f1c3690da
+es-CL 56477941664e
+es-ES 8b7162b69b09
+es-MX 77bc335e0853
+et a9b1775874d3
+eu 52ec58e99375
+fa 95d8b781e109
+ff 2e39572916fb
+fi 94ad306d1492
+fr 27c4dc4cba4d
+fy-NL 9399c11d5edb
+ga-IE 5d9852283915
+gd bc702e34726b
+gl 74d31ad43213
+gn 43e8b6cb5fc6
+gu-IN 97b7ec458ace
+he 32e85d63d323
+hi-IN 25c7d3fceff8
+hr 15e2ad66589c
+hsb ff5fb215596d
+hu 814fad9068d9
+hy-AM 339e5b6d31d2
+id 1f325ac9007c
+is e346cec6bace
+it fc766adb485d
+ja 78a60bf924e7
+ja-JP-mac 0ca52430f89c
+ka fb0e9f4fdbe7
+kab 3de51a9c61ce
+kk 368faf9a9ed3
+km 97cd3bb4f2f3
+kn f657dd18d8a1
+ko bc9fde5af704
+lij 500f328a0bf0
+lt 3eefea021768
+lv 90a827f08cb4
+mai 4a95441f376c
+mk 666cf4d8067b
+ml 1f2e734fbd60
+mr 8067689c39f3
+ms 76c4152f9e3f
+nb-NO 1effc4c0ba39
+nl 28f169daa01f
+nn-NO 272d7d7fbd67
+or 765fc4b06ed0
+pa-IN 8518db59aecf
+pl 339f79766251
+pt-BR 3e521cc717b9
+pt-PT 5ea4fd22db27
+rm 66840279c384
+ro a87554f9bf7e
+ru a8f0bc1f85db
+si 2629b7b1279c
+sk b78499013196
+sl b91f9bd2d619
+son 2934d6741b1a
+sq 8ff97a87cbeb
+sr 8ddd91c5629b
+sv-SE 483944f0c102
+ta dc89744a2281
+te 545bca10223a
+th 6076f69e7093
+tr 70129fabcb60
+uk cb0a4b0816fa
+uz 01402c615783
+vi d6c09226896e
+xh f587b401f8fc
+zh-CN d260be15e967
+zh-TW 267404478cf9
 
--- a/MozillaFirefox/mozilla-flex_buffer_overrun.patch	Wed Jan 18 22:06:23 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-flex_buffer_overrun.patch
\ No newline at end of file
--- a/firefox-kde.patch	Wed Jan 18 22:06:23 2017 +0100
+++ b/firefox-kde.patch	Fri Jan 20 23:56:59 2017 +0100
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  2cb2f829aabd7e3efaa973a0a8cf99aca9605bdc
+# Parent  2cae514c05c8836ca5b69884d3a07998a5d53e8b
 
 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
 new file mode 100644
 --- /dev/null
 +++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1200 @@
+@@ -0,0 +1,1119 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -160,14 +160,7 @@
 +           noautofocus="true"
 +           hidden="true"
 +           flip="none"
-+           level="parent">
-+#ifdef NIGHTLY_BUILD
-+      <hbox id="urlbar-search-footer" flex="1" align="stretch" pack="end">
-+        <button id="urlbar-search-settings" label="&changeSearchSettings.button;"
-+                oncommand="BrowserUITelemetry.countSearchSettingsEvent('urlbar'); openPreferences('paneSearch')"/>
-+      </hbox>
-+#endif
-+    </panel>
++           level="parent"/>
 +
 +    <!-- for select dropdowns. The menupopup is what shows the list of options,
 +         and the popuponly menulist makes things like the menuactive attributes
@@ -175,7 +168,7 @@
 +         popuponly menulist to be its immediate parent. -->
 +    <menulist popuponly="true" id="ContentSelectDropdown" hidden="true">
 +      <menupopup rolluponmousewheel="true"
-+                 activateontab="true"
++                 activateontab="true" position="after_start"
 +#ifdef XP_WIN
 +                 consumeoutsideclicks="false" ignorekeys="handled"
 +#endif
@@ -192,6 +185,7 @@
 +           orient="vertical"
 +           ignorekeys="true"
 +           hidden="true"
++           tabspecific="true"
 +           onpopupshown="StarUI.panelShown(event);"
 +           aria-labelledby="editBookmarkPanelTitle">
 +      <row id="editBookmarkPanelHeader" align="center" hidden="true">
@@ -286,23 +280,6 @@
 +      <hbox id="share-container" flex="1"/>
 +    </panel>
 +
-+    <panel id="social-notification-panel"
-+           class="social-panel"
-+           type="arrow"
-+           hidden="true"
-+           noautofocus="true"/>
-+    <panel id="social-flyout-panel"
-+           class="social-panel"
-+           onpopupshown="SocialFlyout.onShown()"
-+           onpopuphidden="SocialFlyout.onHidden()"
-+           side="right"
-+           type="arrow"
-+           hidden="true"
-+           flip="slide"
-+           rolluponmousewheel="true"
-+           noautofocus="true"
-+           position="topcenter topright"/>
-+
 +    <menupopup id="toolbar-context-menu"
 +               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
 +      <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
@@ -718,66 +695,54 @@
 +                <image id="identity-icon"
 +                       consumeanchor="identity-box"
 +                       onclick="PageProxyClickHandler(event);"/>
-+                <box id="blocked-permissions-container" align="center" tooltiptext="">
-+                  <image data-permission-id="geo" class="notification-anchor-icon geo-icon blocked" role="button"
-+                         aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
-+                  <image data-permission-id="desktop-notification" class="notification-anchor-icon desktop-notification-icon blocked" role="button"
-+                         aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
-+                  <image data-permission-id="camera" class="notification-anchor-icon camera-icon blocked" role="button"
-+                         aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
-+                  <image data-permission-id="indexedDB" class="notification-anchor-icon indexedDB-icon blocked" role="button"
-+                         aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
-+                  <image data-permission-id="microphone" class="notification-anchor-icon microphone-icon blocked" role="button"
-+                         aria-label="&urlbar.webRTCShareMicrophoneNotificationAnchor.label;"/>
-+                  <image data-permission-id="screen" class="notification-anchor-icon screen-icon blocked" role="button"
-+                         aria-label="&urlbar.webRTCShareScreenNotificationAnchor.label;"/>
-+                  <image data-permission-id="pointerLock" class="notification-anchor-icon pointerLock-icon blocked" role="button"
-+                         aria-label="&urlbar.pointerLockNotificationAnchor.label;"/>
++                <image id="sharing-icon" mousethrough="always"/>
++                <box id="blocked-permissions-container" align="center">
++                  <image data-permission-id="geo" class="blocked-permission-icon geo-icon" role="button"
++                         tooltiptext="&urlbar.geolocationBlocked.tooltip;"/>
++                  <image data-permission-id="desktop-notification" class="blocked-permission-icon desktop-notification-icon" role="button"
++                         tooltiptext="&urlbar.webNotificationsBlocked.tooltip;"/>
++                  <image data-permission-id="camera" class="blocked-permission-icon camera-icon" role="button"
++                         tooltiptext="&urlbar.cameraBlocked.tooltip;"/>
++                  <image data-permission-id="indexedDB" class="blocked-permission-icon indexedDB-icon" role="button"
++                         tooltiptext="&urlbar.indexedDBBlocked.tooltip;"/>
++                  <image data-permission-id="microphone" class="blocked-permission-icon microphone-icon" role="button"
++                         tooltiptext="&urlbar.microphoneBlocked.tooltip;"/>
++                  <image data-permission-id="screen" class="blocked-permission-icon screen-icon" role="button"
++                         tooltiptext="&urlbar.screenBlocked.tooltip;"/>
 +                </box>
 +                <box id="notification-popup-box"
 +                     hidden="true"
-+                     tooltiptext=""
 +                     onmouseover="document.getElementById('identity-icon').classList.add('no-hover');"
 +                     onmouseout="document.getElementById('identity-icon').classList.remove('no-hover');"
 +                     align="center">
 +                  <image id="default-notification-icon" class="notification-anchor-icon" role="button"
-+                         aria-label="&urlbar.defaultNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.defaultNotificationAnchor.tooltip;"/>
 +                  <image id="geo-notification-icon" class="notification-anchor-icon geo-icon" role="button"
-+                         aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.geolocationNotificationAnchor.tooltip;"/>
 +                  <image id="addons-notification-icon" class="notification-anchor-icon install-icon" role="button"
-+                         aria-label="&urlbar.addonsNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.addonsNotificationAnchor.tooltip;"/>
 +                  <image id="indexedDB-notification-icon" class="notification-anchor-icon indexedDB-icon" role="button"
-+                         aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
-+                  <image id="login-fill-notification-icon" class="notification-anchor-icon login-icon" role="button"
-+                         aria-label="&urlbar.loginFillNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.indexedDBNotificationAnchor.tooltip;"/>
 +                  <image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
-+                         aria-label="&urlbar.passwordNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.passwordNotificationAnchor.tooltip;"/>
 +                  <image id="plugins-notification-icon" class="notification-anchor-icon plugin-icon" role="button"
-+                         aria-label="&urlbar.pluginsNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.pluginsNotificationAnchor.tooltip;"/>
 +                  <image id="web-notifications-notification-icon" class="notification-anchor-icon desktop-notification-icon" role="button"
-+                         aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
++                         tooltiptext="&urlbar.webNotificationAnchor.tooltip;"/>
 +                  <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon camera-icon" role="button"
-+                         aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
-+                  <image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon camera-icon in-use" role="button"
-+                         aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.webRTCShareDevicesNotificationAnchor.tooltip;"/>
 +                  <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon microphone-icon" role="button"
-+                         aria-label="&urlbar.webRTCShareMicrophoneNotificationAnchor.label;"/>
-+                  <image id="webRTC-sharingMicrophone-notification-icon" class="notification-anchor-icon microphone-icon in-use" role="button"
-+                         aria-label="&urlbar.webRTCSharingMicrophoneNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.webRTCShareMicrophoneNotificationAnchor.tooltip;"/>
 +                  <image id="webRTC-shareScreen-notification-icon" class="notification-anchor-icon screen-icon" role="button"
-+                         aria-label="&urlbar.webRTCShareScreenNotificationAnchor.label;"/>
-+                  <image id="webRTC-sharingScreen-notification-icon" class="notification-anchor-icon screen-icon in-use" role="button"
-+                         aria-label="&urlbar.webRTCSharingScreenNotificationAnchor.label;"/>
-+                  <image id="pointerLock-notification-icon" class="notification-anchor-icon pointerLock-icon" role="button"
-+                         aria-label="&urlbar.pointerLockNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.webRTCShareScreenNotificationAnchor.tooltip;"/>
 +                  <image id="servicesInstall-notification-icon" class="notification-anchor-icon service-icon" role="button"
-+                         aria-label="&urlbar.servicesNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.servicesNotificationAnchor.tooltip;"/>
 +                  <image id="translate-notification-icon" class="notification-anchor-icon translation-icon" role="button"
-+                         aria-label="&urlbar.translateNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.translateNotificationAnchor.tooltip;"/>
 +                  <image id="translated-notification-icon" class="notification-anchor-icon translation-icon in-use" role="button"
-+                         aria-label="&urlbar.translatedNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.translatedNotificationAnchor.tooltip;"/>
 +                  <image id="eme-notification-icon" class="notification-anchor-icon drm-icon" role="button"
-+                         aria-label="&urlbar.emeNotificationAnchor.label;"/>
++                         tooltiptext="&urlbar.emeNotificationAnchor.tooltip;"/>
 +                </box>
 +                <image id="tracking-protection-icon"/>
 +                <image id="connection-icon"/>
@@ -799,6 +764,10 @@
 +                       class="urlbar-icon"
 +                       hidden="true"
 +                       onclick="ReaderParent.buttonClick(event);"/>
++                <toolbarbutton id="urlbar-zoom-button"
++                       onclick="FullZoom.reset();"
++                       tooltiptext="&urlbar.zoomReset.tooltip;"
++                       hidden="true"/>
 +              </hbox>
 +              <hbox id="userContext-icons" hidden="true">
 +                <label id="userContext-label"/>
@@ -1080,7 +1049,7 @@
 +          <image id="sidebar-throbber"/>
 +          <toolbarbutton class="close-icon tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="SidebarUI.hide();"/>
 +        </sidebarheader>
-+        <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true"
++        <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true" disablefullscreen="true"
 +                  style="min-width: 14em; width: 18em; max-width: 36em;" tooltip="aHTMLTooltip"/>
 +      </vbox>
 +
@@ -1093,56 +1062,6 @@
 +                    contentcontextmenu="contentAreaContextMenu"
 +                    autocompletepopup="PopupAutoComplete"
 +                    selectmenulist="ContentSelectDropdown"/>
-+        <chatbar id="pinnedchats" layer="true" mousethrough="always" hidden="true"/>
-+      </vbox>
-+      <splitter id="social-sidebar-splitter"
-+                class="chromeclass-extrachrome sidebar-splitter"
-+                observes="socialSidebarBroadcaster"/>
-+      <vbox id="social-sidebar-box"
-+            class="chromeclass-extrachrome"
-+            observes="socialSidebarBroadcaster"
-+            persist="width">
-+
-+        <sidebarheader id="social-sidebar-header" class="sidebar-header" align="center">
-+          <image id="social-sidebar-favico"/>
-+          <label id="social-sidebar-title" class="sidebar-title" persist="value" flex="1" crop="end" control="sidebar"/>
-+          <toolbarbutton id="social-sidebar-button"
-+                         class="toolbarbutton-1"
-+                         type="menu">
-+            <menupopup id="social-statusarea-popup" position="after_end">
-+              <menuitem class="social-toggle-sidebar-menuitem"
-+                        type="checkbox"
-+                        autocheck="false"
-+                        command="Social:ToggleSidebar"
-+                        label="&social.toggleSidebar.label;"
-+                        accesskey="&social.toggleSidebar.accesskey;"/>
-+              <menuitem class="social-toggle-notifications-menuitem"
-+                        type="checkbox"
-+                        autocheck="false"
-+                        command="Social:ToggleNotifications"
-+                        label="&social.toggleNotifications.label;"
-+                        accesskey="&social.toggleNotifications.accesskey;"/>
-+              <menuseparator/>
-+              <menuseparator class="social-provider-menu" hidden="true"/>
-+              <menuitem class="social-addons-menuitem" command="Social:Addons"
-+                        label="&social.addons.label;"/>
-+              <menuitem label="&social.learnMore.label;"
-+                        accesskey="&social.learnMore.accesskey;"
-+                        oncommand="SocialUI.showLearnMore();"/>
-+            </menupopup>
-+          </toolbarbutton>
-+        </sidebarheader>
-+
-+        <browser id="social-sidebar-browser"
-+                 type="content"
-+                 context="contentAreaContextMenu"
-+                 message="true"
-+                 messagemanagergroup="social"
-+                 disableglobalhistory="true"
-+                 tooltip="aHTMLTooltip"
-+                 popupnotificationanchor="social-sidebar-favico"
-+                 flex="1"
-+                 style="min-width: 14em; width: 18em; max-width: 36em;"/>
 +      </vbox>
 +      <vbox id="browser-border-end" hidden="true" layer="true"/>
 +    </hbox>
@@ -1291,57 +1210,57 @@
 diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
 --- a/browser/components/preferences/in-content/main.js
 +++ b/browser/components/preferences/in-content/main.js
-@@ -23,16 +23,22 @@ var gMainPane = {
-   init: function ()
-   {
-     function setEventListener(aId, aEventType, aCallback)
-     {
-       document.getElementById(aId)
-               .addEventListener(aEventType, aCallback.bind(gMainPane));
-     }
- 
+@@ -33,16 +33,22 @@ var gMainPane = {
+       if (AppConstants.platform == "win") {
+         // In Windows 8 we launch the control panel since it's the only
+         // way to get all file type association prefs. So we don't know
+         // when the user will select the default.  We refresh here periodically
+         // in case the default changes. On other Windows OS's defaults can also
+         // be set while the prefs are open.
+         window.setInterval(this.updateSetDefaultBrowser.bind(this), 1000);
+       }
++
 +    var env = Components.classes["@mozilla.org/process/environment;1"]
 +                          .getService(Components.interfaces.nsIEnvironment);
 +    var kde_session = 0;
 +    if (env.get('KDE_FULL_SESSION') == "true")
 +        kde_session = 1;
-+
- #ifdef HAVE_SHELL_SERVICE
-     this.updateSetDefaultBrowser();
- #ifdef XP_WIN
-     // In Windows 8 we launch the control panel since it's the only
-     // way to get all file type association prefs. So we don't know
-     // when the user will select the default.  We refresh here periodically
-     // in case the default changes. On other Windows OS's defaults can also
-     // be set while the prefs are open.
-@@ -703,16 +709,27 @@ var gMainPane = {
-     let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser");
-     alwaysCheckPref.value = true;
- 
-     let shellSvc = getShellService();
-     if (!shellSvc)
-       return;
-     try {
-       shellSvc.setDefaultBrowser(true, false);
-+      if (kde_session == 1) {
-+        var shellObj = Components.classes["@mozilla.org/file/local;1"]
-+          .createInstance(Components.interfaces.nsILocalFile);
-+        shellObj.initWithPath("/usr/bin/kwriteconfig");
-+        var process = Components.classes["@mozilla.org/process/util;1"]
-+          .createInstance(Components.interfaces.nsIProcess);
-+        process.init(shellObj);
-+        var args = ["--file", "kdeglobals", "--group", "General", "--key",
-+            "BrowserApplication", "firefox"];
-+        process.run(false, args, args.length);
-+      }
-     } catch (ex) {
-       Cu.reportError(ex);
-       return;
      }
  
-     let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
-     document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
-   }
+     // set up the "use current page" label-changing listener
+     this._updateUseCurrentButton();
+     window.addEventListener("focus", this._updateUseCurrentButton.bind(this), false);
+ 
+     this.updateBrowserStartupLastSession();
+ 
+@@ -704,16 +710,27 @@ var gMainPane = {
+       let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser");
+       alwaysCheckPref.value = true;
+ 
+       let shellSvc = getShellService();
+       if (!shellSvc)
+         return;
+       try {
+         shellSvc.setDefaultBrowser(true, false);
++        if (kde_session == 1) {
++          var shellObj = Components.classes["@mozilla.org/file/local;1"]
++            .createInstance(Components.interfaces.nsILocalFile);
++          shellObj.initWithPath("/usr/bin/kwriteconfig");
++          var process = Components.classes["@mozilla.org/process/util;1"]
++            .createInstance(Components.interfaces.nsIProcess);
++          process.init(shellObj);
++          var args = ["--file", "kdeglobals", "--group", "General", "--key",
++              "BrowserApplication", "firefox"];
++          process.run(false, args, args.length);
++        }
+       } catch (ex) {
+         Cu.reportError(ex);
+         return;
+       }
+ 
+       let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
+       document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
+     }
 diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
 --- a/browser/components/shell/moz.build
 +++ b/browser/components/shell/moz.build
@@ -1657,7 +1576,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -674,16 +674,17 @@
+@@ -675,16 +675,17 @@
  @RESPATH@/greprefs.js
  @RESPATH@/defaults/autoconfig/prefcalls.js
  @RESPATH@/browser/defaults/permissions
--- a/mozilla-flex_buffer_overrun.patch	Wed Jan 18 22:06:23 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-# HG changeset patch
-# Parent  c8e8364b303892fdb5a574b96411d2d8f699a15e
-Patch lexical parser files generated by flex which may be potentially
-exploitable in a buffer overrun. These seem to come from an upstream projects
-(CMU Sphinx and ANGLE) so it should be fixed there in the first place.
-
-CVE-2016-6354
-
-https://bugzilla.suse.com/show_bug.cgi?id=990856
-
-diff --git a/gfx/angle/src/compiler/preprocessor/Tokenizer.cpp b/gfx/angle/src/compiler/preprocessor/Tokenizer.cpp
---- a/gfx/angle/src/compiler/preprocessor/Tokenizer.cpp
-+++ b/gfx/angle/src/compiler/preprocessor/Tokenizer.cpp
-@@ -1375,17 +1375,17 @@ static int yy_get_next_buffer (yyscan_t 
- 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- 		/* don't do the read, it's not guaranteed to return an EOF,
- 		 * just force an EOF
- 		 */
- 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
- 
- 	else
- 		{
--			yy_size_t num_to_read =
-+			int num_to_read =
- 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
- 
- 		while ( num_to_read <= 0 )
- 			{ /* Not enough room in the buffer - grow it. */
- 
- 			/* just a shorter name for the current buffer */
- 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
- 
-diff --git a/gfx/angle/src/compiler/translator/glslang_lex.cpp b/gfx/angle/src/compiler/translator/glslang_lex.cpp
---- a/gfx/angle/src/compiler/translator/glslang_lex.cpp
-+++ b/gfx/angle/src/compiler/translator/glslang_lex.cpp
-@@ -2269,17 +2269,17 @@ static int yy_get_next_buffer (yyscan_t 
- 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- 		/* don't do the read, it's not guaranteed to return an EOF,
- 		 * just force an EOF
- 		 */
- 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
- 
- 	else
- 		{
--			yy_size_t num_to_read =
-+			int num_to_read =
- 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
- 
- 		while ( num_to_read <= 0 )
- 			{ /* Not enough room in the buffer - grow it. */
- 
- 			/* just a shorter name for the current buffer */
- 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
- 
-diff --git a/media/sphinxbase/src/libsphinxbase/lm/jsgf_scanner.c b/media/sphinxbase/src/libsphinxbase/lm/jsgf_scanner.c
---- a/media/sphinxbase/src/libsphinxbase/lm/jsgf_scanner.c
-+++ b/media/sphinxbase/src/libsphinxbase/lm/jsgf_scanner.c
-@@ -1242,17 +1242,17 @@ static int yy_get_next_buffer (yyscan_t 
- 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- 		/* don't do the read, it's not guaranteed to return an EOF,
- 		 * just force an EOF
- 		 */
- 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
- 
- 	else
- 		{
--			yy_size_t num_to_read =
-+			int num_to_read =
- 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
- 
- 		while ( num_to_read <= 0 )
- 			{ /* Not enough room in the buffer - grow it. */
- 
- 			/* just a shorter name for the current buffer */
- 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
- 
--- a/mozilla-kde.patch	Wed Jan 18 22:06:23 2017 +0100
+++ b/mozilla-kde.patch	Fri Jan 20 23:56:59 2017 +0100
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  6ff55468281e12a84adefb46b17acb60d9cea608
+# Parent  f3e80d26a430dfa1c58421fb66144a3c23ffc166
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -27,7 +27,7 @@
  #include "prefread.h"
  #include "prefapi_private_data.h"
  
-@@ -1180,16 +1181,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
+@@ -1174,16 +1175,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
  {
@@ -62,7 +62,7 @@
      return NS_OK;
  
    bool hasMore;
-@@ -1205,17 +1224,17 @@ static nsresult pref_LoadPrefsInDirList(
+@@ -1199,17 +1218,17 @@ static nsresult pref_LoadPrefsInDirList(
  
      nsAutoCString leaf;
      path->GetNativeLeafName(leaf);
@@ -81,7 +81,7 @@
  {
    nsZipItemPtr<char> manifest(jarReader, name, true);
    NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
-@@ -1309,24 +1328,36 @@ static nsresult pref_InitInitialObjects(
+@@ -1303,24 +1322,36 @@ static nsresult pref_InitInitialObjects(
    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -187,8 +187,7 @@
 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
 --- a/toolkit/components/downloads/moz.build
 +++ b/toolkit/components/downloads/moz.build
-@@ -60,17 +60,18 @@ if not CONFIG['MOZ_SUITE']:
-         'nsDownloadManagerUI.js',
+@@ -57,16 +57,17 @@ if not CONFIG['MOZ_SUITE']:
          'nsDownloadManagerUI.manifest',
      ]
  
@@ -196,9 +195,9 @@
  
  LOCAL_INCLUDES += [
      '../protobuf',
--    '/ipc/chromium/src'
-+    '/ipc/chromium/src',
-+    '/toolkit/xre'
+     '/ipc/chromium/src',
++    '/toolkit/xre',
+     'chromium'
  ]
  
  DEFINES['GOOGLE_PROTOBUF_NO_RTTI'] = True
@@ -206,11 +205,10 @@
  
  CXXFLAGS += CONFIG['TK_CFLAGS']
  
- if CONFIG['GNU_CXX']:
 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
 --- a/toolkit/components/downloads/nsDownloadManager.cpp
 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
-@@ -51,16 +51,20 @@
+@@ -52,16 +52,20 @@
  #ifdef XP_WIN
  #include <shlobj.h>
  #include "nsWindowsHelpers.h"
@@ -228,10 +226,10 @@
  #endif
  
  #ifdef MOZ_WIDGET_ANDROID
- #include "GeneratedJNIWrappers.h"
+ #include "FennecJNIWrappers.h"
  #endif
  
-@@ -2719,16 +2723,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2723,16 +2727,25 @@ nsDownload::SetState(DownloadState aStat
        nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
  
        // Master pref to control this function.
@@ -257,7 +255,7 @@
          int64_t goat = PR_Now() - mStartTime;
          showTaskbarAlert = goat > alertIntervalUSec;
  
-@@ -2759,16 +2772,17 @@ nsDownload::SetState(DownloadState aStat
+@@ -2763,16 +2776,17 @@ nsDownload::SetState(DownloadState aStat
                    NS_LITERAL_STRING(DOWNLOAD_MANAGER_ALERT_ICON), title,
                    message, !removeWhenDone,
                    mPrivate ? NS_LITERAL_STRING("private") : NS_LITERAL_STRING("non-private"),
@@ -316,7 +314,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/dialog-kde.xml
-@@ -0,0 +1,463 @@
+@@ -0,0 +1,457 @@
 +<?xml version="1.0"?>
 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -386,8 +384,7 @@
 +        <![CDATA[
 +          if (this.hasAttribute("defaultButton"))
 +            return this.getAttribute("defaultButton");
-+          else // default to the accept button
-+            return "accept";
++          return "accept";  // default to the accept button
 +        ]]>
 +        </getter>
 +        <setter>
@@ -491,9 +488,6 @@
 +        <parameter name="aEvent"/>
 +        <body>
 +        <![CDATA[
-+          let { AppConstants } =
-+              Components.utils.import("resource://gre/modules/AppConstants.jsm", {});
-+
 +          function focusInit() {
 +            const dialog = document.documentElement;
 +            const defaultButton = dialog.getButton(dialog.defaultButton);
@@ -519,7 +513,7 @@
 +                    initialFocusedElt.focus();
 +                  }
 +                }
-+                else if (AppConstants.platform != "macosx" &&
++                else if (!/Mac/.test(navigator.platform) &&
 +                         focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
 +                  defaultButton.focus();
 +                }
@@ -604,16 +598,16 @@
 +              else
 +                switch (dlgtype) {
 +                  case "accept":
-+                    button.setAttribute("icon","accept");
++                    button.setAttribute("icon", "accept");
 +                    break;
 +                  case "cancel":
-+                    button.setAttribute("icon","cancel");
++                    button.setAttribute("icon", "cancel");
 +                    break;
 +                  case "disclosure":
-+                    button.setAttribute("icon","properties");
++                    button.setAttribute("icon", "properties");
 +                    break;
 +                  case "help":
-+                    button.setAttribute("icon","help");
++                    button.setAttribute("icon", "help");
 +                    break;
 +                  default:
 +                    break;
@@ -639,10 +633,8 @@
 +            for (dlgtype in buttons)
 +              buttons[dlgtype].hidden = !shown[dlgtype];
 +
-+            let { AppConstants } =
-+                Components.utils.import("resource://gre/modules/AppConstants.jsm", {});
 +            // show the spacer on Windows only when the extra2 button is present
-+            if (AppConstants.platform == "win") {
++            if (/Win/.test(navigator.platform)) {
 +              var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer");
 +              spacer.removeAttribute("hidden");
 +              spacer.setAttribute("flex", shown["extra2"]?"1":"0");
@@ -784,7 +776,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/preferences-kde.xml
-@@ -0,0 +1,1410 @@
+@@ -0,0 +1,1403 @@
 +<?xml version="1.0"?>
 +
 +<!DOCTYPE bindings [
@@ -1422,10 +1414,7 @@
 +            var acceptButton = docElt.getButton("accept");
 +            acceptButton.hidden = true;
 +            var cancelButton  = docElt.getButton("cancel");
-+
-+            let { AppConstants } =
-+                Components.utils.import("resource://gre/modules/AppConstants.jsm", {});
-+            if (AppConstants.platform == "macosx") {
++            if (/Mac/.test(navigator.platform)) {
 +              // no buttons on Mac except Help
 +              cancelButton.hidden = true;
 +              // Move Help button to the end
@@ -1607,9 +1596,7 @@
 +        <parameter name="aPaneElement"/>
 +        <body>
 +        <![CDATA[
-+          let { AppConstants } =
-+              Components.utils.import("resource://gre/modules/AppConstants.jsm", {});
-+          if (AppConstants.platform == "macosx") {
++          if (/Mac/.test(navigator.platform)) {
 +            var paneTitle = aPaneElement.label;
 +            if (paneTitle != "")
 +              document.title = paneTitle;
@@ -1683,11 +1670,9 @@
 +      <property name="_shouldAnimate">
 +        <getter>
 +        <![CDATA[
-+          let { AppConstants } =
-+              Components.utils.import("resource://gre/modules/AppConstants.jsm", {});
 +          var psvc = Components.classes["@mozilla.org/preferences-service;1"]
 +                               .getService(Components.interfaces.nsIPrefBranch);
-+          var animate = AppConstants.platform == "macosx";
++          var animate = /Mac/.test(navigator.platform);
 +          try {
 +            animate = psvc.getBoolPref("browser.preferences.animateFadeIn");
 +          }
@@ -1854,7 +1839,7 @@
 +    <handlers>
 +      <handler event="dialogaccept">
 +      <![CDATA[
-+        if (!this._fireEvent("beforeaccept", this)){
++        if (!this._fireEvent("beforeaccept", this)) {
 +          return false;
 +        }
 +
@@ -2292,7 +2277,7 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -39,17 +39,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -40,17 +40,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
          'updaterfileutils_osx.mm',
      ]
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -2316,7 +2301,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/xre/nsKDEUtils.cpp
-@@ -0,0 +1,339 @@
+@@ -0,0 +1,344 @@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -2337,6 +2322,11 @@
 +#include <sys/resource.h>
 +#include <unistd.h>
 +#include <X11/Xlib.h>
++// copied from X11/X.h as a hack since for an unknown
++// reason it's not picked up from X11/X.h
++#ifndef None
++#define None                 0L /* universal null resource or null atom */
++#endif
 +
 +//#define DEBUG_KDE
 +#ifdef DEBUG_KDE
@@ -3161,7 +3151,7 @@
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -90,16 +90,17 @@ else:
+@@ -101,16 +101,17 @@ else:
  include('/ipc/chromium/chromium-config.mozbuild')
  
  FINAL_LIBRARY = 'xul'
@@ -3534,25 +3524,25 @@
 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
 --- a/xpcom/components/ManifestParser.cpp
 +++ b/xpcom/components/ManifestParser.cpp
-@@ -35,16 +35,17 @@
+@@ -32,16 +32,17 @@
+ #include "nsTextFormatter.h"
+ #include "nsVersionComparator.h"
+ #include "nsXPCOMCIDInternal.h"
  
  #include "nsIConsoleService.h"
  #include "nsIScriptError.h"
  #include "nsIXULAppInfo.h"
  #include "nsIXULRuntime.h"
- #ifdef MOZ_B2G_LOADER
- #include "mozilla/XPTInterfaceInfoManager.h"
- #endif
 +#include "nsKDEUtils.h"
  
- #ifdef MOZ_B2G_LOADER
- #define XPTONLY_MANIFEST &nsComponentManagerImpl::XPTOnlyManifestManifest
- #define XPTONLY_XPT &nsComponentManagerImpl::XPTOnlyManifestXPT
- #else
- #define XPTONLY_MANIFEST nullptr
- #define XPTONLY_XPT nullptr
- #endif
-@@ -494,16 +495,17 @@ ParseManifest(NSLocationType aType, File
+ using namespace mozilla;
+ 
+ struct ManifestDirective
+ {
+   const char* directive;
+   int argc;
+ 
+@@ -472,16 +473,17 @@ ParseManifest(NSLocationType aType, File
    NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
    NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
    NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -3570,7 +3560,7 @@
    NS_NAMED_LITERAL_STRING(kMain, "main");
    NS_NAMED_LITERAL_STRING(kContent, "content");
  
-@@ -554,44 +556,49 @@ ParseManifest(NSLocationType aType, File
+@@ -532,44 +534,49 @@ ParseManifest(NSLocationType aType, File
          CopyUTF8toUTF16(s, abi);
          abi.Insert(char16_t('_'), 0);
          abi.Insert(osTarget, 0);
@@ -3620,7 +3610,7 @@
      process = kMain;
    }
  
-@@ -694,25 +701,27 @@ ParseManifest(NSLocationType aType, File
+@@ -672,25 +679,27 @@ ParseManifest(NSLocationType aType, File
      TriState stOsVersion = eUnspecified;
      TriState stOs = eUnspecified;
      TriState stABI = eUnspecified;
@@ -3648,7 +3638,7 @@
        }
  
  #if defined(MOZ_WIDGET_ANDROID)
-@@ -762,16 +771,17 @@ ParseManifest(NSLocationType aType, File
+@@ -740,16 +749,17 @@ ParseManifest(NSLocationType aType, File
      }
  
      if (!ok ||
--- a/mozilla-openaes-decl.patch	Wed Jan 18 22:06:23 2017 +0100
+++ b/mozilla-openaes-decl.patch	Fri Jan 20 23:56:59 2017 +0100
@@ -1,7 +1,7 @@
 # HG changeset patch
 # Parent 33024abb3c58dab7239e32388df58e14f99defd5
 # User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent  17196b2f3cd2bcba6a5b54f4496b5762a593c5b3
+# Parent  6005a673f4c68ed05294bedcf45d6d962bf303e6
 
 diff --git a/media/gmp-clearkey/0.1/openaes/oaes_lib.c b/media/gmp-clearkey/0.1/openaes/oaes_lib.c
 --- a/media/gmp-clearkey/0.1/openaes/oaes_lib.c
@@ -20,7 +20,7 @@
  #include <time.h> 
  #include <string.h>
  
- #include "mozilla/Snprintf.h"
+ #include "mozilla/Sprintf.h"
  
  #ifdef WIN32
  #include <process.h>
--- a/mozilla-shared-nss-db.patch	Wed Jan 18 22:06:23 2017 +0100
+++ b/mozilla-shared-nss-db.patch	Fri Jan 20 23:56:59 2017 +0100
@@ -7,13 +7,13 @@
 diff --git a/old-configure.in b/old-configure.in
 --- a/old-configure.in
 +++ b/old-configure.in
-@@ -6495,16 +6495,31 @@ if test "$MOZ_ENABLE_SKIA"; then
-     AC_DEFINE(USE_SKIA_GPU)
-     AC_SUBST(MOZ_ENABLE_SKIA_GPU)
-   fi
- fi
- AC_SUBST(MOZ_ENABLE_SKIA)
- AC_SUBST_LIST(SKIA_INCLUDES)
+@@ -5358,16 +5358,31 @@ esac
+ 
+ AC_SUBST(MOZ_TREE_CAIRO)
+ AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
+ AC_SUBST_LIST(MOZ_CAIRO_LIBS)
+ AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
+ AC_SUBST(MOZ_TREE_PIXMAN)
  
  dnl ========================================================
 +dnl Check for nss-shared-helper
@@ -42,7 +42,7 @@
 diff --git a/security/manager/ssl/moz.build b/security/manager/ssl/moz.build
 --- a/security/manager/ssl/moz.build
 +++ b/security/manager/ssl/moz.build
-@@ -159,16 +159,19 @@ if CONFIG['MOZ_XUL']:
+@@ -160,16 +160,19 @@ if CONFIG['MOZ_XUL']:
      ]
  
  UNIFIED_SOURCES += [
@@ -87,7 +87,7 @@
  #include "SharedSSLState.h"
  #include "cert.h"
  #include "certdb.h"
-@@ -1491,17 +1498,31 @@ nsNSSComponent::InitializeNSS()
+@@ -1702,17 +1709,31 @@ nsNSSComponent::InitializeNSS()
        return rv;
      }
    }
@@ -122,14 +122,14 @@
 diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build
 --- a/toolkit/library/moz.build
 +++ b/toolkit/library/moz.build
-@@ -209,16 +209,18 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
-     OS_LIBS += [
-         'rt',
-     ]
+@@ -220,16 +220,18 @@ OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
+ OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
  
- OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
- OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
- OS_LIBS += CONFIG['MOZ_SERVO_LIBS']
+ if CONFIG['SERVO_TARGET_DIR']:
+     if CONFIG['_MSC_VER']:
+         OS_LIBS += ['%s/geckoservo' % CONFIG['SERVO_TARGET_DIR']]
+     else:
+         OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo']
  
 +OS_LIBS += sorted(CONFIG['NSSHELPER_LIBS'])
 +
--- a/series	Wed Jan 18 22:06:23 2017 +0100
+++ b/series	Fri Jan 20 23:56:59 2017 +0100
@@ -18,4 +18,3 @@
 firefox-kde.patch
 firefox-no-default-ualocale.patch
 firefox-branded-icons.patch
-mozilla-flex_buffer_overrun.patch