summaryrefslogtreecommitdiff
path: root/gdk-pixbuf
diff options
context:
space:
mode:
Diffstat (limited to 'gdk-pixbuf')
-rw-r--r--gdk-pixbuf/gdk-pixbuf-io.c15
-rw-r--r--gdk-pixbuf/io-jpeg.c6
-rw-r--r--gdk-pixbuf/io-png.c5
-rw-r--r--gdk-pixbuf/io-tiff.c5
4 files changed, 30 insertions, 1 deletions
diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c
index 4295cfeb2..26c292118 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.c
+++ b/gdk-pixbuf/gdk-pixbuf-io.c
@@ -2452,6 +2452,10 @@ gdk_pixbuf_savev (GdkPixbuf *pixbuf,
FILE *f = NULL;
gboolean result;
+ g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0, FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0, FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0, FALSE);
g_return_val_if_fail (filename != NULL, FALSE);
g_return_val_if_fail (type != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -2613,7 +2617,10 @@ gdk_pixbuf_save_to_callbackv (GdkPixbuf *pixbuf,
{
gboolean result;
-
+ g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0, FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0, FALSE);
+ g_return_val_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0, FALSE);
g_return_val_if_fail (save_func != NULL, FALSE);
g_return_val_if_fail (type != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -2989,6 +2996,9 @@ gdk_pixbuf_save_to_streamv_async (GdkPixbuf *pixbuf,
SaveToStreamAsyncData *data;
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+ g_return_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0);
+ g_return_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0);
+ g_return_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0);
g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
g_return_if_fail (type != NULL);
g_return_if_fail (callback != NULL);
@@ -3041,6 +3051,9 @@ gdk_pixbuf_save_to_stream_async (GdkPixbuf *pixbuf,
va_list args;
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+ g_return_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0);
+ g_return_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0);
+ g_return_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0);
g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
g_return_if_fail (type != NULL);
g_return_if_fail (callback != NULL);
diff --git a/gdk-pixbuf/io-jpeg.c b/gdk-pixbuf/io-jpeg.c
index 3b0a1623c..96f993f40 100644
--- a/gdk-pixbuf/io-jpeg.c
+++ b/gdk-pixbuf/io-jpeg.c
@@ -1402,6 +1402,12 @@ real_save_jpeg (GdkPixbuf *pixbuf,
h = gdk_pixbuf_get_height (pixbuf);
pixels = gdk_pixbuf_get_pixels (pixbuf);
+ /* Guaranteed by the caller. */
+ g_assert (w >= 0);
+ g_assert (h >= 0);
+ g_assert (rowstride >= 0);
+ g_assert (n_channels >= 0);
+
/* Allocate a small buffer to convert image data,
* and a larger buffer if doing to_callback save.
*/
diff --git a/gdk-pixbuf/io-png.c b/gdk-pixbuf/io-png.c
index 364d5859b..a9fc1f6bf 100644
--- a/gdk-pixbuf/io-png.c
+++ b/gdk-pixbuf/io-png.c
@@ -1061,6 +1061,11 @@ static gboolean real_save_png (GdkPixbuf *pixbuf,
has_alpha = gdk_pixbuf_get_has_alpha (pixbuf);
pixels = gdk_pixbuf_get_pixels (pixbuf);
+ /* Guaranteed by the caller. */
+ g_assert (w >= 0);
+ g_assert (h >= 0);
+ g_assert (rowstride >= 0);
+
png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
error,
png_simple_error_callback,
diff --git a/gdk-pixbuf/io-tiff.c b/gdk-pixbuf/io-tiff.c
index 9ca037852..62f25313a 100644
--- a/gdk-pixbuf/io-tiff.c
+++ b/gdk-pixbuf/io-tiff.c
@@ -720,6 +720,11 @@ gdk_pixbuf__tiff_image_save_to_callback (GdkPixbufSaveFunc save_func,
height = gdk_pixbuf_get_height (pixbuf);
width = gdk_pixbuf_get_width (pixbuf);
+ /* Guaranteed by the caller. */
+ g_assert (width >= 0);
+ g_assert (height >= 0);
+ g_assert (rowstride >= 0);
+
TIFFSetField (tiff, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField (tiff, TIFFTAG_IMAGELENGTH, height);