value-variant.c: Avoid read from beyond end of buffer in string values.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 29 Sep 2018 09:10:45 +0000 (11:10 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 29 Sep 2018 09:20:29 +0000 (11:20 +0200)
src/ui/gui/value-variant.c

index 0789717ab70e91ac162e36b359dd5877d79ae758..ce523ae14ea54073ccf66edb37c00769f304e440 100644 (file)
@@ -87,12 +87,11 @@ value_variant_get (union value *val, GVariant *v)
   else
     {
       const gchar *data = g_variant_get_bytestring (vdata);
+      size_t len = strlen (data);
       if (width <= MAX_SHORT_STRING)
-       memcpy (val->short_string, data, MAX_SHORT_STRING);
+       memcpy (val->short_string, data, MIN (MAX_SHORT_STRING, len));
       else
-       {
-         val->long_string = xmemdup (data, width);
-       }
+       val->long_string = xmemdup (data, MIN (width, len));
     }
 
   g_variant_unref (vdata);