summaryrefslogtreecommitdiffstats
path: root/third_party
diff options
context:
space:
mode:
authorcevans@chromium.org <cevans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-03 17:32:37 +0000
committercevans@chromium.org <cevans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-03 17:32:37 +0000
commit4c46d7a5b0af9b7d320e709291b270ab7cf07e83 (patch)
tree54473f98f9e2cd5a30f3bc91c1f48b1e7f9a2c8f /third_party
parentb764fc41e7c9d1bc20289de710918deab72968fe (diff)
downloadchromium_src-4c46d7a5b0af9b7d320e709291b270ab7cf07e83.zip
chromium_src-4c46d7a5b0af9b7d320e709291b270ab7cf07e83.tar.gz
chromium_src-4c46d7a5b0af9b7d320e709291b270ab7cf07e83.tar.bz2
Fix XPointer bug.
BUG=125462 AUTHOR=asd@ut.ee R=cevans@chromium.org Review URL: https://chromiumcodereview.appspot.com/10344022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party')
-rw-r--r--third_party/libxml/README.chromium1
-rw-r--r--third_party/libxml/src/xpointer.c13
2 files changed, 4 insertions, 10 deletions
diff --git a/third_party/libxml/README.chromium b/third_party/libxml/README.chromium
index b3b7b3c..f3dd98c 100644
--- a/third_party/libxml/README.chromium
+++ b/third_party/libxml/README.chromium
@@ -23,6 +23,7 @@ Modifications:
- Import UTF-8 fix from upstream: http://git.gnome.org/browse/libxml2/commit/?id=0795348aeb86648723bc391e4d02e20631c10bca
- Import XPath fix http://git.gnome.org/browse/libxml2/commit/xpath.c?id=2ddecc23862bab1a9a9e51e097aefc92ec305e28
- Merge clang warning fix http://git.gnome.org/browse/libxml2/commit/?id=aae48e64dfbf2b46b157a4c1857e30645116388f
+- Add a fix for proper escaping of xpointer expressions, commit upstream is pending.
To import a new snapshot of libxml:
diff --git a/third_party/libxml/src/xpointer.c b/third_party/libxml/src/xpointer.c
index 7a42d02..ae5dd08 100644
--- a/third_party/libxml/src/xpointer.c
+++ b/third_party/libxml/src/xpointer.c
@@ -1007,21 +1007,14 @@ xmlXPtrEvalXPtrPart(xmlXPathParserContextPtr ctxt, xmlChar *name) {
NEXT;
break;
}
- *cur++ = CUR;
} else if (CUR == '(') {
level++;
- *cur++ = CUR;
} else if (CUR == '^') {
- NEXT;
- if ((CUR == ')') || (CUR == '(') || (CUR == '^')) {
- *cur++ = CUR;
- } else {
- *cur++ = '^';
- *cur++ = CUR;
+ if ((NXT(1) == ')') || (NXT(1) == '(') || (NXT(1) == '^')) {
+ NEXT;
}
- } else {
- *cur++ = CUR;
}
+ *cur++ = CUR;
NEXT;
}
*cur = 0;