summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fixPermissions.cpp8
-rw-r--r--gui/gui.cpp3
-rw-r--r--gui/rapidxml.hpp36
3 files changed, 35 insertions, 12 deletions
diff --git a/fixPermissions.cpp b/fixPermissions.cpp
index 1d2c51829..5d4b0d208 100644
--- a/fixPermissions.cpp
+++ b/fixPermissions.cpp
@@ -443,13 +443,17 @@ int fixPermissions::getPackages() {
xmlFile.read(&xmlBuf[0], len);
xmlBuf[len] = '\0';
xml_document<> pkgDoc;
+ LOGINFO("parsing package, %i...\n", len);
pkgDoc.parse<parse_full>(&xmlBuf[0]);
xml_node<> * pkgNode = pkgDoc.first_node("packages");
+ if (pkgNode == NULL) {
+ LOGERR("No packages found to fix.\n");
+ return -1;
+ }
xml_node <> * next = pkgNode->first_node("package");
-
if (next == NULL) {
- LOGERR("No packages found to fix.\n");
+ LOGERR("No package found to fix.\n");
return -1;
}
diff --git a/gui/gui.cpp b/gui/gui.cpp
index 4c7bf5b23..87556891d 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -90,7 +90,8 @@ rapidxml::parse_error_handler (const char *what, void *where)
{
fprintf (stderr, "Parser error: %s\n", what);
fprintf (stderr, " Start of string: %s\n", (char *) where);
- abort ();
+ LOGERR("Error parsing XML file.\n");
+ //abort ();
}
static void
diff --git a/gui/rapidxml.hpp b/gui/rapidxml.hpp
index d98173ecd..c0a7be44e 100644
--- a/gui/rapidxml.hpp
+++ b/gui/rapidxml.hpp
@@ -1745,8 +1745,10 @@ namespace rapidxml
// Skip until end of declaration
while (text[0] != Ch('?') || text[1] != Ch('>'))
{
- if (!text[0])
+ if (!text[0]) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
text += 2; // Skip '?>'
@@ -1780,8 +1782,10 @@ namespace rapidxml
// Skip until end of comment
while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
{
- if (!text[0])
+ if (!text[0]) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
text += 3; // Skip '-->'
@@ -1794,8 +1798,10 @@ namespace rapidxml
// Skip until end of comment
while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
{
- if (!text[0])
+ if (!text[0]) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
@@ -1837,7 +1843,7 @@ namespace rapidxml
{
case Ch('['): ++depth; break;
case Ch(']'): --depth; break;
- case 0: RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ case 0: RAPIDXML_PARSE_ERROR("unexpected end of data", text); return 0;
}
++text;
}
@@ -1847,6 +1853,7 @@ namespace rapidxml
// Error on end of text
case Ch('\0'):
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
// Other character, skip it
default:
@@ -1903,8 +1910,10 @@ namespace rapidxml
// Skip to '?>'
while (text[0] != Ch('?') || text[1] != Ch('>'))
{
- if (*text == Ch('\0'))
+ if (*text == Ch('\0')) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
@@ -1926,8 +1935,10 @@ namespace rapidxml
// Skip to '?>'
while (text[0] != Ch('?') || text[1] != Ch('>'))
{
- if (*text == Ch('\0'))
+ if (*text == Ch('\0')) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
text += 2; // Skip '?>'
@@ -2005,8 +2016,10 @@ namespace rapidxml
// Skip until end of cdata
while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
{
- if (!text[0])
+ if (!text[0]) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
text += 3; // Skip ]]>
@@ -2017,8 +2030,10 @@ namespace rapidxml
Ch *value = text;
while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
{
- if (!text[0])
+ if (!text[0]) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
@@ -2154,8 +2169,10 @@ namespace rapidxml
++text; // Skip !
while (*text != Ch('>'))
{
- if (*text == 0)
+ if (*text == 0) {
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return 0;
+ }
++text;
}
++text; // Skip '>'
@@ -2224,6 +2241,7 @@ namespace rapidxml
// End of data - error
case Ch('\0'):
RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ return;
// Data node
default: