View Issue Details

IDProjectCategoryView StatusLast Update
0001512XdebugStep Debuggingpublic2018-01-22 18:21
ReporterLanaZem Assigned Toderick  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version2.6.0beta1 
Target Version2.6.0Fixed in Version2.6.0rc1 
Summary0001512: Xdebug does not properly encode and escape properties with quotes and \0 characters.
Description

If class fqn is included in property name Xdebug will escape "name" and "fullname" in 'property_get' response.

If no fqn is included then only "fullname" will be escaped.

Steps To Reproduce

1) Create a php file
<?php

namespace TestA\TestB\TestC;

class A
{
private $items;

public function __construct()
{
    $this->items = array(array(1, 2));
}

}

class B extends A {
public function foo() {
$v = array(array("\\" => 1));
echo 1; // Set breakpoint here and inspect $v and $items
}
}

(new B())->foo();

2) Put breakpoint inside 'foo' method and start debugging.

3) Call 'property_get' command for 'TestA\TestB\TestC\Aitems'.
<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

Expected:
<property name="$this->TestA\TestB\TestC\Aitems" fullname="$this->TestA\TestB\TestC\Aitems" type="array" children="1" numchildren="1" page="0" pagesize="100">
<property name="0" fullname="$this->TestA\TestB\TestC\Aitems[0]" type="int"><![CDATA[1]]></property>
</property>

Actual:
<property name="$this->TestA\TestB\TestC\Aitems" fullname="$this->TestA\TestB\TestC\Aitems" type="array" children="1" numchildren="1" page="0" pagesize="100">
<property name="0" fullname="$this->TestA\TestB\TestC\Aitems[0]" type="int"><![CDATA[1]]></property>
</property>

4) Call 'property_get' command for '$v[0]'
<- property_get -i 24 -n $v[0] -d 0 -c 0 -p 0

