2525#include "phpdbg_utils.h"
2626#include "phpdbg_opcode.h"
2727#include "zend_globals.h"
28+ #include "ext/standard/php_string.h"
2829
2930ZEND_EXTERN_MODULE_GLOBALS (phpdbg )
3031
@@ -135,10 +136,12 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
135136
136137 switch (brake -> type ) {
137138 case PHPDBG_BREAK_FILE : {
139+ zend_string * filename = php_addcslashes (zend_string_init (((phpdbg_breakfile_t * )brake )-> filename , strlen (((phpdbg_breakfile_t * )brake )-> filename ), 0 ), 1 , "\\\"\n" , 3 );
138140 phpdbg_asprintf (& new_str ,
139141 "%sbreak \"%s\":%lu\n" , * str ,
140- (( phpdbg_breakfile_t * ) brake ) -> filename ,
142+ ZSTR_VAL ( filename ) ,
141143 ((phpdbg_breakfile_t * )brake )-> line );
144+ zend_string_release (filename );
142145 } break ;
143146
144147 case PHPDBG_BREAK_SYM : {
@@ -170,10 +173,12 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
170173 } break ;
171174
172175 case PHPDBG_BREAK_FILE_OPLINE : {
176+ zend_string * filename = php_addcslashes (zend_string_init (((phpdbg_breakopline_t * )brake )-> class_name , strlen (((phpdbg_breakopline_t * )brake )-> class_name ), 0 ), 1 , "\\\"\n" , 3 );
173177 phpdbg_asprintf (& new_str ,
174- "%sbreak %s :#%llu\n" , * str ,
175- (( phpdbg_breakopline_t * ) brake ) -> class_name ,
178+ "%sbreak \"%s\" :#%llu\n" , * str ,
179+ filename ,
176180 ((phpdbg_breakopline_t * )brake )-> opline_num );
181+ zend_string_release (filename );
177182 } break ;
178183
179184 case PHPDBG_BREAK_OPCODE : {
@@ -199,12 +204,14 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
199204 conditional -> code );
200205 break ;
201206
202- case FILE_PARAM :
207+ case FILE_PARAM : {
208+ zend_string * filename = php_addcslashes (zend_string_init (conditional -> param .file .name , strlen (conditional -> param .file .name ), 0 ), 1 , "\\\"\n" , 3 );
203209 phpdbg_asprintf (& new_str ,
204- "%sbreak at %s :%lu if %s\n" , * str ,
210+ "%sbreak at \"%s\" :%lu if %s\n" , * str ,
205211 conditional -> param .file .name , conditional -> param .file .line ,
206212 conditional -> code );
207- break ;
213+ zend_string_release (filename );
214+ } break ;
208215
209216 default : { /* do nothing */ } break ;
210217 }
0 commit comments