6aec805
diff -up qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/WebCore/css/CSSParser.cpp.cve-2010-0046-css-format-mem-corruption qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/WebCore/css/CSSParser.cpp
6aec805
--- qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/WebCore/css/CSSParser.cpp.cve-2010-0046-css-format-mem-corruption	2009-09-29 13:01:35.000000000 +0200
6aec805
+++ qt-x11-opensource-src-4.5.3/src/3rdparty/webkit/WebCore/css/CSSParser.cpp	2010-02-04 15:00:24.778776273 +0100
6aec805
@@ -3085,6 +3085,12 @@ bool CSSParser::parseFontWeight(bool imp
6aec805
     return false;
6aec805
 }
6aec805
 
6aec805
+static bool isValidFormatFunction(CSSParserValue* val)
6aec805
+{
6aec805
+    CSSParserValueList* args = val->function->args;
6aec805
+    return equalIgnoringCase(val->function->name, "format(") && (args->current()->unit == CSSPrimitiveValue::CSS_STRING || args->current()->unit == CSSPrimitiveValue::CSS_IDENT);
6aec805
+}
6aec805
+
6aec805
 bool CSSParser::parseFontFaceSrc()
6aec805
 {
6aec805
     RefPtr<CSSValueList> values(CSSValueList::createCommaSeparated());
6aec805
@@ -3111,7 +3117,7 @@ bool CSSParser::parseFontFaceSrc()
6aec805
                     CSSParserValue* a = args->current();
6aec805
                     uriValue.clear();
6aec805
                     parsedValue = CSSFontFaceSrcValue::createLocal(a->string);
6aec805
-                } else if (equalIgnoringCase(val->function->name, "format(") && allowFormat && uriValue) {
6aec805
+                } else if (allowFormat && uriValue && isValidFormatFunction(val)) {
6aec805
                     expectComma = true;
6aec805
                     allowFormat = false;
6aec805
                     uriValue->setFormat(args->current()->string);