Expected:
<property name="$v[0]" fullname="$v[0]" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="\" fullname="$v[0]["\"]" type="int"><![CDATA[1]]></property>
</property>

Actual:
<property name="$v[0]" fullname="$v[0]" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="\" fullname="$v[0]["\\"]" type="int"><![CDATA[1]]></property>
</property>

TagsNo tags attached.
Attached Files
xdebug_2.6beta_escaped_name.log (41,235 bytes)   
Log opened at 2018-01-05 12:40:31
I: Connecting to configured address/port: 127.0.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" language="PHP" xdebug:language_version="7.1.1" protocol_version="1.0" appid="22749" idekey="10983"><engine version="2.6.0beta1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init>

<- feature_set -i 1 -n show_hidden -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>

<- feature_set -i 2 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>

<- feature_set -i 3 -n max_children -v 100
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>

<- feature_set -i 4 -n extended_properties -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="4" feature="extended_properties" success="1"></response>

<- status -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="5" status="starting" reason="ok"></response>

<- step_into -i 6
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="6" status="break" reason="ok"><xdebug:message filename="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" lineno="5"></xdebug:message></response>

<- breakpoint_set -i 7 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/no_escaped_name.php -n 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="7" id="227490001"></response>

<- breakpoint_set -i 8 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/test2.php -n 29
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="8" id="227490002"></response>

<- breakpoint_set -i 9 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/spl_xdebug_fail.php -n 17
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="9" id="227490003"></response>

<- breakpoint_set -i 10 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/test.php -n 50
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="10" id="227490004"></response>

<- breakpoint_set -i 11 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/extended_properties.php -n 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="11" id="227490005"></response>

<- breakpoint_set -i 12 -t line -f file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php -n 18
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="12" id="227490006"></response>

<- stack_get -i 13
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="13"><stack where="{main}" level="0" type="file" filename="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" lineno="5"></stack></response>

<- run -i 14
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="14" status="break" reason="ok"><xdebug:message filename="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" lineno="18"></xdebug:message></response>

<- stack_get -i 15
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="15"><stack where="TestA\TestB\TestC\B-&gt;foo" level="0" type="file" filename="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" lineno="18"></stack><stack where="{main}" level="1" type="file" filename="file:///home/user/PhpstormProjects/xdebug_escaping/escaped_name.php" lineno="22"></stack></response>

<- context_names -i 16
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="16"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>

<- context_names -i 17
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_names" transaction_id="17"><context name="Locals" id="0"></context><context name="Superglobals" id="1"></context><context name="User defined constants" id="2"></context></response>

<- context_get -i 18 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="18" context="0"><property name="$v" fullname="$v" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="0" fullname="$v[0]" type="array" children="1" numchildren="1"></property></property><property name="$this" fullname="$this" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="1" page="0" pagesize="100"><property name="*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" facet="private" type="array" children="1" numchildren="1"></property></property></response>

<- context_get -i 19 -d 0 -c 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="19" context="0"><property name="$v" fullname="$v" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="0" fullname="$v[0]" type="array" children="1" numchildren="1"></property></property><property name="$this" fullname="$this" type="object" classname="TestA\TestB\TestC\B" children="1" numchildren="1" page="0" pagesize="100"><property name="*TestA\TestB\TestC\A*items" fullname="$this-&gt;*TestA\TestB\TestC\A*items" facet="private" type="array" children="1" numchildren="1"></property></property></response>

<- context_get -i 20 -d 0 -c 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="20" context="1"><property name="$_COOKIE" fullname="$_COOKIE" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_ENV" fullname="$_ENV" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_FILES" fullname="$_FILES" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_GET" fullname="$_GET" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_POST" fullname="$_POST" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_REQUEST" fullname="$_REQUEST" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_SERVER" fullname="$_SERVER" type="array" children="1" numchildren="88" page="0" pagesize="100"><property name="PATH" fullname="$_SERVER[&quot;PATH&quot;]" type="string" size="176" encoding="base64"><![CDATA[Li9iaW4vOi4vc2Jpbi86Li9nYW1lcy86Li4vYmluLzouLi9zYmluLzovaG9tZS91c2VyL2JpbjovaG9tZS91c2VyLy5sb2NhbC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4=]]></property><property name="XAUTHORITY" fullname="$_SERVER[&quot;XAUTHORITY&quot;]" type="string" size="22" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uWGF1dGhvcml0eQ==]]></property><property name="LC_MEASUREMENT" fullname="$_SERVER[&quot;LC_MEASUREMENT&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="LC_TELEPHONE" fullname="$_SERVER[&quot;LC_TELEPHONE&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XMODIFIERS" fullname="$_SERVER[&quot;XMODIFIERS&quot;]" type="string" size="8" encoding="base64"><![CDATA[QGltPWlidXM=]]></property><property name="MANDATORY_PATH" fullname="$_SERVER[&quot;MANDATORY_PATH&quot;]" type="string" size="37" encoding="base64"><![CDATA[L3Vzci9zaGFyZS9nY29uZi9nbm9tZS5tYW5kYXRvcnkucGF0aA==]]></property><property name="GDMSESSION" fullname="$_SERVER[&quot;GDMSESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="XDG_DATA_DIRS" fullname="$_SERVER[&quot;XDG_DATA_DIRS&quot;]" type="string" size="78" encoding="base64"><![CDATA[Li9zaGFyZS86L3Vzci9zaGFyZS9nbm9tZTovdXNyL2xvY2FsL3NoYXJlLzovdXNyL3NoYXJlLzovdmFyL2xpYi9zbmFwZC9kZXNrdG9w]]></property><property name="LC_TIME" fullname="$_SERVER[&quot;LC_TIME&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="PAPERSIZE" fullname="$_SERVER[&quot;PAPERSIZE&quot;]" type="string" size="6" encoding="base64"><![CDATA[bGV0dGVy]]></property><property name="GTK_IM_MODULE" fullname="$_SERVER[&quot;GTK_IM_MODULE&quot;]" type="string" size="4" encoding="base64"><![CDATA[aWJ1cw==]]></property><property name="QT_QPA_PLATFORM_PLUGIN_PATH" fullname="$_SERVER[&quot;QT_QPA_PLATFORM_PLUGIN_PATH&quot;]" type="string" size="23" encoding="base64"><![CDATA[c2hhcmUvamV0YnJhaW5zLXRvb2xib3g=]]></property><property name="DBUS_SESSION_BUS_ADDRESS" fullname="$_SERVER[&quot;DBUS_SESSION_BUS_ADDRESS&quot;]" type="string" size="34" encoding="base64"><![CDATA[dW5peDphYnN0cmFjdD0vdG1wL2RidXMtMDNaYmF5ZDA1Sw==]]></property><property name="DEFAULTS_PATH" fullname="$_SERVER[&quot;DEFAULTS_PATH&quot;]" type="string" size="35" encoding="base64"><![CDATA[L3Vzci9zaGFyZS9nY29uZi9nbm9tZS5kZWZhdWx0LnBhdGg=]]></property><property name="APPIMAGE" fullname="$_SERVER[&quot;APPIMAGE&quot;]" type="string" size="63" encoding="base64"><![CDATA[L2hvbWUvdXNlci8ubG9jYWwvc2hhcmUvSmV0QnJhaW5zL1Rvb2xib3gvYmluL2pldGJyYWlucy10b29sYm94]]></property><property name="XDG_CURRENT_DESKTOP" fullname="$_SERVER[&quot;XDG_CURRENT_DESKTOP&quot;]" type="string" size="5" encoding="base64"><![CDATA[R05PTUU=]]></property><property name="DESKTOP_AUTOSTART_ID" fullname="$_SERVER[&quot;DESKTOP_AUTOSTART_ID&quot;]" type="string" size="48" encoding="base64"><![CDATA[MTAzMDkzOTI2MThjMTkwNmIwMTUxNDk5MDY4MTUyNDI3ODAwMDAwMDE3MTYwMDAz]]></property><property name="LD_LIBRARY_PATH" fullname="$_SERVER[&quot;LD_LIBRARY_PATH&quot;]" type="string" size="199" encoding="base64"><![CDATA[c2hhcmUvamV0YnJhaW5zLXRvb2xib3g6c2hhcmUvamV0YnJhaW5zLXRvb2xib3gvbGliOi4vbGliLzouL2xpYi9pMzg2LWxpbnV4LWdudS86Li9saWIveDg2XzY0LWxpbnV4LWdudS86Li9saWIzMi86Li9saWI2NC86Li4vbGliLzouLi9saWIvaTM4Ni1saW51eC1nbnUvOi4uL2xpYi94ODZfNjQtbGludXgtZ251LzouLi9saWIzMi86Li4vbGliNjQvOg==]]></property><property name="QT4_IM_MODULE" fullname="$_SERVER[&quot;QT4_IM_MODULE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eGlt]]></property><property name="UPSTART_SESSION" fullname="$_SERVER[&quot;UPSTART_SESSION&quot;]" type="string" size="51" encoding="base64"><![CDATA[dW5peDphYnN0cmFjdD0vY29tL3VidW50dS91cHN0YXJ0LXNlc3Npb24vMTAwMC8xNDYx]]></property><property name="QT_LINUX_ACCESSIBILITY_ALWAYS_ON" fullname="$_SERVER[&quot;QT_LINUX_ACCESSIBILITY_ALWAYS_ON&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="SESSION_MANAGER" fullname="$_SERVER[&quot;SESSION_MANAGER&quot;]" type="string" size="71" encoding="base64"><![CDATA[bG9jYWwvbXVuaXQtMDcwOkAvdG1wLy5JQ0UtdW5peC8xNzE2LHVuaXgvbXVuaXQtMDcwOi90bXAvLklDRS11bml4LzE3MTY=]]></property><property name="LC_PAPER" fullname="$_SERVER[&quot;LC_PAPER&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="LOGNAME" fullname="$_SERVER[&quot;LOGNAME&quot;]" type="string" size="4" encoding="base64"><![CDATA[dXNlcg==]]></property><property name="XDEBUG_CONFIG" fullname="$_SERVER[&quot;XDEBUG_CONFIG&quot;]" type="string" size="12" encoding="base64"><![CDATA[aWRla2V5PTEwOTgz]]></property><property name="PWD" fullname="$_SERVER[&quot;PWD&quot;]" type="string" size="43" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZw==]]></property><property name="JOB" fullname="$_SERVER[&quot;JOB&quot;]" type="string" size="4" encoding="base64"><![CDATA[ZGJ1cw==]]></property><property name="IM_CONFIG_PHASE" fullname="$_SERVER[&quot;IM_CONFIG_PHASE&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="LANGUAGE" fullname="$_SERVER[&quot;LANGUAGE&quot;]" type="string" size="8" encoding="base64"><![CDATA[ZW5fVVM6ZW4=]]></property><property name="force_s3tc_enable" fullname="$_SERVER[&quot;force_s3tc_enable&quot;]" type="string" size="4" encoding="base64"><![CDATA[dHJ1ZQ==]]></property><property name="PYTHONPATH" fullname="$_SERVER[&quot;PYTHONPATH&quot;]" type="string" size="18" encoding="base64"><![CDATA[Li9zaGFyZS9weXNoYXJlZC86]]></property><property name="SHELL" fullname="$_SERVER[&quot;SHELL&quot;]" type="string" size="9" encoding="base64"><![CDATA[L2Jpbi9iYXNo]]></property><property name="LC_ADDRESS" fullname="$_SERVER[&quot;LC_ADDRESS&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="GIO_LAUNCHED_DESKTOP_FILE" fullname="$_SERVER[&quot;GIO_LAUNCHED_DESKTOP_FILE&quot;]" type="string" size="54" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uY29uZmlnL2F1dG9zdGFydC9qZXRicmFpbnMtdG9vbGJveC5kZXNrdG9w]]></property><property name="INSTANCE" fullname="$_SERVER[&quot;INSTANCE&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="GTK2_MODULES" fullname="$_SERVER[&quot;GTK2_MODULES&quot;]" type="string" size="17" encoding="base64"><![CDATA[b3ZlcmxheS1zY3JvbGxiYXI=]]></property><property name="OLDPWD" fullname="$_SERVER[&quot;OLDPWD&quot;]" type="string" size="73" encoding="base64"><![CDATA[L2hvbWUvdXNlci8ubG9jYWwvc2hhcmUvSmV0QnJhaW5zL1Rvb2xib3gvYXBwcy9JREVBLVUvY2gtMC8xNzMuNDMwMS4xL2Jpbg==]]></property><property name="GNOME_DESKTOP_SESSION_ID" fullname="$_SERVER[&quot;GNOME_DESKTOP_SESSION_ID&quot;]" type="string" size="18" encoding="base64"><![CDATA[dGhpcy1pcy1kZXByZWNhdGVk]]></property><property name="GTK_MODULES" fullname="$_SERVER[&quot;GTK_MODULES&quot;]" type="string" size="15" encoding="base64"><![CDATA[Z2FpbDphdGstYnJpZGdl]]></property><property name="CLUTTER_IM_MODULE" fullname="$_SERVER[&quot;CLUTTER_IM_MODULE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eGlt]]></property><property name="XDG_SESSION_PATH" fullname="$_SERVER[&quot;XDG_SESSION_PATH&quot;]" type="string" size="40" encoding="base64"><![CDATA[L29yZy9mcmVlZGVza3RvcC9EaXNwbGF5TWFuYWdlci9TZXNzaW9uMA==]]></property><property name="APPDIR" fullname="$_SERVER[&quot;APPDIR&quot;]" type="string" size="18" encoding="base64"><![CDATA[L3RtcC8ubW91bnRfaHg5NFl1]]></property><property name="SESSIONTYPE" fullname="$_SERVER[&quot;SESSIONTYPE&quot;]" type="string" size="13" encoding="base64"><![CDATA[Z25vbWUtc2Vzc2lvbg==]]></property><property name="XDG_SESSION_DESKTOP" fullname="$_SERVER[&quot;XDG_SESSION_DESKTOP&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="SHLVL" fullname="$_SERVER[&quot;SHLVL&quot;]" type="string" size="1" encoding="base64"><![CDATA[MA==]]></property><property name="LC_IDENTIFICATION" fullname="$_SERVER[&quot;LC_IDENTIFICATION&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="QT_PLUGIN_PATH" fullname="$_SERVER[&quot;QT_PLUGIN_PATH&quot;]" type="string" size="262" encoding="base64"><![CDATA[Li9saWIvcXQ0L3BsdWdpbnMvOi4vbGliL2kzODYtbGludXgtZ251L3F0NC9wbHVnaW5zLzouL2xpYi94ODZfNjQtbGludXgtZ251L3F0NC9wbHVnaW5zLzouL2xpYjMyL3F0NC9wbHVnaW5zLzouL2xpYjY0L3F0NC9wbHVnaW5zLzouL2xpYi9xdDUvcGx1Z2lucy86Li9saWIvaTM4Ni1saW51eC1nbnUvcXQ1L3BsdWdpbnMvOi4vbGliL3g4Nl82NC1saW51eC1nbnUvcXQ1L3BsdWdpbnMvOi4vbGliMzIvcXQ1L3BsdWdpbnMvOi4vbGliNjQvcXQ1L3BsdWdpbnMvOg==]]></property><property name="LC_MONETARY" fullname="$_SERVER[&quot;LC_MONETARY&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="QT_IM_MODULE" fullname="$_SERVER[&quot;QT_IM_MODULE&quot;]" type="string" size="4" encoding="base64"><![CDATA[aWJ1cw==]]></property><property name="XFILESEARCHPATH" fullname="$_SERVER[&quot;XFILESEARCHPATH&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3Vzci9kdC9hcHAtZGVmYXVsdHMvJUwvRHQ=]]></property><property name="XDG_CONFIG_DIRS" fullname="$_SERVER[&quot;XDG_CONFIG_DIRS&quot;]" type="string" size="50" encoding="base64"><![CDATA[L2V0Yy94ZGcveGRnLWdub21lOi91c3Ivc2hhcmUvdXBzdGFydC94ZGc6L2V0Yy94ZGc=]]></property><property name="XDG_SEAT_PATH" fullname="$_SERVER[&quot;XDG_SEAT_PATH&quot;]" type="string" size="37" encoding="base64"><![CDATA[L29yZy9mcmVlZGVza3RvcC9EaXNwbGF5TWFuYWdlci9TZWF0MA==]]></property><property name="GNOME_KEYRING_CONTROL" fullname="$_SERVER[&quot;GNOME_KEYRING_CONTROL&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="LANG" fullname="$_SERVER[&quot;LANG&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XDG_SESSION_TYPE" fullname="$_SERVER[&quot;XDG_SESSION_TYPE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eDEx]]></property><property name="PERLLIB" fullname="$_SERVER[&quot;PERLLIB&quot;]" type="string" size="28" encoding="base64"><![CDATA[Li9zaGFyZS9wZXJsNS86Li9saWIvcGVybDUvOg==]]></property><property name="XDG_SESSION_ID" fullname="$_SERVER[&quot;XDG_SESSION_ID&quot;]" type="string" size="2" encoding="base64"><![CDATA[YzI=]]></property><property name="DISPLAY" fullname="$_SERVER[&quot;DISPLAY&quot;]" type="string" size="2" encoding="base64"><![CDATA[OjA=]]></property><property name="OWD" fullname="$_SERVER[&quot;OWD&quot;]" type="string" size="10" encoding="base64"><![CDATA[L2hvbWUvdXNlcg==]]></property><property name="LC_NAME" fullname="$_SERVER[&quot;LC_NAME&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="GDM_LANG" fullname="$_SERVER[&quot;GDM_LANG&quot;]" type="string" size="5" encoding="base64"><![CDATA[ZW5fVVM=]]></property><property name="XDG_GREETER_DATA_DIR" fullname="$_SERVER[&quot;XDG_GREETER_DATA_DIR&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3Zhci9saWIvbGlnaHRkbS1kYXRhL3VzZXI=]]></property><property name="SESSION" fullname="$_SERVER[&quot;SESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="DESKTOP_SESSION" fullname="$_SERVER[&quot;DESKTOP_SESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="GPG_AGENT_INFO" fullname="$_SERVER[&quot;GPG_AGENT_INFO&quot;]" type="string" size="33" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uZ251cGcvUy5ncGctYWdlbnQ6MDox]]></property><property name="USER" fullname="$_SERVER[&quot;USER&quot;]" type="string" size="4" encoding="base64"><![CDATA[dXNlcg==]]></property><property name="XDG_MENU_PREFIX" fullname="$_SERVER[&quot;XDG_MENU_PREFIX&quot;]" type="string" size="6" encoding="base64"><![CDATA[Z25vbWUt]]></property><property name="GIO_LAUNCHED_DESKTOP_FILE_PID" fullname="$_SERVER[&quot;GIO_LAUNCHED_DESKTOP_FILE_PID&quot;]" type="string" size="4" encoding="base64"><![CDATA[MTkxMQ==]]></property><property name="QT_ACCESSIBILITY" fullname="$_SERVER[&quot;QT_ACCESSIBILITY&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="LC_NUMERIC" fullname="$_SERVER[&quot;LC_NUMERIC&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XDG_SEAT" fullname="$_SERVER[&quot;XDG_SEAT&quot;]" type="string" size="5" encoding="base64"><![CDATA[c2VhdDA=]]></property><property name="SSH_AUTH_SOCK" fullname="$_SERVER[&quot;SSH_AUTH_SOCK&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3J1bi91c2VyLzEwMDAva2V5cmluZy9zc2g=]]></property><property name="NLSPATH" fullname="$_SERVER[&quot;NLSPATH&quot;]" type="string" size="29" encoding="base64"><![CDATA[L3Vzci9kdC9saWIvbmxzL21zZy8lTC8lTi5jYXQ=]]></property><property name="QT_QPA_PLATFORMTHEME" fullname="$_SERVER[&quot;QT_QPA_PLATFORMTHEME&quot;]" type="string" size="11" encoding="base64"><![CDATA[YXBwbWVudS1xdDU=]]></property><property name="GSETTINGS_SCHEMA_DIR" fullname="$_SERVER[&quot;GSETTINGS_SCHEMA_DIR&quot;]" type="string" size="26" encoding="base64"><![CDATA[Li9zaGFyZS9nbGliLTIuMC9zY2hlbWFzLzo=]]></property><property name="XDG_RUNTIME_DIR" fullname="$_SERVER[&quot;XDG_RUNTIME_DIR&quot;]" type="string" size="14" encoding="base64"><![CDATA[L3J1bi91c2VyLzEwMDA=]]></property><property name="XDG_VTNR" fullname="$_SERVER[&quot;XDG_VTNR&quot;]" type="string" size="1" encoding="base64"><![CDATA[Nw==]]></property><property name="HOME" fullname="$_SERVER[&quot;HOME&quot;]" type="string" size="10" encoding="base64"><![CDATA[L2hvbWUvdXNlcg==]]></property><property name="GNOME_KEYRING_PID" fullname="$_SERVER[&quot;GNOME_KEYRING_PID&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="PHP_SELF" fullname="$_SERVER[&quot;PHP_SELF&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="SCRIPT_NAME" fullname="$_SERVER[&quot;SCRIPT_NAME&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="SCRIPT_FILENAME" fullname="$_SERVER[&quot;SCRIPT_FILENAME&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="PATH_TRANSLATED" fullname="$_SERVER[&quot;PATH_TRANSLATED&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="DOCUMENT_ROOT" fullname="$_SERVER[&quot;DOCUMENT_ROOT&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="REQUEST_TIME_FLOAT" fullname="$_SERVER[&quot;REQUEST_TIME_FLOAT&quot;]" type="float"><![CDATA[1515156031.1789]]></property><property name="REQUEST_TIME" fullname="$_SERVER[&quot;REQUEST_TIME&quot;]" type="int"><![CDATA[1515156031]]></property><property name="argv" fullname="$_SERVER[&quot;argv&quot;]" type="array" children="1" numchildren="1"></property><property name="argc" fullname="$_SERVER[&quot;argc&quot;]" type="int"><![CDATA[1]]></property></property></response>

<- context_get -i 21 -d 0 -c 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="21" context="1"><property name="$_COOKIE" fullname="$_COOKIE" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_ENV" fullname="$_ENV" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_FILES" fullname="$_FILES" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_GET" fullname="$_GET" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_POST" fullname="$_POST" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_REQUEST" fullname="$_REQUEST" type="array" children="0" numchildren="0" page="0" pagesize="100"></property><property name="$_SERVER" fullname="$_SERVER" type="array" children="1" numchildren="88" page="0" pagesize="100"><property name="PATH" fullname="$_SERVER[&quot;PATH&quot;]" type="string" size="176" encoding="base64"><![CDATA[Li9iaW4vOi4vc2Jpbi86Li9nYW1lcy86Li4vYmluLzouLi9zYmluLzovaG9tZS91c2VyL2JpbjovaG9tZS91c2VyLy5sb2NhbC9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovc25hcC9iaW4=]]></property><property name="XAUTHORITY" fullname="$_SERVER[&quot;XAUTHORITY&quot;]" type="string" size="22" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uWGF1dGhvcml0eQ==]]></property><property name="LC_MEASUREMENT" fullname="$_SERVER[&quot;LC_MEASUREMENT&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="LC_TELEPHONE" fullname="$_SERVER[&quot;LC_TELEPHONE&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XMODIFIERS" fullname="$_SERVER[&quot;XMODIFIERS&quot;]" type="string" size="8" encoding="base64"><![CDATA[QGltPWlidXM=]]></property><property name="MANDATORY_PATH" fullname="$_SERVER[&quot;MANDATORY_PATH&quot;]" type="string" size="37" encoding="base64"><![CDATA[L3Vzci9zaGFyZS9nY29uZi9nbm9tZS5tYW5kYXRvcnkucGF0aA==]]></property><property name="GDMSESSION" fullname="$_SERVER[&quot;GDMSESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="XDG_DATA_DIRS" fullname="$_SERVER[&quot;XDG_DATA_DIRS&quot;]" type="string" size="78" encoding="base64"><![CDATA[Li9zaGFyZS86L3Vzci9zaGFyZS9nbm9tZTovdXNyL2xvY2FsL3NoYXJlLzovdXNyL3NoYXJlLzovdmFyL2xpYi9zbmFwZC9kZXNrdG9w]]></property><property name="LC_TIME" fullname="$_SERVER[&quot;LC_TIME&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="PAPERSIZE" fullname="$_SERVER[&quot;PAPERSIZE&quot;]" type="string" size="6" encoding="base64"><![CDATA[bGV0dGVy]]></property><property name="GTK_IM_MODULE" fullname="$_SERVER[&quot;GTK_IM_MODULE&quot;]" type="string" size="4" encoding="base64"><![CDATA[aWJ1cw==]]></property><property name="QT_QPA_PLATFORM_PLUGIN_PATH" fullname="$_SERVER[&quot;QT_QPA_PLATFORM_PLUGIN_PATH&quot;]" type="string" size="23" encoding="base64"><![CDATA[c2hhcmUvamV0YnJhaW5zLXRvb2xib3g=]]></property><property name="DBUS_SESSION_BUS_ADDRESS" fullname="$_SERVER[&quot;DBUS_SESSION_BUS_ADDRESS&quot;]" type="string" size="34" encoding="base64"><![CDATA[dW5peDphYnN0cmFjdD0vdG1wL2RidXMtMDNaYmF5ZDA1Sw==]]></property><property name="DEFAULTS_PATH" fullname="$_SERVER[&quot;DEFAULTS_PATH&quot;]" type="string" size="35" encoding="base64"><![CDATA[L3Vzci9zaGFyZS9nY29uZi9nbm9tZS5kZWZhdWx0LnBhdGg=]]></property><property name="APPIMAGE" fullname="$_SERVER[&quot;APPIMAGE&quot;]" type="string" size="63" encoding="base64"><![CDATA[L2hvbWUvdXNlci8ubG9jYWwvc2hhcmUvSmV0QnJhaW5zL1Rvb2xib3gvYmluL2pldGJyYWlucy10b29sYm94]]></property><property name="XDG_CURRENT_DESKTOP" fullname="$_SERVER[&quot;XDG_CURRENT_DESKTOP&quot;]" type="string" size="5" encoding="base64"><![CDATA[R05PTUU=]]></property><property name="DESKTOP_AUTOSTART_ID" fullname="$_SERVER[&quot;DESKTOP_AUTOSTART_ID&quot;]" type="string" size="48" encoding="base64"><![CDATA[MTAzMDkzOTI2MThjMTkwNmIwMTUxNDk5MDY4MTUyNDI3ODAwMDAwMDE3MTYwMDAz]]></property><property name="LD_LIBRARY_PATH" fullname="$_SERVER[&quot;LD_LIBRARY_PATH&quot;]" type="string" size="199" encoding="base64"><![CDATA[c2hhcmUvamV0YnJhaW5zLXRvb2xib3g6c2hhcmUvamV0YnJhaW5zLXRvb2xib3gvbGliOi4vbGliLzouL2xpYi9pMzg2LWxpbnV4LWdudS86Li9saWIveDg2XzY0LWxpbnV4LWdudS86Li9saWIzMi86Li9saWI2NC86Li4vbGliLzouLi9saWIvaTM4Ni1saW51eC1nbnUvOi4uL2xpYi94ODZfNjQtbGludXgtZ251LzouLi9saWIzMi86Li4vbGliNjQvOg==]]></property><property name="QT4_IM_MODULE" fullname="$_SERVER[&quot;QT4_IM_MODULE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eGlt]]></property><property name="UPSTART_SESSION" fullname="$_SERVER[&quot;UPSTART_SESSION&quot;]" type="string" size="51" encoding="base64"><![CDATA[dW5peDphYnN0cmFjdD0vY29tL3VidW50dS91cHN0YXJ0LXNlc3Npb24vMTAwMC8xNDYx]]></property><property name="QT_LINUX_ACCESSIBILITY_ALWAYS_ON" fullname="$_SERVER[&quot;QT_LINUX_ACCESSIBILITY_ALWAYS_ON&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="SESSION_MANAGER" fullname="$_SERVER[&quot;SESSION_MANAGER&quot;]" type="string" size="71" encoding="base64"><![CDATA[bG9jYWwvbXVuaXQtMDcwOkAvdG1wLy5JQ0UtdW5peC8xNzE2LHVuaXgvbXVuaXQtMDcwOi90bXAvLklDRS11bml4LzE3MTY=]]></property><property name="LC_PAPER" fullname="$_SERVER[&quot;LC_PAPER&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="LOGNAME" fullname="$_SERVER[&quot;LOGNAME&quot;]" type="string" size="4" encoding="base64"><![CDATA[dXNlcg==]]></property><property name="XDEBUG_CONFIG" fullname="$_SERVER[&quot;XDEBUG_CONFIG&quot;]" type="string" size="12" encoding="base64"><![CDATA[aWRla2V5PTEwOTgz]]></property><property name="PWD" fullname="$_SERVER[&quot;PWD&quot;]" type="string" size="43" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZw==]]></property><property name="JOB" fullname="$_SERVER[&quot;JOB&quot;]" type="string" size="4" encoding="base64"><![CDATA[ZGJ1cw==]]></property><property name="IM_CONFIG_PHASE" fullname="$_SERVER[&quot;IM_CONFIG_PHASE&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="LANGUAGE" fullname="$_SERVER[&quot;LANGUAGE&quot;]" type="string" size="8" encoding="base64"><![CDATA[ZW5fVVM6ZW4=]]></property><property name="force_s3tc_enable" fullname="$_SERVER[&quot;force_s3tc_enable&quot;]" type="string" size="4" encoding="base64"><![CDATA[dHJ1ZQ==]]></property><property name="PYTHONPATH" fullname="$_SERVER[&quot;PYTHONPATH&quot;]" type="string" size="18" encoding="base64"><![CDATA[Li9zaGFyZS9weXNoYXJlZC86]]></property><property name="SHELL" fullname="$_SERVER[&quot;SHELL&quot;]" type="string" size="9" encoding="base64"><![CDATA[L2Jpbi9iYXNo]]></property><property name="LC_ADDRESS" fullname="$_SERVER[&quot;LC_ADDRESS&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="GIO_LAUNCHED_DESKTOP_FILE" fullname="$_SERVER[&quot;GIO_LAUNCHED_DESKTOP_FILE&quot;]" type="string" size="54" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uY29uZmlnL2F1dG9zdGFydC9qZXRicmFpbnMtdG9vbGJveC5kZXNrdG9w]]></property><property name="INSTANCE" fullname="$_SERVER[&quot;INSTANCE&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="GTK2_MODULES" fullname="$_SERVER[&quot;GTK2_MODULES&quot;]" type="string" size="17" encoding="base64"><![CDATA[b3ZlcmxheS1zY3JvbGxiYXI=]]></property><property name="OLDPWD" fullname="$_SERVER[&quot;OLDPWD&quot;]" type="string" size="73" encoding="base64"><![CDATA[L2hvbWUvdXNlci8ubG9jYWwvc2hhcmUvSmV0QnJhaW5zL1Rvb2xib3gvYXBwcy9JREVBLVUvY2gtMC8xNzMuNDMwMS4xL2Jpbg==]]></property><property name="GNOME_DESKTOP_SESSION_ID" fullname="$_SERVER[&quot;GNOME_DESKTOP_SESSION_ID&quot;]" type="string" size="18" encoding="base64"><![CDATA[dGhpcy1pcy1kZXByZWNhdGVk]]></property><property name="GTK_MODULES" fullname="$_SERVER[&quot;GTK_MODULES&quot;]" type="string" size="15" encoding="base64"><![CDATA[Z2FpbDphdGstYnJpZGdl]]></property><property name="CLUTTER_IM_MODULE" fullname="$_SERVER[&quot;CLUTTER_IM_MODULE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eGlt]]></property><property name="XDG_SESSION_PATH" fullname="$_SERVER[&quot;XDG_SESSION_PATH&quot;]" type="string" size="40" encoding="base64"><![CDATA[L29yZy9mcmVlZGVza3RvcC9EaXNwbGF5TWFuYWdlci9TZXNzaW9uMA==]]></property><property name="APPDIR" fullname="$_SERVER[&quot;APPDIR&quot;]" type="string" size="18" encoding="base64"><![CDATA[L3RtcC8ubW91bnRfaHg5NFl1]]></property><property name="SESSIONTYPE" fullname="$_SERVER[&quot;SESSIONTYPE&quot;]" type="string" size="13" encoding="base64"><![CDATA[Z25vbWUtc2Vzc2lvbg==]]></property><property name="XDG_SESSION_DESKTOP" fullname="$_SERVER[&quot;XDG_SESSION_DESKTOP&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="SHLVL" fullname="$_SERVER[&quot;SHLVL&quot;]" type="string" size="1" encoding="base64"><![CDATA[MA==]]></property><property name="LC_IDENTIFICATION" fullname="$_SERVER[&quot;LC_IDENTIFICATION&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="QT_PLUGIN_PATH" fullname="$_SERVER[&quot;QT_PLUGIN_PATH&quot;]" type="string" size="262" encoding="base64"><![CDATA[Li9saWIvcXQ0L3BsdWdpbnMvOi4vbGliL2kzODYtbGludXgtZ251L3F0NC9wbHVnaW5zLzouL2xpYi94ODZfNjQtbGludXgtZ251L3F0NC9wbHVnaW5zLzouL2xpYjMyL3F0NC9wbHVnaW5zLzouL2xpYjY0L3F0NC9wbHVnaW5zLzouL2xpYi9xdDUvcGx1Z2lucy86Li9saWIvaTM4Ni1saW51eC1nbnUvcXQ1L3BsdWdpbnMvOi4vbGliL3g4Nl82NC1saW51eC1nbnUvcXQ1L3BsdWdpbnMvOi4vbGliMzIvcXQ1L3BsdWdpbnMvOi4vbGliNjQvcXQ1L3BsdWdpbnMvOg==]]></property><property name="LC_MONETARY" fullname="$_SERVER[&quot;LC_MONETARY&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="QT_IM_MODULE" fullname="$_SERVER[&quot;QT_IM_MODULE&quot;]" type="string" size="4" encoding="base64"><![CDATA[aWJ1cw==]]></property><property name="XFILESEARCHPATH" fullname="$_SERVER[&quot;XFILESEARCHPATH&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3Vzci9kdC9hcHAtZGVmYXVsdHMvJUwvRHQ=]]></property><property name="XDG_CONFIG_DIRS" fullname="$_SERVER[&quot;XDG_CONFIG_DIRS&quot;]" type="string" size="50" encoding="base64"><![CDATA[L2V0Yy94ZGcveGRnLWdub21lOi91c3Ivc2hhcmUvdXBzdGFydC94ZGc6L2V0Yy94ZGc=]]></property><property name="XDG_SEAT_PATH" fullname="$_SERVER[&quot;XDG_SEAT_PATH&quot;]" type="string" size="37" encoding="base64"><![CDATA[L29yZy9mcmVlZGVza3RvcC9EaXNwbGF5TWFuYWdlci9TZWF0MA==]]></property><property name="GNOME_KEYRING_CONTROL" fullname="$_SERVER[&quot;GNOME_KEYRING_CONTROL&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="LANG" fullname="$_SERVER[&quot;LANG&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XDG_SESSION_TYPE" fullname="$_SERVER[&quot;XDG_SESSION_TYPE&quot;]" type="string" size="3" encoding="base64"><![CDATA[eDEx]]></property><property name="PERLLIB" fullname="$_SERVER[&quot;PERLLIB&quot;]" type="string" size="28" encoding="base64"><![CDATA[Li9zaGFyZS9wZXJsNS86Li9saWIvcGVybDUvOg==]]></property><property name="XDG_SESSION_ID" fullname="$_SERVER[&quot;XDG_SESSION_ID&quot;]" type="string" size="2" encoding="base64"><![CDATA[YzI=]]></property><property name="DISPLAY" fullname="$_SERVER[&quot;DISPLAY&quot;]" type="string" size="2" encoding="base64"><![CDATA[OjA=]]></property><property name="OWD" fullname="$_SERVER[&quot;OWD&quot;]" type="string" size="10" encoding="base64"><![CDATA[L2hvbWUvdXNlcg==]]></property><property name="LC_NAME" fullname="$_SERVER[&quot;LC_NAME&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="GDM_LANG" fullname="$_SERVER[&quot;GDM_LANG&quot;]" type="string" size="5" encoding="base64"><![CDATA[ZW5fVVM=]]></property><property name="XDG_GREETER_DATA_DIR" fullname="$_SERVER[&quot;XDG_GREETER_DATA_DIR&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3Zhci9saWIvbGlnaHRkbS1kYXRhL3VzZXI=]]></property><property name="SESSION" fullname="$_SERVER[&quot;SESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="DESKTOP_SESSION" fullname="$_SERVER[&quot;DESKTOP_SESSION&quot;]" type="string" size="5" encoding="base64"><![CDATA[Z25vbWU=]]></property><property name="GPG_AGENT_INFO" fullname="$_SERVER[&quot;GPG_AGENT_INFO&quot;]" type="string" size="33" encoding="base64"><![CDATA[L2hvbWUvdXNlci8uZ251cGcvUy5ncGctYWdlbnQ6MDox]]></property><property name="USER" fullname="$_SERVER[&quot;USER&quot;]" type="string" size="4" encoding="base64"><![CDATA[dXNlcg==]]></property><property name="XDG_MENU_PREFIX" fullname="$_SERVER[&quot;XDG_MENU_PREFIX&quot;]" type="string" size="6" encoding="base64"><![CDATA[Z25vbWUt]]></property><property name="GIO_LAUNCHED_DESKTOP_FILE_PID" fullname="$_SERVER[&quot;GIO_LAUNCHED_DESKTOP_FILE_PID&quot;]" type="string" size="4" encoding="base64"><![CDATA[MTkxMQ==]]></property><property name="QT_ACCESSIBILITY" fullname="$_SERVER[&quot;QT_ACCESSIBILITY&quot;]" type="string" size="1" encoding="base64"><![CDATA[MQ==]]></property><property name="LC_NUMERIC" fullname="$_SERVER[&quot;LC_NUMERIC&quot;]" type="string" size="11" encoding="base64"><![CDATA[ZW5fVVMuVVRGLTg=]]></property><property name="XDG_SEAT" fullname="$_SERVER[&quot;XDG_SEAT&quot;]" type="string" size="5" encoding="base64"><![CDATA[c2VhdDA=]]></property><property name="SSH_AUTH_SOCK" fullname="$_SERVER[&quot;SSH_AUTH_SOCK&quot;]" type="string" size="26" encoding="base64"><![CDATA[L3J1bi91c2VyLzEwMDAva2V5cmluZy9zc2g=]]></property><property name="NLSPATH" fullname="$_SERVER[&quot;NLSPATH&quot;]" type="string" size="29" encoding="base64"><![CDATA[L3Vzci9kdC9saWIvbmxzL21zZy8lTC8lTi5jYXQ=]]></property><property name="QT_QPA_PLATFORMTHEME" fullname="$_SERVER[&quot;QT_QPA_PLATFORMTHEME&quot;]" type="string" size="11" encoding="base64"><![CDATA[YXBwbWVudS1xdDU=]]></property><property name="GSETTINGS_SCHEMA_DIR" fullname="$_SERVER[&quot;GSETTINGS_SCHEMA_DIR&quot;]" type="string" size="26" encoding="base64"><![CDATA[Li9zaGFyZS9nbGliLTIuMC9zY2hlbWFzLzo=]]></property><property name="XDG_RUNTIME_DIR" fullname="$_SERVER[&quot;XDG_RUNTIME_DIR&quot;]" type="string" size="14" encoding="base64"><![CDATA[L3J1bi91c2VyLzEwMDA=]]></property><property name="XDG_VTNR" fullname="$_SERVER[&quot;XDG_VTNR&quot;]" type="string" size="1" encoding="base64"><![CDATA[Nw==]]></property><property name="HOME" fullname="$_SERVER[&quot;HOME&quot;]" type="string" size="10" encoding="base64"><![CDATA[L2hvbWUvdXNlcg==]]></property><property name="GNOME_KEYRING_PID" fullname="$_SERVER[&quot;GNOME_KEYRING_PID&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="PHP_SELF" fullname="$_SERVER[&quot;PHP_SELF&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="SCRIPT_NAME" fullname="$_SERVER[&quot;SCRIPT_NAME&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="SCRIPT_FILENAME" fullname="$_SERVER[&quot;SCRIPT_FILENAME&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="PATH_TRANSLATED" fullname="$_SERVER[&quot;PATH_TRANSLATED&quot;]" type="string" size="60" encoding="base64"><![CDATA[L2hvbWUvdXNlci9QaHBzdG9ybVByb2plY3RzL3hkZWJ1Z19lc2NhcGluZy9lc2NhcGVkX25hbWUucGhw]]></property><property name="DOCUMENT_ROOT" fullname="$_SERVER[&quot;DOCUMENT_ROOT&quot;]" type="string" size="0" encoding="base64"><![CDATA[]]></property><property name="REQUEST_TIME_FLOAT" fullname="$_SERVER[&quot;REQUEST_TIME_FLOAT&quot;]" type="float"><![CDATA[1515156031.1789]]></property><property name="REQUEST_TIME" fullname="$_SERVER[&quot;REQUEST_TIME&quot;]" type="int"><![CDATA[1515156031]]></property><property name="argv" fullname="$_SERVER[&quot;argv&quot;]" type="array" children="1" numchildren="1"></property><property name="argc" fullname="$_SERVER[&quot;argc&quot;]" type="int"><![CDATA[1]]></property></property></response>

<- context_get -i 22 -d 0 -c 2
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="22" context="2"></response>

<- context_get -i 23 -d 0 -c 2
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="context_get" transaction_id="23" context="2"></response>

<- property_get -i 24 -n $v[0] -d 0 -c 0 -p 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="24"><property name="$v[0]" fullname="$v[0]" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="\\" fullname="$v[0][&quot;\\\\&quot;]" type="int"><![CDATA[1]]></property></property></response>

<- property_get -i 25 -n $this->*TestA\\TestB\\TestC\\A*items -d 0 -c 0 -p 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="25"><property name="$this-&gt;*TestA\\TestB\\TestC\\A*items" fullname="$this-&gt;*TestA\\TestB\\TestC\\A*items" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="0" fullname="$this-&gt;*TestA\\TestB\\TestC\\A*items[0]" type="int"><![CDATA[1]]></property></property></response>

<- run -i 26
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="26" status="stopping" reason="ok"></response>

<- run -i 27
Log closed at 2018-01-05 12:40:40

xdebug_2.6beta_escaped_name.log (41,235 bytes)   
Operating System
PHP Version7.1.0-7.1.4

Relationships

has duplicate 0001513 resolvedderick Xdebug returns escaped property fullname with enabled extended_properties 

Activities

derick

2018-01-06 10:26

administrator   ~0004550

Last edited: 2018-01-06 10:29

Xdebug's, and your's, assumption that you should escape the \ already when doing property_get in step 3 is actually wrong:

<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

It should be either:

<- property_get -i 18 -n "$this->TestA\TestB\TestC\Aitems" -d 0 -c 0 -p 0

or

<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

Xdebug does currently not do this correctly either. The DBGp specs say (in https://xdebug.org/docs-dbgp.php#message-packets):

If a value for an option includes a space, the value needs to be encoded.
You can encode values by encasing them in double quotes:

property_get -i 5 -n "$x['a b']" -d 0 -c 0 -p 0

It is also possible to use escape characters in quoted strings:

property_get -i 6 -n "$x[\"a b\"]" -d 0 -c 0 -p 0

As Xdebug has returned, through XML, just:

fullname="$this->TestA\TestB\TestC\Aitems"

which, after XML decoding shows:

$this->TestA\TestB\TestC\Aitems

There is no space in this, so there is no NEED to enclose them in "'s, or does the spec say anything about escaping the \'s.

The spec hints that if you enclose them in "'s, you must also escape the \'s.

I propose we do the following:

  • Xdebug stops stripping \'s when it parsing the property names, unless they are enclosed in "'s.
  • PhpStorm does not escape the \'s, unless it has wrapped the value in double quotes. It must simply use the XML decoded value that XML returned (through "context_get" or "property_get -n $this") as argument to property_get unless there is a space or \0 character, in which case PhpStorm must enclose the value in "'s and escape ", \ and NULL.
  • I update the DBGp spec to:
    • include the \0 character with the line about the space
    • make it clearer when you must escape
    • make it clearer when you can escape

This is likely going to break existing behaviour, so you might want to change behaviour depending on Xdebug version, send to PhpStorm in the init package with:

<engine version="2.6.0beta2-dev">

derick

2018-01-06 12:24

administrator   ~0004551

I've added a PR for DBGp, please review: https://github.com/derickr/dbgp/pull/17

LanaZem

2018-01-09 14:41

reporter   ~0004554

Looks good for me. From IDE side the behaviour is the same as for Xdebug 2.5 and earlier.

derick

2018-01-09 15:15

administrator   ~0004555

That's not 100% true - please see this again:

Your assumption that you should escape the \ already when doing
property_get in step 3 is actually wrong:

<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

It should be either:

<- property_get -i 18 -n "$this->TestA\TestB\TestC\Aitems" -d 0 -c 0 -p 0

or

<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

LanaZem

2018-01-09 17:17

reporter   ~0004556

Do you mean Xdebug 2.5 doesn't require escaping inside quotes?

For me, the command with escaped value works perfectly fine with Xdebug 2.5.5 + PHP 7.1.1 or PHP 5.6.30

<- property_get -i 23 -n "$this->PhpStormBug917319\ParentClass_attributes['Three\s Stuff']" -d 0 -c 0 -p 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="23"><property name="$this->PhpStormBug917319\ParentClass_attributes['Three\s Stuff']" fullname="$this->PhpStormBug917319\ParentClass_attributes['Three\s Stuff']" type="array" children="1" numchildren="1" page="0" pagesize="100"><property name="id" fullname="$this->PhpStormBug917319\ParentClass_attributes['Three\s Stuff']['id']" type="string" size="13" encoding="base64"><![CDATA[VGhyZWVccyBTdHVmZg==]]></property></property></response>

derick

2018-01-09 17:37

administrator   ~0004557

Last edited: 2018-01-09 17:37

Inside double quotes, you MUST escape, like you do:

property_get -i 23 -n "$this->PhpStormBug917319\ParentClass_attributes['Three\s Stuff']"

And I showed with:

property_get -i 18 -n "$this->TestA\TestB\TestC\Aitems" -d 0 -c 0 -p 0


Not using double quotes, you MUST NOT escape, like I showed with:

<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0


In the original description of the bug, you wrote:

3) Call 'property_get' command for 'TestA\TestB\TestC\Aitems'.
<- property_get -i 18 -n $this->TestA\TestB\TestC\Aitems -d 0 -c 0 -p 0

But this uses escaped \ characters outside double quotes, which is incorrect.

Xdebug 2.5 would allow this, but should not have. Xdebug 2.6 will not allow this, after my merge of https://github.com/xdebug/xdebug/commit/307009a46ff63f15ea6e1e1e3c66637314089ab8

LanaZem

2018-01-09 18:27

reporter   ~0004558

I understand that your suggestion in comments is different from the issue description.

I'm saying that Xdebug 2.5 does follow the same rules, e.g. The command with escaped blackslashes will fail in Xdebug 2.5 too:
<- property_get -i 22 -n $this->PhpStormBug917319\ParentClass_attributes -d 0 -c 0 -p 0
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="property_get" transaction_id="22" status="break" reason="ok"><error code="300"><message><![CDATA[can not get property]]></message></error></response>

Issue History

Date Modified Username Field Change
2018-01-05 12:45 LanaZem New Issue
2018-01-05 12:45 LanaZem File Added: xdebug_2.6beta_escaped_name.log
2018-01-06 10:26 derick Note Added: 0004550
2018-01-06 10:27 derick Assigned To => derick
2018-01-06 10:27 derick Status new => confirmed
2018-01-06 10:28 derick Note Edited: 0004550
2018-01-06 10:29 derick Note Edited: 0004550
2018-01-06 12:24 derick Note Added: 0004551
2018-01-07 18:05 derick Relationship added has duplicate 0001513
2018-01-07 18:05 derick Summary Xdebug returns escaped property name and fullname => Xdebug does not properly encode and escape properties with quotes and \0 characters.
2018-01-07 18:05 derick Steps to Reproduce Updated
2018-01-08 10:53 derick Status confirmed => closed
2018-01-08 10:53 derick Resolution open => fixed
2018-01-08 10:53 derick Fixed in Version => 2.6.0
2018-01-08 10:54 derick Target Version => 2.6.0
2018-01-09 14:41 LanaZem Note Added: 0004554
2018-01-09 15:15 derick Note Added: 0004555
2018-01-09 17:17 LanaZem Note Added: 0004556
2018-01-09 17:37 derick Note Added: 0004557
2018-01-09 17:37 derick Note Edited: 0004557
2018-01-09 18:27 LanaZem Note Added: 0004558
2018-01-22 18:21 derick Fixed in Version 2.6.0 => 2.6.0rc1
2020-03-12 16:33 derick Category Remote Debugging => Step Debugging