diff options
author | Akihiko Odaki <akihiko.odaki@daynix.com> | 2023-10-09 17:40:54 +0100 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2023-10-11 08:46:33 +0100 |
commit | 6d8f77a6a152c1c64c5ee79e31fe3510b020cd0e (patch) | |
tree | 9381918ba03c6fdb5213d6e3650ef2f46106a280 /gdbstub | |
parent | a650683871ba728ebce3d320941f48bac91f0f6a (diff) |
gdbstub: Use g_markup_printf_escaped()
g_markup_printf_escaped() is a safer alternative to simple printf() as
it automatically escapes values.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-9-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20231009164104.369749-16-alex.bennee@linaro.org>
Diffstat (limited to 'gdbstub')
-rw-r--r-- | gdbstub/gdbstub.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index a20169c27b..3dc847f835 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -373,28 +373,34 @@ static const char *get_feature_xml(const char *p, const char **newp, if (strncmp(p, "target.xml", len) == 0) { if (!process->target_xml) { GDBRegisterState *r; - GString *xml = g_string_new("<?xml version=\"1.0\"?>"); + g_autoptr(GPtrArray) xml = g_ptr_array_new_with_free_func(g_free); - g_string_append(xml, - "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">" - "<target>"); + g_ptr_array_add( + xml, + g_strdup("<?xml version=\"1.0\"?>" + "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">" + "<target>")); if (cc->gdb_arch_name) { - g_string_append_printf(xml, - "<architecture>%s</architecture>", - cc->gdb_arch_name(cpu)); + g_ptr_array_add( + xml, + g_markup_printf_escaped("<architecture>%s</architecture>", + cc->gdb_arch_name(cpu))); } - g_string_append(xml, "<xi:include href=\""); - g_string_append(xml, cc->gdb_core_xml_file); - g_string_append(xml, "\"/>"); + g_ptr_array_add( + xml, + g_markup_printf_escaped("<xi:include href=\"%s\"/>", + cc->gdb_core_xml_file)); for (r = cpu->gdb_regs; r; r = r->next) { - g_string_append(xml, "<xi:include href=\""); - g_string_append(xml, r->xml); - g_string_append(xml, "\"/>"); + g_ptr_array_add( + xml, + g_markup_printf_escaped("<xi:include href=\"%s\"/>", + r->xml)); } - g_string_append(xml, "</target>"); + g_ptr_array_add(xml, g_strdup("</target>")); + g_ptr_array_add(xml, NULL); - process->target_xml = g_string_free(xml, false); + process->target_xml = g_strjoinv(NULL, (void *)xml->pdata); } return process->target_xml; } |