jenkins-bot has submitted this change and it was merged.
Change subject: Prevent selser of zero-length DSR chunks.
......................................................................
Prevent selser of zero-length DSR chunks.
We use zero-length TSRs to mark synthetic chunks of the DOM, for example
the <meta typeof="mw:Category"> generated by '#REDIRECT [[Category:Foo]]'.
We want to make sure that we don't try to selser these chunks if they
are edited.
Makes one more selser test pass, more-or-less randomly.
Change-Id: I07cf0b5432ed188f8d33eda8178d205f48f36b82
---
M js/lib/mediawiki.WikitextSerializer.js
M js/tests/parserTests-blacklist.js
2 files changed, 6 insertions(+), 2 deletions(-)
Approvals:
Subramanya Sastry: Looks good to me, approved
jenkins-bot: Verified
diff --git a/js/lib/mediawiki.WikitextSerializer.js
b/js/lib/mediawiki.WikitextSerializer.js
index c3f5892..e52fa01 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -2964,6 +2964,9 @@
// To serialize from source, we need 2 things
of the node:
// -- it should not have a diff marker
// -- it should have valid, usable DSR
+ // -- it should have a non-zero length DSR
+ // (this is used to prevent selser on
synthetic content,
+ // like the category link for '#REDIRECT
[[Category:Foo]]')
//
// SSS FIXME: Additionally, we can guard
against buggy DSR with
// some sanity checks. We can test that non-sep
src content
@@ -2973,7 +2976,9 @@
//
// TO BE DONE
//
- if (dp && isValidDSR(dp.dsr) &&
!DU.hasCurrentDiffMark(node, this.env)) {
+ if (dp && isValidDSR(dp.dsr) &&
+ (dp.dsr[1] > dp.dsr[0]) &&
+ !DU.hasCurrentDiffMark(node, this.env))
{
// Strip leading/trailing separators
*ONLY IF* the previous/following
// node will go through non-selser
serialization.
var src = state.getOrigSrc(dp.dsr[0],
dp.dsr[1]),
diff --git a/js/tests/parserTests-blacklist.js
b/js/tests/parserTests-blacklist.js
index 9f8a41a..64c4db6 100644
--- a/js/tests/parserTests-blacklist.js
+++ b/js/tests/parserTests-blacklist.js
@@ -2894,7 +2894,6 @@
add("selser", "Fuzz testing: Parser24 [3,4,1]");
add("selser", "Fuzz testing: Parser24 [4,2,[0,0,0,1],4]");
add("selser", "Fuzz testing: Parser24 [[0,[0,2]],2]");
-add("selser", "Fuzz testing: Parser24 [4,3,[0,0,0,3],[1]]");
add("selser", "Fuzz testing: Parser24 [2,[2]]");
add("selser", "Fuzz testing: Parser24 [[0,3],[0,0]]");
add("selser", "Fuzz testing: Parser24 [4,[[0]]]");
--
To view, visit https://gerrit.wikimedia.org/r/63009
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I07cf0b5432ed188f8d33eda8178d205f48f36b82
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: GWicke <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits