[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bkdelibs=5D_khtml=3A_Add_some_missing_null_pointer_c?=
From: Maks Orlovich <maksim () kde ! org>
Date: 2011-02-19 22:43:38
Message-ID: 20110219224338.A8374A60C6 () git ! kde ! org
[Download RAW message or body]
Git commit 34a28720abd48b5029067af4aaa9bcfbcd6df4e2 by Maks Orlovich.
Committed on 06/02/2011 at 16:52.
Pushed by orlovich into branch 'master'.
Add some missing null pointer checks spotted by crossfuzz
CCBUG: 262040
M +1 -1 khtml/ecma/kjs_dom.cpp
M +2 -2 khtml/ecma/kjs_range.cpp
M +1 -1 khtml/ecma/kjs_traversal.cpp
M +5 -0 khtml/xml/dom2_rangeimpl.cpp
M +1 -1 khtml/xml/dom_elementimpl.cpp
http://commits.kde.org/kdelibs/34a28720abd48b5029067af4aaa9bcfbcd6df4e2
diff --git a/khtml/ecma/kjs_dom.cpp b/khtml/ecma/kjs_dom.cpp
index b91a740..4fc2df7 100644
--- a/khtml/ecma/kjs_dom.cpp
+++ b/khtml/ecma/kjs_dom.cpp
@@ -1131,7 +1131,7 @@ JSValue* DOMDocumentProtoFunc::callAsFunction(ExecState *exec, \
JSObject *thisObj return getDOMEvent(exec,doc.createEvent(s, exception));
case DOMDocument::GetOverrideStyle: {
DOM::NodeImpl* arg0 = toNode(args[0]);
- if (!arg0->isElementNode())
+ if (!arg0 || !arg0->isElementNode())
return jsUndefined(); // throw exception?
else
return getDOMCSSStyleDeclaration(exec,doc.getOverrideStyle(static_cast<DOM::ElementImpl*>(arg0),args[1]->toString(exec).domString().implementation()));
diff --git a/khtml/ecma/kjs_range.cpp b/khtml/ecma/kjs_range.cpp
index 390f323..dc9840f 100644
--- a/khtml/ecma/kjs_range.cpp
+++ b/khtml/ecma/kjs_range.cpp
@@ -332,7 +332,7 @@ JSValue* DOMSelectionProtoFunc::callAsFunction(ExecState *exec, \
JSObject *thisOb case DOMSelection::Collapsed: {
DOM::NodeImpl* node = toNode(args[0]);
int offset = args[1]->toInt32(exec);
- if (node->document() == self->m_document)
+ if (node && node->document() == self->m_document)
self->m_document->part()->setCaret(DOM::Selection(DOM::Position(node, \
offset))); else
setDOMException(exec, DOMException::WRONG_DOCUMENT_ERR);
@@ -359,7 +359,7 @@ JSValue* DOMSelectionProtoFunc::callAsFunction(ExecState *exec, \
JSObject *thisOb
case DOMSelection::SelectAllChildren: {
DOM::NodeImpl* node = toNode(args[0]);
- if (node->document() == self->m_document) {
+ if (node && node->document() == self->m_document) {
DOM::RangeImpl* range = new DOM::RangeImpl(self->m_document);
range->selectNodeContents(node, exception);
self->m_document->part()->setCaret(DOM::Selection(DOM::Range(range)));
diff --git a/khtml/ecma/kjs_traversal.cpp b/khtml/ecma/kjs_traversal.cpp
index a315d9f..5f37658 100644
--- a/khtml/ecma/kjs_traversal.cpp
+++ b/khtml/ecma/kjs_traversal.cpp
@@ -294,7 +294,7 @@ DOM::NodeFilterImpl* KJS::toNodeFilter(JSValue *val)
JSValue *KJS::getDOMNodeFilter(ExecState *exec, DOM::NodeFilterImpl* nf)
{
Q_UNUSED(exec);
- if (nf->isJSFilter()) {
+ if (nf && nf->isJSFilter()) {
return static_cast<JSNodeFilter*>(nf)->filter();
}
diff --git a/khtml/xml/dom2_rangeimpl.cpp b/khtml/xml/dom2_rangeimpl.cpp
index 2a09db7..1a555e1 100644
--- a/khtml/xml/dom2_rangeimpl.cpp
+++ b/khtml/xml/dom2_rangeimpl.cpp
@@ -723,6 +723,11 @@ void RangeImpl::insertNode( NodeImpl *newNode, int \
&exceptioncode ) exceptioncode = DOMException::INVALID_STATE_ERR;
return;
}
+
+ if (!newNode) {
+ exceptioncode = DOMException::NOT_FOUND_ERR;
+ return;
+ }
// NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of either \
boundary-point of // the Range is read-only.
diff --git a/khtml/xml/dom_elementimpl.cpp b/khtml/xml/dom_elementimpl.cpp
index a576f97..2a90072 100644
--- a/khtml/xml/dom_elementimpl.cpp
+++ b/khtml/xml/dom_elementimpl.cpp
@@ -1481,7 +1481,7 @@ Node NamedAttrMapImpl::removeNamedItem(NodeImpl::Id id, const \
PrefixName& prefix
Node NamedAttrMapImpl::setNamedItem(NodeImpl* arg, const PrefixName& prefix, bool \
nsAware, int &exceptioncode ) {
- if (!m_element) {
+ if (!m_element || !arg) {
exceptioncode = DOMException::NOT_FOUND_ERR;
return 0;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic