mirror of
https://github.com/CTCaer/CTCaer-TWRP.git
synced 2024-11-23 02:10:00 +00:00
Improve handling of XML errors for fix permissions
This commit is contained in:
parent
91862e618e
commit
34614eb94f
@ -443,15 +443,19 @@ 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");
|
||||
xml_node <> * next = pkgNode->first_node("package");
|
||||
|
||||
if (next == NULL) {
|
||||
if (pkgNode == NULL) {
|
||||
LOGERR("No packages found to fix.\n");
|
||||
return -1;
|
||||
}
|
||||
xml_node <> * next = pkgNode->first_node("package");
|
||||
if (next == NULL) {
|
||||
LOGERR("No package found to fix.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
//Get packages
|
||||
while (next->first_attribute("name") != NULL) {
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user