This commit is contained in:
Than Ngo 2010-08-26 18:41:15 +02:00
parent f48bc31989
commit 3815b794ba
5 changed files with 7 additions and 90 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ hi32-phonon-gstreamer.png
hi48-phonon-gstreamer.png
hi64-phonon-gstreamer.png
qt-everywhere-opensource-src-4.7.0-beta2.tar.gz
/qt-everywhere-opensource-src-4.7.0-rc1.tar.gz

View File

@ -1,47 +0,0 @@
diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp.gtk_init qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp
--- qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp.gtk_init 2010-05-03 19:43:20.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp 2010-06-18 10:11:20.738800727 -0500
@@ -35,6 +35,8 @@
namespace WebCore {
+typedef void gtkInitFunc(int *argc, char ***argv);
+
bool PluginPackage::fetchInfo()
{
if (!load())
@@ -110,6 +112,8 @@ bool PluginPackage::load()
NP_InitializeFuncPtr NP_Initialize;
NPError npErr;
+ gtkInitFunc* gtkInit;
+
NP_Initialize = (NP_InitializeFuncPtr)m_module->resolve("NP_Initialize");
m_NPP_Shutdown = (NPP_ShutdownProcPtr)m_module->resolve("NP_Shutdown");
@@ -127,6 +131,25 @@ bool PluginPackage::load()
m_browserFuncs.getvalue = staticPluginQuirkRequiresGtkToolKit_NPN_GetValue;
}
+ // WORKAROUND: Prevent gtk based plugin crashes such as BR# 40567 by
+ // explicitly forcing the initializing of Gtk, i.e. calling gtk_init,
+ // whenver the symbol is present in the plugin library loaded above.
+ // Note that this workaround is based on code from the NSPluginClass ctor
+ // in KDE's kdebase/apps/nsplugins/viewer/nsplugin.cpp file.
+ gtkInit = (gtkInitFunc*)m_module->resolve("gtk_init");
+ if (gtkInit) {
+ // Prevent gtk_init() from replacing the X error handlers, since the Gtk
+ // handlers abort when they receive an X error, thus killing the viewer.
+#ifdef Q_WS_X11
+ int (*old_error_handler)(Display*, XErrorEvent*) = XSetErrorHandler(0);
+ int (*old_io_error_handler)(Display*) = XSetIOErrorHandler(0);
+#endif
+ gtkInit(0, 0);
+#ifdef Q_WS_X11
+ XSetErrorHandler(old_error_handler);
+ XSetIOErrorHandler(old_io_error_handler);
+#endif
+ }
#if defined(XP_UNIX)
npErr = NP_Initialize(&m_browserFuncs, &m_pluginFuncs);
#else

View File

@ -1,25 +0,0 @@
diff -up qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp.system_ca_certificates qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp
--- qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp.system_ca_certificates 2009-09-29 06:01:38.000000000 -0500
+++ qt-x11-opensource-src-4.5.3/src/network/ssl/qsslsocket_openssl.cpp 2009-10-02 11:20:10.674662746 -0500
@@ -482,8 +482,20 @@ void QSslSocketPrivate::resetDefaultCiph
QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
{
+
+ QFile caBundle;
+
+#ifdef Q_OS_UNIX
+ // Check known locations for the system's default bundle. ### On Windows,
+ // we should use CAPI to find the bundle, and not rely on default unix
+ // locations.
+ caBundle.setFileName(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"));
+ if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text))
+ return QSslCertificate::fromDevice(&caBundle);
+#endif
+
// Qt provides a default bundle of certificates
- QFile caBundle(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt"));
+ caBundle.setFileName(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt"));
if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text))
return QSslCertificate::fromDevice(&caBundle);

13
qt.spec
View File

@ -11,13 +11,13 @@
# enable kde-qt integration/patches
#define kde_qt 1
%define pre beta2
%define pre rc1
Summary: Qt toolkit
Name: qt
Epoch: 1
Version: 4.7.0
Release: 0.26.%{pre}%{?dist}
Release: 0.27.%{pre}%{?dist}
# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
License: LGPLv2 with exceptions or GPLv3 with exceptions
@ -45,8 +45,6 @@ Patch15: qt-x11-opensource-src-4.5.1-enable_ft_lcdfilter.patch
# omit for now, (seems?) causes unwelcome side-effects -- Rex
Patch16: qt-everywhere-opensource-src-4.7.0-beta2-kde4_plugins.patch
Patch19: qt-everywhere-opensource-src-4.7.0-beta2-phonon_servicesfile.patch
# use system ca-bundle certs, http://bugzilla.redhat.com/521911
Patch22: qt-x11-opensource-src-4.5.3-system_ca_certificates.patch
Requires: ca-certificates
# may be upstreamable, not sure yet
# workaround for gdal/grass crashers wrt glib_eventloop null deref's
@ -68,8 +66,6 @@ Patch58: qt-everywhere-opensource-src-4.7.0-beta1-qtwebkit_pluginpath.patch
# security patches
# upstream patches
# https://bugs.webkit.org/show_bug.cgi?id=40567
Patch100: qt-everywhere-opensource-src-4.7.0-beta1-qtwebkit_gtk_init.patch
# http://bugreports.qt.nokia.com/browse/QTBUG-10809
Patch101: http://qt.gitorious.org/+qt-developers/qt/staging/commit/9a1b0695277a3864b42d082095962f8742cdcf04.patch
@ -417,7 +413,6 @@ Qt libraries used for drawing widgets and OpenGL items.
%patch15 -p1 -b .enable_ft_lcdfilter
#patch16 -p1 -b .kde4_plugins
%patch19 -p1 -b .phonon_servicesfile
%patch22 -p1 -b .system_ca_certificates
%patch23 -p1 -b .glib_eventloop_nullcheck
## TODO: still worth carrying? if so, upstream it.
%patch53 -p1 -b .qatomic-inline-asm
@ -430,7 +425,6 @@ Qt libraries used for drawing widgets and OpenGL items.
# security fixes
# upstream patches
%patch100 -p1 -b .qtwebkit_gtk_init
%patch101 -p1 -b .QTBUG-10809
# kde-qt branch
@ -1097,6 +1091,9 @@ fi
%changelog
* Thu Aug 26 2010 Than Ngo <than@redhat.com> - 4.7.0-0.27.rc1
- 4.7.0 rc1
* Thu Jul 08 2010 Rex Dieter <rdieter@fedoraproject.org> - 4.7.0-0.26.beta2
- rebase patches, avoiding use of patch fuzz
- omit old qt-copy/kde-qt patches, pending review

11
sources
View File

@ -1,10 +1 @@
d9f511e4b51983b4e10eb58b320416d5 hi128-app-qt4-logo.png
6dcc0672ff9e60a6b83f95c5f42bec5b hi48-app-qt4-logo.png
8e3924f417fea67f72b2105faed2119c gstreamer-logo.svg
60de9d7e1cddd019f09fd036f0e5413a hi128-phonon-gstreamer.png
7ca265e0cf75b3b4c81e1490d3dba3be hi16-phonon-gstreamer.png
0a9f69d901aded140d4fed969c22e14f hi22-phonon-gstreamer.png
12db12c009b722a6dc141f78feb7e330 hi32-phonon-gstreamer.png
86c34a1b81d44980b1381f94ed6b7a23 hi48-phonon-gstreamer.png
153505c71ec021b0a3bd4b74f2492e93 hi64-phonon-gstreamer.png
1449443c2d33ab9fefbd37b7104d0cdf qt-everywhere-opensource-src-4.7.0-beta2.tar.gz
6ba503cea2f91c38b34594ed68c15d9a qt-everywhere-opensource-src-4.7.0-rc1.tar.gz