mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Added minimal validation of parsed shares coming from server to avoid crashes due to bad formed or unexpected responses
This commit is contained in:
parent
c3f4382200
commit
9a3ad5a4ec
@ -221,7 +221,8 @@ public class ShareXMLParser {
|
|||||||
}
|
}
|
||||||
String name = parser.getName();
|
String name = parser.getName();
|
||||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||||
shares.add(readElement(parser));
|
readElement(parser, shares);
|
||||||
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
||||||
share = new OCShare();
|
share = new OCShare();
|
||||||
String value = readNode(parser, NODE_ID);
|
String value = readNode(parser, NODE_ID);
|
||||||
@ -244,7 +245,6 @@ public class ShareXMLParser {
|
|||||||
if (share != null) {
|
if (share != null) {
|
||||||
shares.add(share);
|
shares.add(share);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return shares;
|
return shares;
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ public class ShareXMLParser {
|
|||||||
* @throws XmlPullParserException
|
* @throws XmlPullParserException
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private OCShare readElement(XmlPullParser parser) throws XmlPullParserException, IOException {
|
private void readElement(XmlPullParser parser, ArrayList<OCShare> shares) throws XmlPullParserException, IOException {
|
||||||
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
||||||
|
|
||||||
OCShare share = new OCShare();
|
OCShare share = new OCShare();
|
||||||
@ -272,7 +272,9 @@ public class ShareXMLParser {
|
|||||||
String name = parser.getName();
|
String name = parser.getName();
|
||||||
|
|
||||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||||
share = readElement(parser);
|
// patch to work around servers responding with extra <element> surrounding all the shares on the same file before
|
||||||
|
// https://github.com/owncloud/core/issues/6992 was fixed
|
||||||
|
readElement(parser, shares);
|
||||||
|
|
||||||
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
||||||
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
||||||
@ -329,7 +331,13 @@ public class ShareXMLParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return share;
|
if (isValidShare(share)) {
|
||||||
|
shares.add(share);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isValidShare(OCShare share) {
|
||||||
|
return (share.getIdRemoteShared() > -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fixPathForFolder(OCShare share) {
|
private void fixPathForFolder(OCShare share) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user