[gimp/gimp-2-8] Bug 739457 - Some errors not detected for GIMP_PDB_COLOR arguments



commit dad54b67c1267db6b294004a5c2900a505558785
Author: Saul Goode <saul crazyauntgail com>
Date:   Fri Oct 31 12:13:07 2014 -0400

    Bug 739457 - Some errors not detected for GIMP_PDB_COLOR arguments
    
    Check that all 3 array elements are numbers-
    
    (cherry picked from commit d03b33f1d90991623fd1848c7a2d2a61900d4396)

 plug-ins/script-fu/scheme-wrapper.c |   30 ++++++++++++++++++++++++------
 1 files changed, 24 insertions(+), 6 deletions(-)
---
diff --git a/plug-ins/script-fu/scheme-wrapper.c b/plug-ins/script-fu/scheme-wrapper.c
index d8d67f0..08704a7 100644
--- a/plug-ins/script-fu/scheme-wrapper.c
+++ b/plug-ins/script-fu/scheme-wrapper.c
@@ -1100,18 +1100,36 @@ script_fu_marshal_procedure_call (scheme  *sc,
                    sc->vptr->list_length (sc, sc->vptr->pair_car (a)) == 3)
             {
               pointer color_list;
-              guchar  r, g, b;
+              guchar  r = 0, g = 0, b = 0;
 
               color_list = sc->vptr->pair_car (a);
-              r = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), 0, 255);
+              if (sc->vptr->is_number (sc->vptr->pair_car (color_list)))
+                r = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
+                           0, 255);
+              else
+                success = FALSE;
+
               color_list = sc->vptr->pair_cdr (color_list);
-              g = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), 0, 255);
+              if (sc->vptr->is_number (sc->vptr->pair_car (color_list)))
+                g = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
+                           0, 255);
+              else
+                success = FALSE;
+
               color_list = sc->vptr->pair_cdr (color_list);
-              b = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), 0, 255);
+              if (sc->vptr->is_number (sc->vptr->pair_car (color_list)))
+                b = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
+                           0, 255);
+              else
+                success = FALSE;
 
-              gimp_rgba_set_uchar (&args[i].data.d_color, r, g, b, 255);
+              if (success)
+                gimp_rgba_set_uchar (&args[i].data.d_color, r, g, b, 255);
 #if DEBUG_MARSHALL
-              g_printerr ("      (%d %d %d)\n", r, g, b);
+              if (success)
+                g_printerr ("      (%d %d %d)\n", r, g, b);
+              else
+                g_printerr ("      COLOR list contains non-numbers\n");
 #endif
             }
           else


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