aboutsummaryrefslogtreecommitdiff
path: root/gdbstub
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki@daynix.com>2023-10-09 17:40:54 +0100
committerAlex Bennée <alex.bennee@linaro.org>2023-10-11 08:46:33 +0100
commit6d8f77a6a152c1c64c5ee79e31fe3510b020cd0e (patch)
tree9381918ba03c6fdb5213d6e3650ef2f46106a280 /gdbstub
parenta650683871ba728ebce3d320941f48bac91f0f6a (diff)
downloadqemu-6d8f77a6a152c1c64c5ee79e31fe3510b020cd0e.zip
qemu-6d8f77a6a152c1c64c5ee79e31fe3510b020cd0e.tar.gz
qemu-6d8f77a6a152c1c64c5ee79e31fe3510b020cd0e.tar.bz2
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.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index a20169c..3dc847f 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;
}