summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBryce Harrington <bryce@bryceharrington.org>2014-09-14 23:03:29 +0000
committerbryce <bryce@ubuntu.com>2014-09-14 23:03:29 +0000
commit70f0a1b307456191c5f2ce103d3edbf4ca23d514 (patch)
treefff9aec49679a4fa44b908f901080c0ebaf7e0dd /src
parentFix GTK3 build (diff)
downloadinkscape-70f0a1b307456191c5f2ce103d3edbf4ca23d514.tar.gz
inkscape-70f0a1b307456191c5f2ce103d3edbf4ca23d514.zip
Always check result of sp_repr_read_mem for NULL
In cases where undefined or invalid XML is passed to sp_repr_read_mem(), it will indicate failure by returning NULL. All callers must check for this and handle the error condition accordingly. Fixes: lp: #1170248 Fixed bugs: - https://launchpad.net/bugs/1170248 (bzr r13556)
Diffstat (limited to 'src')
-rw-r--r--src/extension/prefdialog.cpp4
-rw-r--r--src/extension/system.cpp3
-rw-r--r--src/inkscape.cpp2
3 files changed, 7 insertions, 2 deletions
diff --git a/src/extension/prefdialog.cpp b/src/extension/prefdialog.cpp
index d1f83701f..3a384257c 100644
--- a/src/extension/prefdialog.cpp
+++ b/src/extension/prefdialog.cpp
@@ -90,6 +90,10 @@ PrefDialog::PrefDialog (Glib::ustring name, gchar const * help, Gtk::Widget * co
if (_effect != NULL && !_effect->no_live_preview) {
if (_param_preview == NULL) {
XML::Document * doc = sp_repr_read_mem(live_param_xml, strlen(live_param_xml), NULL);
+ if (doc == NULL) {
+ std::cout << "Error encountered loading live parameter XML !!!" << std::endl;
+ return;
+ }
_param_preview = Parameter::make(doc->root(), _effect);
}
diff --git a/src/extension/system.cpp b/src/extension/system.cpp
index c244d9c16..45feb882f 100644
--- a/src/extension/system.cpp
+++ b/src/extension/system.cpp
@@ -556,7 +556,7 @@ build_from_file(gchar const *filename)
}
/**
- * \return The module created
+ * \return The module created, or NULL if buffer is invalid
* \brief This function creates a module from a buffer holding an
* XML description.
* \param buffer The buffer holding the XML description of the module.
@@ -568,6 +568,7 @@ Extension *
build_from_mem(gchar const *buffer, Implementation::Implementation *in_imp)
{
Inkscape::XML::Document *doc = sp_repr_read_mem(buffer, strlen(buffer), INKSCAPE_EXTENSION_URI);
+ g_return_val_if_fail(doc != NULL, NULL);
Extension *ext = build_from_reprdoc(doc, in_imp);
Inkscape::GC::release(doc);
return ext;
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index 4b4c8c678..e312e15b9 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -945,7 +945,7 @@ bool inkscape_load_menus( Inkscape::Application * inkscape )
inkscape->menus = sp_repr_read_mem(menus_skeleton, MENUS_SKELETON_SIZE, NULL);
}
- return (inkscape->menus != 0);
+ return (inkscape->menus != NULL);
}