Hello community, here is the log from the commit of package kdelibs3 for openSUSE:Factory checked in at Mon Jun 20 09:47:17 CEST 2011.
-------- --- KDE/kdelibs3/kdelibs3.changes 2010-04-19 20:50:03.000000000 +0200 +++ /mounts/work_src_done/STABLE/kdelibs3/kdelibs3.changes 2011-06-17 12:25:33.000000000 +0200 @@ -1,0 +2,15 @@ +Fri Jun 17 09:55:54 UTC 2011 - [email protected] + +- Add /etc/ld.so.conf.d/kdelibs3.conf (bnc#671725). + +------------------------------------------------------------------- +Sat May 7 19:49:45 UTC 2011 - [email protected] + +- added patch for scrollbars in light style v2 to prevent appearance of garbage + +------------------------------------------------------------------- +Mon Feb 21 10:37:20 UTC 2011 - [email protected] + +- Use /proc/<pid>/oom_score_adj if available as new interface. + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- kcontrol_crash_patch.diff kdelibs-3.5.10-CVE-2009-2702.patch kdelibs-3.5.10-cve-2009-1698.patch kdelibs-3.5.10-cve-2009-1725.patch kdelibs-3.5.10-cve-2009-2537-select-length.patch kdelibs-3.5.10-kio.patch kdelibs-3.5.10-latex-syntax-kile-2.0.3.patch kdelibs-3.5.4-CVE-2009-1690.patch light_v_2_scrollbar_patch.patch oom_score_adj.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdelibs3-devel-doc.spec ++++++ --- /var/tmp/diff_new_pack.jNCiCj/_old 2011-06-20 09:40:42.000000000 +0200 +++ /var/tmp/diff_new_pack.jNCiCj/_new 2011-06-20 09:40:42.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package kdelibs3-devel-doc (Version 3.5.10) +# spec file for package kdelibs3-devel-doc # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -31,7 +31,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: Additional Package Documentation Version: 3.5.10 -Release: 37 +Release: 44 %define kdelibs_patch_level b BuildArch: noarch Requires: kdelibs3 qt3-devel-doc ++++++ kdelibs3.spec ++++++ --- /var/tmp/diff_new_pack.jNCiCj/_old 2011-06-20 09:40:42.000000000 +0200 +++ /var/tmp/diff_new_pack.jNCiCj/_new 2011-06-20 09:40:42.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package kdelibs3 (Version 3.5.10) +# spec file for package kdelibs3 # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -38,7 +38,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Summary: KDE Base Libraries Version: 3.5.10 -Release: 32 +Release: 47 Obsoletes: kde3-i18n kups keramik kdelibs3-cups kdelibs3-33addons kdepim3-networkstatus Provides: kups keramik kdelibs3-cups kdelibs3-33addons kdepim3-networkstatus Provides: kdelibs3_base = 3.3 @@ -154,6 +154,18 @@ Patch161: gcc45.diff Patch162: arts-acinclude.patch Patch163: kdelibs-3.5.10-ossl-1.x.patch +Patch164: light_v_2_scrollbar_patch.patch + +Patch201: kdelibs-3.5.4-CVE-2009-1690.patch +Patch203: kdelibs-3.5.10-latex-syntax-kile-2.0.3.patch +Patch204: kdelibs-3.5.10-CVE-2009-2702.patch +Patch205: kdelibs-3.5.10-cve-2009-2537-select-length.patch +Patch206: kdelibs-3.5.10-cve-2009-1725.patch +Patch207: kdelibs-3.5.10-cve-2009-1698.patch + +Patch210: kdelibs-3.5.10-kio.patch +Patch211: oom_score_adj.patch +Patch212: kcontrol_crash_patch.diff %description This package contains kdelibs, one of the basic packages of the K @@ -211,7 +223,7 @@ # usefiles /opt/kde3/bin/dcopidl /opt/kde3/bin/dcopidl2cpp /opt/kde3/bin/kdb2html /opt/kde3/bin/preparetips Requires: qt3-devel libvorbis-devel kdelibs3 = %version autoconf automake libxslt-devel libxml2-devel libart_lgpl-devel libjpeg-devel # next line from kde3-devel-packages macro -Requires: kdelibs3-doc libtiff-devel openssl-devel unsermake update-desktop-files +Requires: kdelibs3-doc libtiff-devel openssl-devel update-desktop-files %if %suse_version > 1000 Requires: libdrm-devel dbus-1-qt3-devel %else @@ -343,6 +355,17 @@ %patch161 %patch162 -p1 %patch163 -p1 +%patch164 -p1 +%patch201 -p1 +%patch203 -p1 +%patch204 -p1 +%patch205 -p1 +%patch206 +%patch207 -p1 +%patch210 -p1 +%patch211 -p1 +%patch212 + tar xfvj %SOURCE12 # # define KDE version exactly @@ -544,6 +567,14 @@ mkdir -p $RPM_BUILD_ROOT/opt/kde3/share/applications touch $RPM_BUILD_ROOT/opt/kde3/share/applications/mimeinfo.cache %endif +# Create /etc/ld.so.conf.d/kdelibs3.conf +mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d +cat > $RPM_BUILD_ROOT/etc/ld.so.conf.d/kdelibs3.conf <<EOF +%ifarch s390x sparc64 x86_64 ppc64 +/opt/kde3/lib64 +%endif +/opt/kde3/lib +EOF %post %run_ldconfig @@ -597,6 +628,7 @@ %files %defattr(-,root,root) %doc AUTHORS COPYING COPYING.BSD COPYING.LIB NAMING README +/etc/ld.so.conf.d/kdelibs3.conf %dir /etc/opt/kde3 %dir /opt/kde3 %dir /opt/kde3/bin ++++++ kcontrol_crash_patch.diff ++++++ --- kdecore/svgicons/ksvgiconengine.cpp.orig 2011-03-15 01:29:21.172970849 +0300 +++ kdecore/svgicons/ksvgiconengine.cpp 2011-03-15 01:42:09.904779795 +0300 @@ -538,6 +538,8 @@ bool KSVGIconEngine::load(int width, int height, const QString &path) { + if(path.isNull()) return false; + QDomDocument svgDocument("svg"); QFile file(path); ++++++ kdelibs-3.5.10-CVE-2009-2702.patch ++++++ diff -pruN kdelibs-3.5.4.orig/kio/kssl/kopenssl.cc kdelibs-3.5.4/kio/kssl/kopenssl.cc --- kdelibs-3.5.4.orig/kio/kssl/kopenssl.cc 2009-08-31 20:50:12.000000000 +0200 +++ kdelibs-3.5.4/kio/kssl/kopenssl.cc 2009-08-31 21:46:47.000000000 +0200 @@ -196,6 +196,7 @@ static int (*K_X509_NAME_add_entry_by_tx static X509_NAME *(*K_X509_NAME_new)() = 0L; static int (*K_X509_REQ_set_subject_name)(X509_REQ*,X509_NAME*) = 0L; static unsigned char *(*K_ASN1_STRING_data)(ASN1_STRING*) = 0L; +static int (*K_ASN1_STRING_length)(ASN1_STRING*) = 0L; static STACK_OF(SSL_CIPHER) *(*K_SSL_get_ciphers)(const SSL *ssl) = 0L; #endif @@ -498,6 +499,7 @@ KConfig *cfg; K_X509_NAME_new = (X509_NAME *(*)()) _cryptoLib->symbol("X509_NAME_new"); K_X509_REQ_set_subject_name = (int (*)(X509_REQ*,X509_NAME*)) _cryptoLib->symbol("X509_REQ_set_subject_name"); K_ASN1_STRING_data = (unsigned char *(*)(ASN1_STRING*)) _cryptoLib->symbol("ASN1_STRING_data"); + K_ASN1_STRING_length = (int (*)(ASN1_STRING*)) _cryptoLib->symbol("ASN1_STRING_length"); #endif } @@ -1549,6 +1551,13 @@ unsigned char *KOpenSSLProxy::ASN1_STRIN return 0L; } + +int KOpenSSLProxy::ASN1_STRING_length(ASN1_STRING *x) { + if (K_ASN1_STRING_length) return (K_ASN1_STRING_length)(x); + return 0L; +} + + STACK_OF(SSL_CIPHER) *KOpenSSLProxy::SSL_get_ciphers(const SSL* ssl) { if (K_SSL_get_ciphers) return (K_SSL_get_ciphers)(ssl); return 0L; diff -pruN kdelibs-3.5.4.orig/kio/kssl/kopenssl.h kdelibs-3.5.4/kio/kssl/kopenssl.h --- kdelibs-3.5.4.orig/kio/kssl/kopenssl.h 2006-07-22 10:16:39.000000000 +0200 +++ kdelibs-3.5.4/kio/kssl/kopenssl.h 2009-08-31 21:46:47.000000000 +0200 @@ -622,6 +622,11 @@ public: unsigned char *ASN1_STRING_data(ASN1_STRING *x); /* + * ASN1_STRING_length + */ + int ASN1_STRING_length(ASN1_STRING *x); + + /* * */ int OBJ_obj2nid(ASN1_OBJECT *o); diff -pruN kdelibs-3.5.4.orig/kio/kssl/ksslcertificate.cc kdelibs-3.5.4/kio/kssl/ksslcertificate.cc --- kdelibs-3.5.4.orig/kio/kssl/ksslcertificate.cc 2006-01-19 18:06:12.000000000 +0100 +++ kdelibs-3.5.4/kio/kssl/ksslcertificate.cc 2009-08-31 21:54:38.000000000 +0200 @@ -1099,7 +1099,9 @@ QStringList KSSLCertificate::subjAltName } QString s = (const char *)d->kossl->ASN1_STRING_data(val->d.ia5); - if (!s.isEmpty()) { + if (!s.isEmpty() && + /* skip subjectAltNames with embedded NULs */ + s.length() == d->kossl->ASN1_STRING_length(val->d.ia5)) { rc += s; } } ++++++ kdelibs-3.5.10-cve-2009-1698.patch ++++++ diff -ur kdelibs-3.5.10/khtml/css/cssparser.cpp kdelibs-3.5.10-cve-2009-1698/khtml/css/cssparser.cpp --- kdelibs-3.5.10/khtml/css/cssparser.cpp 2007-01-15 12:34:04.000000000 +0100 +++ kdelibs-3.5.10-cve-2009-1698/khtml/css/cssparser.cpp 2009-07-26 05:46:39.000000000 +0200 @@ -1344,6 +1344,14 @@ if ( args->size() != 1) return false; Value *a = args->current(); + if (a->unit != CSSPrimitiveValue::CSS_IDENT) { + isValid=false; + break; + } + if (qString(a->string)[0] == '-') { + isValid=false; + break; + } parsedValue = new CSSPrimitiveValueImpl(domString(a->string), CSSPrimitiveValue::CSS_ATTR); } else @@ -1396,7 +1404,8 @@ CounterImpl *counter = new CounterImpl; Value *i = args->current(); -// if (i->unit != CSSPrimitiveValue::CSS_IDENT) goto invalid; + if (i->unit != CSSPrimitiveValue::CSS_IDENT) goto invalid; + if (qString(i->string)[0] == '-') goto invalid; counter->m_identifier = domString(i->string); if (counters) { i = args->next(); diff -ur kdelibs-3.5.10/khtml/css/css_valueimpl.cpp kdelibs-3.5.10-cve-2009-1698/khtml/css/css_valueimpl.cpp --- kdelibs-3.5.10/khtml/css/css_valueimpl.cpp 2006-07-22 10:16:49.000000000 +0200 +++ kdelibs-3.5.10-cve-2009-1698/khtml/css/css_valueimpl.cpp 2009-07-26 05:45:36.000000000 +0200 @@ -736,7 +736,9 @@ text = getValueName(m_value.ident); break; case CSSPrimitiveValue::CSS_ATTR: - // ### + text = "attr("; + text += DOMString( m_value.string ); + text += ")"; break; case CSSPrimitiveValue::CSS_COUNTER: text = "counter("; ++++++ kdelibs-3.5.10-cve-2009-1725.patch ++++++ Index: khtml/html/htmltokenizer.cpp =================================================================== --- khtml/html/htmltokenizer.cpp (revision 1002163) +++ khtml/html/htmltokenizer.cpp (revision 1002164) @@ -736,7 +736,7 @@ #ifdef TOKEN_DEBUG kdDebug( 6036 ) << "unknown entity!" << endl; #endif - checkBuffer(10); + checkBuffer(11); // ignore the sequence, add it to the buffer as plaintext *dest++ = '&'; for(unsigned int i = 0; i < cBufferPos; i++) ++++++ kdelibs-3.5.10-cve-2009-2537-select-length.patch ++++++ diff -ur kdelibs-3.5.10/khtml/ecma/kjs_html.cpp kdelibs-3.5.10-cve-2009-2537-select-length/khtml/ecma/kjs_html.cpp --- kdelibs-3.5.10/khtml/ecma/kjs_html.cpp 2008-02-13 10:41:09.000000000 +0100 +++ kdelibs-3.5.10-cve-2009-2537-select-length/khtml/ecma/kjs_html.cpp 2009-07-26 04:54:52.000000000 +0200 @@ -62,6 +62,9 @@ #include <kdebug.h> +// CVE-2009-2537 (vendors agreed on max 10000 elements) +#define MAX_SELECT_LENGTH 10000 + namespace KJS { KJS_DEFINE_PROTOTYPE_WITH_PROTOTYPE(HTMLDocumentProto, DOMDocumentProto) @@ -2550,8 +2553,14 @@ case SelectValue: { select.setValue(str); return; } case SelectLength: { // read-only according to the NS spec, but webpages need it writeable Object coll = Object::dynamicCast( getSelectHTMLCollection(exec, select.options(), select) ); - if ( coll.isValid() ) - coll.put(exec,"length",value); + + if ( coll.isValid() ) { + if (value.toInteger(exec) >= MAX_SELECT_LENGTH) { + Object err = Error::create(exec, RangeError); + exec->setException(err); + } else + coll.put(exec, "length", value); + } return; } // read-only: form ++++++ kdelibs-3.5.10-kio.patch ++++++ --- kdelibs-3.5.10/kio/kio/kzip.cpp.orig 2009-12-09 18:42:47.000000000 +0100 +++ kdelibs-3.5.10/kio/kio/kzip.cpp 2009-12-09 18:45:43.000000000 +0100 @@ -1051,6 +1051,20 @@ return true; } +bool KZip::writeDir(const QString& name, const QString& user, const QString& group) +{ + // Zip files have no explicit directories, they are implicitly created during extraction time + // when file entries have paths in them. + // However, to support empty directories, we must create a dummy file entry which ends with '/'. + QString dirName = name; + if (!name.endsWith("/")) + dirName = dirName.append('/'); + + mode_t perm = 040755; + time_t the_time = time(0); + return writeFile(dirName, user, group, 0, perm, the_time, the_time, the_time, 0); +} + // Doesn't need to be reimplemented anymore. Remove for KDE-4.0 bool KZip::writeFile( const QString& name, const QString& user, const QString& group, uint size, const char* data ) { @@ -1114,7 +1128,7 @@ } // delete entries in the filelist with the same filename as the one we want - // to save, so that we don�t have duplicate file entries when viewing the zip + // to save, so that we don�t have duplicate file entries when viewing the zip // with konqi... // CAUTION: the old file itself is still in the zip and won't be removed !!! QPtrListIterator<KZipFileEntry> it( d->m_fileList ); diff -up kdelibs-3.5.10/kio/kio/kzip.h.orig kdelibs-3.5.10/kio/kio/kzip.h --- kdelibs-3.5.10/kio/kio/kzip.h.orig 2009-12-09 19:35:42.000000000 +0100 +++ kdelibs-3.5.10/kio/kio/kzip.h 2009-12-09 19:35:48.000000000 +0100 @@ -191,10 +191,7 @@ protected: /// Closes the archive virtual bool closeArchive(); - /** - * @internal Not needed for zip - */ - virtual bool writeDir( const QString& name, const QString& user, const QString& group) { Q_UNUSED(name); Q_UNUSED(user); Q_UNUSED(group); return true; } + virtual bool writeDir(const QString& name, const QString& user, const QString& group); // TODO(BIC) uncomment and make virtual for KDE 4. // bool writeDir( const QString& name, const QString& user, const QString& group, // mode_t perm, time_t atime, time_t mtime, time_t ctime ); ++++++ kdelibs-3.5.10-latex-syntax-kile-2.0.3.patch ++++++ diff -ur kdelibs-3.5.10/kate/data/latex.xml kdelibs-3.5.10-latex-syntax-kile-2.0.3/kate/data/latex.xml --- kdelibs-3.5.10/kate/data/latex.xml 2007-05-14 09:52:27.000000000 +0200 +++ kdelibs-3.5.10-latex-syntax-kile-2.0.3/kate/data/latex.xml 2008-12-05 14:08:28.000000000 +0100 @@ -1,16 +1,18 @@ <?xml version="1.01" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd"> -<language name="LaTeX" version="1.25" section="Markup" kateversion="2.3" extensions="*.tex; *.ltx; *.dtx; *.sty; *.cls;" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout ([email protected])+Holger Danielsson ([email protected])+Michel Ludwig ([email protected])" license="LGPL" > +<language name="LaTeX" version="1.29" section="Markup" kateversion="2.3" extensions="*.tex; *.ltx; *.dtx; *.sty; *.cls;" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout ([email protected])+Holger Danielsson ([email protected])+Michel Ludwig ([email protected])+Thomas Braun ([email protected])" license="LGPL" > <highlighting> <contexts> <!-- Normal text --> <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay"> <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindEnvironment" beginRegion="block" /> <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="FindEnvironment" endRegion="block" /> - <RegExpr String="\\(label|pageref|ref|vpageref|vref|cite)(?=[^a-zA-Z])" attribute="Structure" context="Label"/> + <RegExpr String="\\(label|pageref|autoref|ref|vpageref|vref|cite)(?=[^a-zA-Z])" attribute="Structure" context="Label"/> <RegExpr String="\\(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)\*?\s*(?=[\{\[])" attribute="Structure" context="Sectioning"/> + <RegExpr String="\\(footnote)\*?\s*(?=[\{\[])" attribute="Footnote" context="Footnoting"/> <RegExpr String="\\(re)?newcommand(?=[^a-zA-Z])" attribute="Keyword" context="NewCommand"/> <RegExpr String="\\(e|g|x)?def(?=[^a-zA-Z])" attribute="Keyword" context="DefCommand"/> + <RegExpr String="<<.*>>=" attribute="Normal Text" context="NoWeb" /> <StringDetect String="\(" attribute="Math" context="MathMode" beginRegion="mathMode" /> <StringDetect String="\[" attribute="Math" context="MathModeEquation" beginRegion="mathMode" /> <DetectChar char="\" attribute="Keyword" context="ContrSeq"/> @@ -22,6 +24,11 @@ <DetectChar char="×" attribute="Bullet" context="#stay"/> </context> + <!-- NoWeb --> + <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay" > + <RegExpr String="^\s*@\s*" attribute="Normal Text" context="#pop" /> + </context> + <!-- LaTeX sectioning commands --> <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop"> <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/> @@ -59,9 +66,46 @@ <RegExpr String="[^a-zA-Z]" attribute="Structure Keyword Mathmode" context="#pop" /> </context> + <!-- LaTeX Footnote commands --> + <context name="Footnoting" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop"> + <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/> + <DetectChar char=" " attribute="Normal Text" context="#stay"/> + <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/> + <DetectChar char="}" attribute="Normal Text" context="#pop"/> + <DetectChar char="%" attribute="Comment" context="Comment"/> + </context> + <context name="FootnotingInside" attribute="Footnote Text" lineEndContext="#stay"> + <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/> + <DetectChar char="}" attribute="Normal Text" context="#pop"/> + <StringDetect String="\(" attribute="Footnote Math" context="FootnotingMathMode" beginRegion="mathMode" /> + <DetectChar char="\" attribute="Footnote Keyword" context="FootnotingContrSeq"/> + <DetectChar char="$" attribute="Footnote Math" context="FootnotingMathMode" beginRegion="mathMode" /> + <DetectChar char="%" attribute="Comment" context="Comment"/> + <DetectChar char="×" attribute="Bullet" context="#stay"/> + </context> + <context name="FootnotingContrSeq" attribute="Keyword" lineEndContext="#pop"> + <DetectChar char="×" attribute="Bullet" context="#stay"/> + <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Footnote Keyword" context="#pop"/> + <RegExpr String="[^a-zA-Z]" attribute="Footnote Keyword" context="#pop" /> + </context> + <context name="FootnotingMathMode" attribute="Footnote Math" lineEndContext="#stay"> + <StringDetect String="$$" attribute="Error" context="#stay" /> + <DetectChar char="$" attribute="Footnote Math" context="#pop" endRegion="mathMode" /> + <Detect2Chars char="\" char1=")" attribute="Footnote Math" context="#pop" endRegion="mathMode" /> + <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" /> + <DetectChar char="\" attribute="Footnote Keyword Mathmode" context="FootnotingMathContrSeq"/> + <DetectChar char="%" attribute="Comment" context="Comment"/> + <DetectChar char="×" attribute="Bullet" context="#stay"/> + </context> + <context name="FootnotingMathContrSeq" attribute="Footnote Keyword Mathmode" lineEndContext="#pop"> + <DetectChar char="×" attribute="Bullet" context="#stay"/> + <RegExpr String="[a-zA-Z]+\*?" attribute="Footnote Keyword Mathmode" context="#pop"/> + <RegExpr String="[^a-zA-Z]" attribute="Footnote Keyword Mathmode" context="#pop" /> + </context> + <!-- LaTeX commands \newcommand and \renewcommand --> <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop"> - <RegExpr String="\s*\{\s*\\[a-zA-Z]+\s*\}(\[\d\](\[[^\]]+\])?)?\{" attribute="Normal Text" context="CommandParameterStart"/> + <RegExpr String="\s*\{\s*\\[a-zA-Z]+\s*\}(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="CommandParameterStart"/> <DetectChar char="}" attribute="Error" context="#pop"/> </context> @@ -137,8 +181,9 @@ <context name="Environment" attribute="Environment" lineEndContext="#stay"> <RegExpr String="(lstlisting|(B|L)?Verbatim)" attribute="Environment" context="VerbatimEnvParam"/> <RegExpr String="(verbatim|boxedverbatim)" attribute="Environment" context="VerbatimEnv"/> - <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign)" attribute="Environment" context="MathEnv"/> <RegExpr String="(alignat|xalignat|xxalignat)" attribute="Environment" context="MathEnvParam"/> + <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign)" attribute="Environment" context="MathEnv"/> + <RegExpr String="(tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)" attribute="Environment" context="TabEnv"/> <DetectChar char="×" attribute="Bullet" context="#stay"/> <RegExpr String="[a-zA-Z]" attribute="Environment" context="LatexEnv"/> <RegExpr String="\s+" attribute="Error" context="#pop"/> @@ -228,6 +273,28 @@ <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/> </context> + <!-- environment type 9: tabular --> + <context name="TabEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop"> + <DetectChar char="}" attribute="Normal Text" context="Tab"/> + <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/> + <IncludeRules context="EnvCommon" /> + </context> + + <!-- parse tabular text --> + <context name="Tab" attribute="Tab" lineEndContext="#stay"> + <DetectChar char="&" attribute="Ampersand" context="#stay"/> + <RegExpr String="@\{.*\}" minimal="true" attribute="Column Separator" context="#stay"/> + <RegExpr String="\\end(?=\s*\{(tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?\})" attribute="Structure" context="TabFindEnd"/> + <IncludeRules context="Normal Text" /> + </context> + + <!-- end of tabular environment --> + <context name="TabFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop"> + <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/> + <RegExpr String="(tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?" attribute="Environment" context="#stay"/> + <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/> + </context> + <!-- math mode: starting with $ or \( --> <context name="MathMode" attribute="Math" lineEndContext="#stay"> <StringDetect String="$$" attribute="Error" context="#stay" /> @@ -315,11 +382,18 @@ <itemData name="Verbatim" defStyleNum="dsNormal" color="#a08000" selColor="#80D0FF" bold="0" italic="0"/> <itemData name="Region Marker" defStyleNum="dsRegionMarker" /> <itemData name="Bullet" defStyleNum="dsNormal" color="#FF00C4" bold="1" underline="1"/> + <itemData name="Ampersand" defStyleNum="dsNormal" color="#002793" bold="1" /> + <itemData name="Column Separator" defStyleNum="dsNormal" color="#002793" /> <itemData name="Alert" defStyleNum="dsAlert" /> <itemData name="Structure Text" defStyleNum="dsNormal" color="#000000" selColor="#FFFFFF" bold="1" italic="0"/> <itemData name="Structure Keyword" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="1" italic="0"/> <itemData name="Structure Math" defStyleNum="dsNormal" color="#00A000" selColor="#FF40FF" bold="1" italic="0"/> <itemData name="Structure Keyword Mathmode" defStyleNum="dsNormal" color="#606000" selColor="#FFD0FF" bold="1" italic="0"/> + <itemData name="Footnote" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="0" italic="0"/> + <itemData name="Footnote Text" defStyleNum="dsNormal" color="#000000" selColor="#FFFFFF" bold="0" italic="0"/> + <itemData name="Footnote Keyword" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="0" italic="0"/> + <itemData name="Footnote Math" defStyleNum="dsNormal" color="#00A000" selColor="#FF40FF" bold="0" italic="0"/> + <itemData name="Footnote Keyword Mathmode" defStyleNum="dsNormal" color="#606000" selColor="#FFD0FF" bold="0" italic="0"/> </itemDatas> </highlighting> ++++++ kdelibs-3.5.4-CVE-2009-1690.patch ++++++ --- kdelibs-3.5.4/khtml/html/RefPtr.h.CVE-2009-1690 2009-06-17 14:19:00.000000000 +0200 +++ kdelibs-3.5.4/khtml/html/RefPtr.h 2009-06-17 14:19:00.000000000 +0200 @@ -0,0 +1,202 @@ +// -*- mode: c++; c-basic-offset: 4 -*- +/* + * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef WTF_RefPtr_h +#define WTF_RefPtr_h + +#include <algorithm> +#include "AlwaysInline.h" + +namespace WTF { + + enum PlacementNewAdoptType { PlacementNewAdopt }; + + template <typename T> class PassRefPtr; + + enum HashTableDeletedValueType { HashTableDeletedValue }; + + template <typename T> class RefPtr { + public: + RefPtr() : m_ptr(0) { } + RefPtr(T* ptr) : m_ptr(ptr) { if (ptr) ptr->ref(); } + RefPtr(const RefPtr& o) : m_ptr(o.m_ptr) { if (T* ptr = m_ptr) ptr->ref(); } + // see comment in PassRefPtr.h for why this takes const reference + template <typename U> RefPtr(const PassRefPtr<U>&); + + // Special constructor for cases where we overwrite an object in place. + RefPtr(PlacementNewAdoptType) { } + + // Hash table deleted values, which are only constructed and never copied or destroyed. + RefPtr(HashTableDeletedValueType) : m_ptr(hashTableDeletedValue()) { } + bool isHashTableDeletedValue() const { return m_ptr == hashTableDeletedValue(); } + + ~RefPtr() { if (T* ptr = m_ptr) ptr->deref(); } + + template <typename U> RefPtr(const RefPtr<U>& o) : m_ptr(o.get()) { if (T* ptr = m_ptr) ptr->ref(); } + + T* get() const { return m_ptr; } + + void clear() { if (T* ptr = m_ptr) ptr->deref(); m_ptr = 0; } + PassRefPtr<T> release() { PassRefPtr<T> tmp = adoptRef(m_ptr); m_ptr = 0; return tmp; } + + T& operator*() const { return *m_ptr; } + ALWAYS_INLINE T* operator->() const { return m_ptr; } + + bool operator!() const { return !m_ptr; } + + // This conversion operator allows implicit conversion to bool but not to other integer types. + typedef T* RefPtr::*UnspecifiedBoolType; + operator UnspecifiedBoolType() const { return m_ptr ? &RefPtr::m_ptr : 0; } + + RefPtr& operator=(const RefPtr&); + RefPtr& operator=(T*); + RefPtr& operator=(const PassRefPtr<T>&); + template <typename U> RefPtr& operator=(const RefPtr<U>&); + template <typename U> RefPtr& operator=(const PassRefPtr<U>&); + + void swap(RefPtr&); + + private: + static T* hashTableDeletedValue() { return reinterpret_cast<T*>(-1); } + + T* m_ptr; + }; + + template <typename T> template <typename U> inline RefPtr<T>::RefPtr(const PassRefPtr<U>& o) + : m_ptr(o.releaseRef()) + { + } + + template <typename T> inline RefPtr<T>& RefPtr<T>::operator=(const RefPtr<T>& o) + { + T* optr = o.get(); + if (optr) + optr->ref(); + T* ptr = m_ptr; + m_ptr = optr; + if (ptr) + ptr->deref(); + return *this; + } + + template <typename T> template <typename U> inline RefPtr<T>& RefPtr<T>::operator=(const RefPtr<U>& o) + { + T* optr = o.get(); + if (optr) + optr->ref(); + T* ptr = m_ptr; + m_ptr = optr; + if (ptr) + ptr->deref(); + return *this; + } + + template <typename T> inline RefPtr<T>& RefPtr<T>::operator=(T* optr) + { + if (optr) + optr->ref(); + T* ptr = m_ptr; + m_ptr = optr; + if (ptr) + ptr->deref(); + return *this; + } + + template <typename T> inline RefPtr<T>& RefPtr<T>::operator=(const PassRefPtr<T>& o) + { + T* ptr = m_ptr; + m_ptr = o.releaseRef(); + if (ptr) + ptr->deref(); + return *this; + } + + template <typename T> template <typename U> inline RefPtr<T>& RefPtr<T>::operator=(const PassRefPtr<U>& o) + { + T* ptr = m_ptr; + m_ptr = o.releaseRef(); + if (ptr) + ptr->deref(); + return *this; + } + + template <class T> inline void RefPtr<T>::swap(RefPtr<T>& o) + { + std::swap(m_ptr, o.m_ptr); + } + + template <class T> inline void swap(RefPtr<T>& a, RefPtr<T>& b) + { + a.swap(b); + } + + template <typename T, typename U> inline bool operator==(const RefPtr<T>& a, const RefPtr<U>& b) + { + return a.get() == b.get(); + } + + template <typename T, typename U> inline bool operator==(const RefPtr<T>& a, U* b) + { + return a.get() == b; + } + + template <typename T, typename U> inline bool operator==(T* a, const RefPtr<U>& b) + { + return a == b.get(); + } + + template <typename T, typename U> inline bool operator!=(const RefPtr<T>& a, const RefPtr<U>& b) + { + return a.get() != b.get(); + } + + template <typename T, typename U> inline bool operator!=(const RefPtr<T>& a, U* b) + { + return a.get() != b; + } + + template <typename T, typename U> inline bool operator!=(T* a, const RefPtr<U>& b) + { + return a != b.get(); + } + + template <typename T, typename U> inline RefPtr<T> static_pointer_cast(const RefPtr<U>& p) + { + return RefPtr<T>(static_cast<T*>(p.get())); + } + + template <typename T, typename U> inline RefPtr<T> const_pointer_cast(const RefPtr<U>& p) + { + return RefPtr<T>(const_cast<T*>(p.get())); + } + + template <typename T> inline T* getPtr(const RefPtr<T>& p) + { + return p.get(); + } + +} // namespace WTF + +using WTF::RefPtr; +using WTF::static_pointer_cast; +using WTF::const_pointer_cast; + +#endif // WTF_RefPtr_h --- kdelibs-3.5.4/khtml/html/htmlparser.cpp.CVE-2009-1690 2006-07-22 10:16:43.000000000 +0200 +++ kdelibs-3.5.4/khtml/html/htmlparser.cpp 2009-06-17 11:51:15.000000000 +0200 @@ -199,7 +199,6 @@ form = 0; map = 0; - head = 0; end = false; isindex = 0; @@ -616,8 +615,7 @@ case ID_BASE: if(!head) { head = new HTMLHeadElementImpl(document); - e = head; - insertNode(e); + insertNode(head.get()); handled = true; } break; @@ -839,7 +837,7 @@ case ID_HEAD: if(!head && current->id() == ID_HTML) { head = new HTMLHeadElementImpl(document); - n = head; + n = head.get(); } break; case ID_BODY: @@ -1679,12 +1677,12 @@ head = new HTMLHeadElementImpl(document); HTMLElementImpl *body = doc()->body(); int exceptioncode = 0; - doc()->firstChild()->insertBefore(head, body, exceptioncode); + doc()->firstChild()->insertBefore(head.get(), body, exceptioncode); if ( exceptioncode ) { #ifdef PARSER_DEBUG kdDebug( 6035 ) << "creation of head failed!!!!" << endl; #endif - delete head; + delete head.get(); head = 0; } } --- kdelibs-3.5.4/khtml/html/Platform.h.CVE-2009-1690 2009-06-17 14:19:07.000000000 +0200 +++ kdelibs-3.5.4/khtml/html/Platform.h 2009-06-17 14:19:07.000000000 +0200 @@ -0,0 +1,218 @@ +/* -*- mode: c++; c-basic-offset: 4 -*- */ +/* + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WTF_Platform_h +#define WTF_Platform_h + +/* Force KDE build here in our tree... */ +#ifndef BUILDING_KDE__ +#define BUILDING_KDE__ 1 +#endif + +/* PLATFORM handles OS, operating environment, graphics API, and CPU */ +#define PLATFORM(WTF_FEATURE) (defined( WTF_PLATFORM_##WTF_FEATURE ) && WTF_PLATFORM_##WTF_FEATURE) +#define COMPILER(WTF_FEATURE) (defined( WTF_COMPILER_##WTF_FEATURE ) && WTF_COMPILER_##WTF_FEATURE) +#define HAVE(WTF_FEATURE) (defined( HAVE_##WTF_FEATURE ) && HAVE_##WTF_FEATURE) +#define USE(WTF_FEATURE) (defined( WTF_USE_##WTF_FEATURE ) && WTF_USE_##WTF_FEATURE) +#define ENABLE(WTF_FEATURE) (defined( ENABLE_##WTF_FEATURE ) && ENABLE_##WTF_FEATURE) + +/* Operating systems - low-level dependencies */ + +/* PLATFORM(DARWIN) */ +/* Operating system level dependencies for Mac OS X / Darwin that should */ +/* be used regardless of operating environment */ +#ifdef __APPLE__ +#define WTF_PLATFORM_DARWIN 1 +#endif + +/* PLATFORM(WIN_OS) */ +/* Operating system level dependencies for Windows that should be used */ +/* regardless of operating environment */ +#if defined(WIN32) || defined(_WIN32) +#define WTF_PLATFORM_WIN_OS 1 +#endif + +/* PLATFORM(UNIX) */ +/* Operating system level dependencies for Unix-like systems that */ +/* should be used regardless of operating environment */ +/* (includes PLATFORM(DARWIN)) */ +#if defined(__APPLE__) \ + || defined(unix) \ + || defined(__unix) \ + || defined(__unix__) \ + || defined (__NetBSD__) \ + || defined(_AIX) +#define WTF_PLATFORM_UNIX 1 +#endif + +/* PLATFORM(SOLARIS_OS) */ +/* Operating system level dependencies for Sun (Open)Solaris 10. */ +/* Studio 12 on Solaris defines __SunOS; gcc defines __sun__; */ +/* Both compilers define __sun and sun. */ +#if defined(__sun) || defined(sun) +#define WTF_PLATFORM_SOLARIS_OS 1 +#endif + +/* Operating environments */ + +/* I made the BUILDING_KDE__ macro up for the KDE build system to define */ + +/* PLATFORM(KDE) */ +/* PLATFORM(MAC) */ +/* PLATFORM(WIN) */ +#if BUILDING_KDE__ +#define WTF_PLATFORM_KDE 1 +#elif PLATFORM(DARWIN) +#define WTF_PLATFORM_MAC 1 +#elif PLATFORM(WIN_OS) +#define WTF_PLATFORM_WIN 1 +#endif +#if defined(BUILDING_GDK__) +#define WTF_PLATFORM_GDK 1 +#endif + + +/* CPU */ + +/* PLATFORM(PPC) */ +#if defined(__ppc__) \ + || defined(__PPC__) \ + || defined(__powerpc__) \ + || defined(__powerpc) \ + || defined(__POWERPC__) \ + || defined(_M_PPC) \ + || defined(__PPC) +#define WTF_PLATFORM_PPC 1 +#define WTF_PLATFORM_BIG_ENDIAN 1 +#endif + +/* PLATFORM(PPC64) */ +#if defined(__ppc64__) \ + || defined(__PPC64__) +#define WTF_PLATFORM_PPC64 1 +#define WTF_PLATFORM_BIG_ENDIAN 1 +#endif + +#if defined(arm) +#define WTF_PLATFORM_ARM 1 +#if defined(__ARMEB__) +#define WTF_PLATFORM_BIG_ENDIAN 1 +#elif !defined(__ARM_EABI__) && !defined(__ARMEB__) +#define WTF_PLATFORM_MIDDLE_ENDIAN 1 +#endif +#if !defined(__ARM_EABI__) +#define WTF_PLATFORM_FORCE_PACK 1 +#endif +#endif + +/* PLATFORM(X86) */ +#if defined(__i386__) \ + || defined(i386) \ + || defined(_M_IX86) \ + || defined(_X86_) \ + || defined(__THW_INTEL) +#define WTF_PLATFORM_X86 1 +#endif + +/* PLATFORM(X86_64) */ +#if defined(__x86_64__) \ + || defined(__ia64__) +#define WTF_PLATFORM_X86_64 1 +#endif + +/* PLATFORM(SPARC) */ +#if defined(sparc) +#define WTF_PLATFORM_SPARC 1 +#endif + +/* Compiler */ + +/* COMPILER(CWP) */ +#if defined(__MWERKS__) +#define WTF_COMPILER_CWP 1 +#endif + +/* COMPILER(MSVC) */ +#if defined(_MSC_VER) +#define WTF_COMPILER_MSVC 1 +#endif + +/* COMPILER(GCC) */ +#if defined(__GNUC__) +#define WTF_COMPILER_GCC 1 +#endif + +/* COMPILER(SUNPRO) */ +#if defined(__SUNPRO_CC) +#define WTF_COMPILER_SUNPRO 1 +#endif + +/* COMPILER(BORLAND) */ +/* not really fully supported - is this relevant any more? */ +#if defined(__BORLANDC__) +#define WTF_COMPILER_BORLAND 1 +#endif + +/* COMPILER(CYGWIN) */ +/* not really fully supported - is this relevant any more? */ +#if defined(__CYGWIN__) +#define WTF_COMPILER_CYGWIN 1 +#endif + +/* multiple threads only supported on Mac for now */ +#if PLATFORM(MAC) +#ifndef WTF_USE_MULTIPLE_THREADS +#define WTF_USE_MULTIPLE_THREADS 1 +#endif +#ifndef WTF_USE_BINDINGS +#define WTF_USE_BINDINGS 1 +#endif +#endif + +/* for Unicode, KDE uses Qt, everything else uses ICU */ +#if PLATFORM(KDE) || PLATFORM(QT) +#define WTF_USE_QT4_UNICODE 1 +#elif PLATFORM(SYMBIAN) +#define WTF_USE_SYMBIAN_UNICODE 1 +#else +#define WTF_USE_ICU_UNICODE 1 +#endif + +#if PLATFORM(MAC) +#define WTF_PLATFORM_CF 1 +#endif + +#if PLATFORM(WIN) +#define WTF_USE_WININET 1 +#endif + +#if PLATFORM(GDK) +#define WTF_USE_CURL 1 +#endif + +/* ENABLE macro defaults */ + +#endif /* WTF_Platform_h */ --- kdelibs-3.5.4/khtml/html/AlwaysInline.h.CVE-2009-1690 2009-06-17 14:18:52.000000000 +0200 +++ kdelibs-3.5.4/khtml/html/AlwaysInline.h 2009-06-17 13:56:36.000000000 +0200 @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2005, 2007 Apple Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include "html/Platform.h" + + +#ifndef ALWAYS_INLINE +#if COMPILER(GCC) && defined(NDEBUG) && __GNUC__ > 3 +#define ALWAYS_INLINE inline __attribute__ ((__always_inline__)) +#elif COMPILER(MSVC) && defined(NDEBUG) +#define ALWAYS_INLINE __forceinline +#else +#define ALWAYS_INLINE inline +#endif +#endif + +#ifndef ALWAYS_INLINE_INTO +#if COMPILER(GCC) && defined(NDEBUG) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || __GNUC__ > 4) +#define ALWAYS_INLINE_INTO __attribute__ ((__flatten__)) +#else +#define ALWAYS_INLINE_INTO +#endif +#endif + + +#ifndef NEVER_INLINE +#if COMPILER(GCC) && __GNUC__ > 3 +#define NEVER_INLINE __attribute__ ((__noinline__)) +#else +#define NEVER_INLINE +#endif +#endif --- kdelibs-3.5.4/khtml/html/htmlparser.h.CVE-2009-1690 2005-10-10 17:06:04.000000000 +0200 +++ kdelibs-3.5.4/khtml/html/htmlparser.h 2009-06-17 14:42:27.000000000 +0200 @@ -38,10 +38,10 @@ #include <qdatetime.h> #endif - #include "dom/dom_string.h" #include "xml/dom_nodeimpl.h" #include "html/html_documentimpl.h" +#include "html/RefPtr.h" class KHTMLView; class HTMLStackElem; @@ -148,7 +148,7 @@ /* * the head element. Needed for crappy html which defines <base> after </head> */ - DOM::HTMLHeadElementImpl *head; + RefPtr<DOM::HTMLHeadElementImpl> head; /* * a possible <isindex> element in the head. Compatibility hack for ++++++ light_v_2_scrollbar_patch.patch ++++++ diff -ur kdelibs-3.5.10.orig/kstyles/light/lightstyle-v2.cpp kdelibs-3.5.10/kstyles/light/lightstyle-v2.cpp --- kdelibs-3.5.10.orig/kstyles/light/lightstyle-v2.cpp 2006-03-17 13:19:10.000000000 +0300 +++ kdelibs-3.5.10/kstyles/light/lightstyle-v2.cpp 2011-05-07 23:30:18.000000000 +0400 @@ -501,12 +501,14 @@ p->drawLine(r.topLeft(), r.topRight()); p->setPen(cg.background()); p->drawLine(r.left(), r.top() + 1, r.right(), r.top() + 1); - fr.addCoords(0, 2, 0, 0); + p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); + fr.addCoords(0, 2, 0, -1); } else { p->drawLine(r.topLeft(), r.bottomLeft()); p->setPen(cg.background()); p->drawLine(r.left() + 1, r.top(), r.left() + 1, r.bottom()); - fr.addCoords(2, 0, 0, 0); + p->drawLine(r.right(), r.top(), r.right(), r.bottom()); + fr.addCoords(2, 0, -1, 0); } p->fillRect(fr, cg.brush((flags & Style_Down) ? @@ -523,11 +525,13 @@ if (flags & Style_Horizontal) { p->drawLine(r.topLeft(), r.topRight()); p->setPen(cg.background()); + p->drawLine(r.left(), r.bottom(), r.right(), r.bottom()); p->drawLine(r.left(), r.top() + 1, r.right(), r.top() + 1); fr.addCoords(0, 2, 0, -1); } else { p->drawLine(r.topLeft(), r.bottomLeft()); p->setPen(cg.background()); + p->drawLine(r.right(), r.top(), r.right(), r.bottom()); p->drawLine(r.left() + 1, r.top(), r.left() + 1, r.bottom()); fr.addCoords(2, 0, -1, 0); } ++++++ oom_score_adj.patch ++++++ Index: kdelibs-3.5.10/kinit/start_kdeinit.c =================================================================== --- kdelibs-3.5.10.orig/kinit/start_kdeinit.c +++ kdelibs-3.5.10/kinit/start_kdeinit.c @@ -44,11 +44,30 @@ static int set_protection( pid_t pid, in { char buf[ 1024 ]; int procfile; + struct stat st; + + /* Newer kernels (noticed in 2.6.36) */ + sprintf( buf, "/proc/%d/oom_score_adj", pid ); + if ( lstat (buf, &st) == 0) { + if( !enable ) { + /* Be paranoid and check that the pid we got from the pipe + belongs to this user. */ + if( st.st_uid != getuid()) + return 0; + } + procfile = open(buf, O_WRONLY); + if( enable ) + write( procfile, "-300", sizeof( "-300" )); + else + write( procfile, "0", sizeof( "0" )); + close( procfile ); + return 1; + } + sprintf( buf, "/proc/%d/stat", pid ); if( !enable ) { /* Be paranoid and check that the pid we got from the pipe belongs to this user. */ - struct stat st; if( lstat( buf, &st ) < 0 || st.st_uid != getuid()) return 0; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
