C. Scott Ananian has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/327779 )

Change subject: Preserve null bytes in LanguageConverter conversions.
......................................................................

Preserve null bytes in LanguageConverter conversions.

Use a replacement string to allow null bytes to be preserved.
This is a follow-up to I9b099273203482ffb570a5654d8ba50c833e526d,
and fixes a bug discovered while working on
I7fa2d85d6364958c5138366e8b4504a2697a8731.

Change-Id: I02d33ada52e3fb9ee037bc03b1a83e170bd330dd
---
M languages/LanguageConverter.php
M tests/parser/extraParserTests.txt
2 files changed, 7 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/79/327779/1

diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php
index 06fec44..f0621aa 100644
--- a/languages/LanguageConverter.php
+++ b/languages/LanguageConverter.php
@@ -360,8 +360,12 @@
                   1. HTML markups (anything between < and >)
                   2. HTML entities
                   3. placeholders created by the parser
+                  4. the replacement string we use ourselves for null bytes
                */
-               $marker = '|' . Parser::MARKER_PREFIX . '[\-a-zA-Z0-9]+';
+               $nullReplacement =
+                       Parser::MARKER_PREFIX . '-lc-null-' . 
Parser::MARKER_SUFFIX;
+               $marker = '|' . Parser::MARKER_PREFIX . '[\-a-zA-Z0-9]+'
+                       . '(' . Parser::MARKER_SUFFIX . ')?';
 
                // this one is needed when the text is inside an HTML markup
                $htmlfix = '|<[^>]+$|^[^<>]*>';
@@ -380,7 +384,7 @@
                $literalBlob = '';
 
                // Guard against delimiter nulls in the input
-               $text = str_replace( "\000", '', $text );
+               $text = str_replace( "\000", $nullReplacement, $text );
 
                $markupMatches = null;
                $elementMatches = null;
@@ -441,6 +445,7 @@
                        $translatedIter->next();
                        $literalIter->next();
                }
+               $output = str_replace( $nullReplacement, "\000", $output );
 
                return $output;
        }
diff --git a/tests/parser/extraParserTests.txt 
b/tests/parser/extraParserTests.txt
index a48087e..553d0e8 100644
--- a/tests/parser/extraParserTests.txt
+++ b/tests/parser/extraParserTests.txt
Binary files differ

-- 
To view, visit https://gerrit.wikimedia.org/r/327779
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I02d33ada52e3fb9ee037bc03b1a83e170bd330dd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: C. Scott Ananian <canan...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to