Fix addMainKey method of JsonManipulator with content having $n
This will store correctly passwords having a dolloar sign followed by a digit in the auth.json file. If the content variable has "$n" (where n consists of digits) it will match as a replacement reference for preg_replace and thus it will get stripped because there's no such parenthesized pattern.pull/5221/head
parent
c7c8335b8b
commit
3bdb0ee5fd
|
@ -353,7 +353,7 @@ class JsonManipulator
|
|||
if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) {
|
||||
$this->contents = preg_replace(
|
||||
'#'.$match[1].'\}$#',
|
||||
addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\'),
|
||||
addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'),
|
||||
$this->contents
|
||||
);
|
||||
|
||||
|
@ -363,7 +363,7 @@ class JsonManipulator
|
|||
// append at the end of the file
|
||||
$this->contents = preg_replace(
|
||||
'#\}$#',
|
||||
addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\'),
|
||||
addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'),
|
||||
$this->contents
|
||||
);
|
||||
|
||||
|
|
|
@ -2045,6 +2045,31 @@ class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
|
|||
', $manipulator->getContents());
|
||||
}
|
||||
|
||||
public function testAddMainKeyWithContentHavingDollarSignFollowedByDigit()
|
||||
{
|
||||
$manipulator = new JsonManipulator('{
|
||||
"foo": "bar"
|
||||
}');
|
||||
|
||||
$this->assertTrue($manipulator->addMainKey('bar', '$1baz'));
|
||||
$this->assertEquals('{
|
||||
"foo": "bar",
|
||||
"bar": "$1baz"
|
||||
}
|
||||
', $manipulator->getContents());
|
||||
}
|
||||
|
||||
public function testAddMainKeyWithContentHavingDollarSignFollowedByDigit2()
|
||||
{
|
||||
$manipulator = new JsonManipulator('{}');
|
||||
|
||||
$this->assertTrue($manipulator->addMainKey('foo', '$1bar'));
|
||||
$this->assertEquals('{
|
||||
"foo": "$1bar"
|
||||
}
|
||||
', $manipulator->getContents());
|
||||
}
|
||||
|
||||
public function testUpdateMainKey()
|
||||
{
|
||||
$manipulator = new JsonManipulator('{
|
||||
|
@ -2105,6 +2130,19 @@ class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
|
|||
', $manipulator->getContents());
|
||||
}
|
||||
|
||||
public function testUpdateMainKeyWithContentHavingDollarSignFollowedByDigit()
|
||||
{
|
||||
$manipulator = new JsonManipulator('{
|
||||
"foo": "bar"
|
||||
}');
|
||||
|
||||
$this->assertTrue($manipulator->addMainKey('foo', '$1bar'));
|
||||
$this->assertEquals('{
|
||||
"foo": "$1bar"
|
||||
}
|
||||
', $manipulator->getContents());
|
||||
}
|
||||
|
||||
public function testIndentDetection()
|
||||
{
|
||||
$manipulator = new JsonManipulator('{
|
||||
|
|
Loading…
Reference in New Issue