Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package qtwebkit-opensource-src Hi RT! qtwebkit-opensource-src had two security fixes, one of them being RC. The other one was an important one, and Moritz and I decided to wait for the first stable update, but then the RC bug appeared and we Qt/KDE team decided to pack them together. I'm attaching the debdiff. Kinds regards, Lisandro. unblock qtwebkit-opensource-src/5.3.2+dfsg-4 -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (990, 'unstable'), (500, 'testing'), (101, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores) Locale: LANG=es_AR.UTF-8, LC_CTYPE=es_AR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Init: systemd (via /run/systemd/system)
diff -Nru qtwebkit-opensource-src-5.3.2+dfsg/debian/changelog qtwebkit-opensource-src-5.3.2+dfsg/debian/changelog --- qtwebkit-opensource-src-5.3.2+dfsg/debian/changelog 2014-10-17 02:06:32.000000000 -0300 +++ qtwebkit-opensource-src-5.3.2+dfsg/debian/changelog 2015-04-01 14:44:31.000000000 -0300 @@ -1,3 +1,16 @@ +qtwebkit-opensource-src (5.3.2+dfsg-4) unstable; urgency=medium + + [ Dmitry Shachnev ] + * Backport upstream fix that adds missing checks for HTMLUnknownElement. + Closes: #781194. + + [ Felix Geyer ] + * Backport upstream fix that prevents recording visited URLs to its favicon + database while using private browsing mode. + Closes: #780748. + + -- Felix Geyer <fge...@debian.org> Wed, 01 Apr 2015 19:44:29 +0200 + qtwebkit-opensource-src (5.3.2+dfsg-3) unstable; urgency=medium * Backport three patches to fix crashes: diff -Nru qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/check_html_unknown_elements.diff qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/check_html_unknown_elements.diff --- qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/check_html_unknown_elements.diff 1969-12-31 21:00:00.000000000 -0300 +++ qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/check_html_unknown_elements.diff 2015-04-01 14:20:30.000000000 -0300 @@ -0,0 +1,81 @@ +Description: need to check if some HTML child elements are HTMLUnknownElement + Based on upstream fix http://trac.webkit.org/changeset/156953 + . + The check for whether an element is an HTMLAudioElement or not was + incomplete. An element can have the 'audio' tag-name but still be + another element if media elements have been disabled. In this + case it will be an HTMLUnknownElement. +Origin: upstream, http://code.qt.io/cgit/qt/qtwebkit.git/commit/?id=d84668b5124b2dd9 +Bug-Debian: https://bugs.debian.org/781194 +Last-Update: 2015-04-01 + +--- a/Source/WebCore/dom/make_names.pl ++++ b/Source/WebCore/dom/make_names.pl +@@ -390,6 +390,10 @@ + my ($F, $tagName, $interfaceName, $constructorTagName) = @_; + + # Handle media elements. ++ # Note that wrapperOnlyIfMediaIsAvailable is a misnomer, because media availability ++ # does not just control the wrapper; it controls the element object that is created. ++ # FIXME: Could we instead do this entirely in the wrapper, and use custom wrappers ++ # instead of having all the support for this here in this script? + if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) { + print F <<END + Settings* settings = document->settings(); +@@ -1042,14 +1046,11 @@ + print F "#if ${conditionalString}\n\n"; + } + +- # Hack for the media tags +- # FIXME: This should have been done via a CustomWrapper attribute and a separate *Custom file. + if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) { + print F <<END + static JSDOMWrapper* create${JSInterfaceName}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element) + { +- Settings* settings = element->document()->settings(); +- if (!MediaPlayer::isAvailable() || (settings && !settings->mediaEnabled())) ++ if (element->isHTMLUnknownElement()) + return CREATE_DOM_WRAPPER(exec, globalObject, $parameters{namespace}Element, element.get()); + return CREATE_DOM_WRAPPER(exec, globalObject, ${JSInterfaceName}, element.get()); + } +--- a/Source/WebCore/html/HTMLAudioElement.h ++++ b/Source/WebCore/html/HTMLAudioElement.h +@@ -43,14 +43,19 @@ + HTMLAudioElement(const QualifiedName&, Document*, bool); + }; + +-inline bool isHTMLAudioElement(Node* node) ++inline bool isHTMLAudioElement(HTMLElement* element) + { +- return node->hasTagName(HTMLNames::audioTag); ++ return !element->isHTMLUnknownElement() && element->hasTagName(HTMLNames::audioTag); + } + + inline bool isHTMLAudioElement(Element* element) + { +- return element->hasTagName(HTMLNames::audioTag); ++ return element->isHTMLElement() && isHTMLAudioElement(toHTMLElement(element)); ++} ++ ++inline bool isHTMLAudioElement(Node* node) ++{ ++ return node->isHTMLElement() && isHTMLAudioElement(toHTMLElement(node)); + } + + inline HTMLAudioElement* toHTMLAudioElement(Node* node) +--- a/Source/WebCore/html/HTMLMediaElement.cpp ++++ b/Source/WebCore/html/HTMLMediaElement.cpp +@@ -2379,6 +2379,13 @@ + + bool HTMLMediaElement::paused() const + { ++ // As of this writing, JavaScript garbage collection calls this function directly. In the past ++ // we had problems where this was called on an object after a bad cast. The assertion below ++ // made our regression test detect the problem, so we should keep it because of that. But note ++ // that the value of the assertion relies on the compiler not being smart enough to know that ++ // isHTMLUnknownElement is guaranteed to return false for an HTMLMediaElement. ++ ASSERT(!isHTMLUnknownElement()); ++ + return m_paused; + } + diff -Nru qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/series qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/series --- qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/series 2014-10-14 15:52:18.000000000 -0300 +++ qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/series 2015-04-01 14:42:57.000000000 -0300 @@ -3,6 +3,7 @@ fix_cloop_on_big_endian_machines.patch fix_crash_when_a_network_request_is_aborted_while_forwarding_data.patch blacklist_libkpartsplugin.patch +webpageicons_db_privacy.patch # debian patches reduce_memory_usage.patch @@ -11,3 +12,4 @@ hurd.diff webkit_qt_hide_symbols.diff fix_nonlinux_glibc_linkage.diff +check_html_unknown_elements.diff diff -Nru qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/webpageicons_db_privacy.patch qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/webpageicons_db_privacy.patch --- qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/webpageicons_db_privacy.patch 1969-12-31 21:00:00.000000000 -0300 +++ qtwebkit-opensource-src-5.3.2+dfsg/debian/patches/webpageicons_db_privacy.patch 2015-04-01 14:41:23.000000000 -0300 @@ -0,0 +1,47 @@ +From 2810aea1f6c9cca48b93130a7c245f9a2f85637e Mon Sep 17 00:00:00 2001 +From: Florian Bruhin <g...@the-compiler.org> +Date: Wed, 18 Mar 2015 18:47:19 +0100 +Subject: Fix URLs visited during private browsing showing up in + WebpageIcons.db. + +Ported from http://trac.webkit.org/changeset/181565 by beid...@apple.com. + +Upstream patch by Sam Weinig, reviewed by Brady Eidson. + +* loader/icon/IconController.cpp: + +(WebCore::IconController::startLoader): Bail early here if the page is using an ephemeral session. +(WebCore::IconController::continueLoadWithDecision): Instead of here. + +Change-Id: I263bb6122606caa3488d641b127dd377012ee424 +Reviewed-by: Allan Sandfeld Jensen <allan.jen...@theqtcompany.com> +--- + Source/WebCore/loader/icon/IconController.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Source/WebCore/loader/icon/IconController.cpp b/Source/WebCore/loader/icon/IconController.cpp +index 8f23f6d..a808352 100644 +--- a/Source/WebCore/loader/icon/IconController.cpp ++++ b/Source/WebCore/loader/icon/IconController.cpp +@@ -159,6 +159,10 @@ void IconController::startLoader() + } + + if (iconDatabase().supportsAsynchronousMode()) { ++ // FIXME (<rdar://problem/9168605>) - We should support in-memory-only private browsing icons in asynchronous icon database mode. ++ if (iconDatabase().supportsAsynchronousMode() && m_frame->page()->settings()->privateBrowsingEnabled()) ++ return; ++ + m_frame->loader()->documentLoader()->getIconLoadDecisionForIconURL(urlString); + // Commit the icon url mapping to the database just in case we don't end up loading later. + commitToDatabase(iconURL); +@@ -202,10 +206,6 @@ void IconController::continueLoadWithDecision(IconLoadDecision iconLoadDecision) + { + ASSERT(iconLoadDecision != IconLoadUnknown); + +- // FIXME (<rdar://problem/9168605>) - We should support in-memory-only private browsing icons in asynchronous icon database mode. +- if (iconDatabase().supportsAsynchronousMode() && m_frame->page()->settings()->privateBrowsingEnabled()) +- return; +- + if (iconLoadDecision == IconLoadNo) { + KURL iconURL(url()); + String urlString(iconURL.string());