From e823ba10d3babd5ae61c69d96379ff34e9e978f8 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Wed, 4 May 2011 18:12:31 +0200 Subject: [PATCH] GVariant: Better handling of invalid UTF-8 g_variant_new_string() hits a g_return_if_fail() when given invalid UTF-8. That's certainly the right thing to do, but g_variant_builder_add() uses this function internally and crashes when it returns NULL due to the user passing a non-utf8 string. We can protect the internal code by returning "[Invalid UTF-8]" in this case while also making the problem easier to debug (and less fatal). Closes #632631. --- glib/gvariant.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index 52a63495b..813b3fb02 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -3687,7 +3687,16 @@ g_variant_valist_new_nnp (const gchar **str, } case 's': - return g_variant_new_string (ptr); + { + GVariant *value; + + value = g_variant_new_string (ptr); + + if (value == NULL) + value = g_variant_new_string ("[Invalid UTF-8]"); + + return value; + } case 'o': return g_variant_new_object_path (ptr);