[goffice] Don't use invalid GOImage arguments. [#703949]



commit bded6eedfb513ae29bb68ad47fb81ba6f8fe7464
Author: Jean Brefort <jean brefort normalesup org>
Date:   Wed Jul 10 17:03:55 2013 +0200

    Don't use invalid GOImage arguments. [#703949]

 ChangeLog                |    7 +++++++
 NEWS                     |    1 +
 goffice/utils/go-image.c |    7 ++++++-
 3 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c88020f..fe37a1a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-07-10  Jean Brefort  <jean brefort normalesup org>
+
+       * goffice/utils/go-image.c (go_image_get_thumbnail),
+       (go_image_get_pixbuf), (go_image_get_scaled_pixbuf),
+       (go_image_set_name), (go_image_get_width), (go_image_get_height): protect
+       against invalid image argument [#703949]
+
 2013-07-09  Morten Welinder  <terra gnome org>
 
        * goffice/math/go-regression.c (general_linear_regression):
diff --git a/NEWS b/NEWS
index 33b519e..0b9a51e 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ Andreas:
 
 Jean:
        * Fix loading of image with invalid size or data. [#703740]
+       * Don't use invalid GOImage arguments. [#703949]
 
 Morten:
        * Fix linear regression failure.
diff --git a/goffice/utils/go-image.c b/goffice/utils/go-image.c
index 271f1e9..34e52f2 100644
--- a/goffice/utils/go-image.c
+++ b/goffice/utils/go-image.c
@@ -536,7 +536,7 @@ go_image_draw (GOImage *image, cairo_t *cr)
 GdkPixbuf const *
 go_image_get_thumbnail (GOImage *image)
 {
-       g_return_val_if_fail (image != NULL, NULL);
+       g_return_val_if_fail (GO_IS_IMAGE (image), NULL);
        if (image->thumbnail == NULL)
                image->thumbnail = go_image_get_scaled_pixbuf (image, GO_THUMBNAIL_SIZE, GO_THUMBNAIL_SIZE);
        return image->thumbnail;
@@ -553,6 +553,7 @@ go_image_get_thumbnail (GOImage *image)
 GdkPixbuf *
 go_image_get_pixbuf (GOImage *image)
 {
+       g_return_val_if_fail (GO_IS_IMAGE (image), NULL);
        if (image->pixbuf == NULL)
                image->pixbuf = ((GOImageClass *) G_OBJECT_GET_CLASS (image))->get_pixbuf (image);
        return g_object_ref (image->pixbuf);
@@ -572,6 +573,7 @@ go_image_get_pixbuf (GOImage *image)
 GdkPixbuf *
 go_image_get_scaled_pixbuf (GOImage *image, int width, int height)
 {
+       g_return_val_if_fail (GO_IS_IMAGE (image), NULL);
        if (image->width > width || image->height > height) {
                if (image->width * height > image->height * width) {
                        height = width * image->height / image->width;
@@ -719,6 +721,7 @@ go_image_get_data (GOImage *image, gsize *length)
 void
 go_image_set_name (GOImage *image, char const *name)
 {
+       g_return_if_fail (GO_IS_IMAGE (image));
        g_free (image->name);
        image->name = (name)? g_strdup (name): NULL;
 }
@@ -789,12 +792,14 @@ _go_image_changed (GOImage *image, double width, double height)
 double
 go_image_get_width (GOImage const *image)
 {
+       g_return_val_if_fail (GO_IS_IMAGE (image), 0.);
        return image->width;
 }
 
 double
 go_image_get_height (GOImage const *image)
 {
+       g_return_val_if_fail (GO_IS_IMAGE (image), 0.);
        return image->height;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]