]> git.0d.be Git - empathy.git/commitdiff
Don't crash when the buffer has length 0
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Mon, 7 Nov 2011 04:45:40 +0000 (15:45 +1100)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Mon, 7 Nov 2011 04:45:40 +0000 (15:45 +1100)
Unexpectedly, a 0 length buffer causes gdk_pixbuf_loader_write() to return
FALSE without setting @error. Would then segv on error->message.

libempathy-gtk/empathy-ui-utils.c

index 30b3e1f289db3f076b83b82727d3dd4b0b645706..5d9551d12dc20f82cdc2c587e90984a52a3e2e20 100644 (file)
@@ -491,7 +491,10 @@ empathy_pixbuf_from_avatar_scaled (EmpathyAvatar *avatar,
                          G_CALLBACK (pixbuf_from_avatar_size_prepared_cb),
                          &data);
 
-       if (!gdk_pixbuf_loader_write (loader, avatar->data, avatar->len, &error)) {
+       if (avatar->len == 0) {
+               g_warning ("Avatar has 0 length");
+               return NULL;
+       } else if (!gdk_pixbuf_loader_write (loader, avatar->data, avatar->len, &error)) {
                g_warning ("Couldn't write avatar image:%p with "
                           "length:%" G_GSIZE_FORMAT " to pixbuf loader: %s",
                           avatar->data, avatar->len, error->message);