Skip to content

Commit

Permalink
properly mask escape sequences in quoted strings
Browse files Browse the repository at this point in the history
  • Loading branch information
xabbuh committed Sep 4, 2014
1 parent 80536d0 commit d5e769a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Symfony/Component/Yaml/Escaper.php
Expand Up @@ -26,13 +26,13 @@ class Escaper
// first to ensure proper escaping because str_replace operates iteratively
// on the input arrays. This ordering of the characters avoids the use of strtr,
// which performs more slowly.
private static $escapees = array('\\\\', '\\"', '"',
private static $escapees = array('\\', '\\\\', '\\"', '"',
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07",
"\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f",
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17",
"\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f",
"\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9");
private static $escaped = array('\\"', '\\\\', '\\"',
private static $escaped = array('\\\\', '\\"', '\\\\', '\\"',
"\\0", "\\x01", "\\x02", "\\x03", "\\x04", "\\x05", "\\x06", "\\a",
"\\b", "\\t", "\\n", "\\v", "\\f", "\\r", "\\x0e", "\\x0f",
"\\x10", "\\x11", "\\x12", "\\x13", "\\x14", "\\x15", "\\x16", "\\x17",
Expand Down
23 changes: 23 additions & 0 deletions src/Symfony/Component/Yaml/Tests/DumperTest.php
Expand Up @@ -199,6 +199,29 @@ public function testObjectSupportDisabledWithExceptions()
{
$this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true, false);
}

/**
* @dataProvider getEscapeSequences
*/
public function testEscapedEscapeSequencesInQuotedScalar($escapeSequence)
{
$this->assertEquals('"\t\\'.$escapeSequence.'"', $this->dumper->dump("\t".$escapeSequence));
}

public function getEscapeSequences()
{
return array(
'null' => array('\0'),
'bell' => array('\a'),
'backspace' => array('\b'),
'horizontal-tab' => array('\t'),
'line-feed' => array('\n'),
'vertical-tab' => array('\v'),
'form-feed' => array('\f'),
'carriage-return' => array('\r'),
'escape' => array('\e'),
);
}
}

class A
Expand Down

0 comments on commit d5e769a

Please sign in to comment.