diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-09-17 17:30:35 +0200 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-09-17 17:30:35 +0200 |
commit | 8320a7a0012f868e5878a5a9f52676a5fece02e1 (patch) | |
tree | 7d14fb02bea257c89480a8c538a9d9c9bcf3eea2 /storage_xml.c | |
parent | 0383943c38ee308805798974bfccbd3327369c6a (diff) |
Strings passed to xml_text aren't necessarily \0-terminated, so don't count
on that anymore.
Diffstat (limited to 'storage_xml.c')
-rw-r--r-- | storage_xml.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/storage_xml.c b/storage_xml.c index 2585b475..52240a36 100644 --- a/storage_xml.c +++ b/storage_xml.c @@ -226,11 +226,15 @@ static void xml_end_element( GMarkupParseContext *ctx, const gchar *element_name } } -static void xml_text( GMarkupParseContext *ctx, const gchar *text, gsize text_len, gpointer data, GError **error ) +static void xml_text( GMarkupParseContext *ctx, const gchar *text_orig, gsize text_len, gpointer data, GError **error ) { + char text[text_len+1]; struct xml_parsedata *xd = data; irc_t *irc = xd->irc; + strncpy( text, text_orig, text_len ); + text[text_len] = 0; + if( xd->pass_st < XML_PASS_OK ) { /* Let's not parse anything else if we only have to check |