orcexecutor: Don't use negative values on arrays
authorEdward Hervey <bilboed@bilboed.com>
Fri, 11 Apr 2014 14:03:16 +0000 (16:03 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 11 Apr 2014 14:06:05 +0000 (16:06 +0200)
orc_program_find_var_by_name() can return -1 on errors, if that
happens, don't try to read/write in random memory :)

CID #1146974
CID #1146975
CID #1146976

orc/orcexecutor.c

index 96a7fc9..6fe296d 100644 (file)
@@ -102,7 +102,8 @@ orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr)
 {
   int var;
   var = orc_program_find_var_by_name (ex->program, name);
-  ex->arrays[var] = ptr;
+  if (var >= 0)
+    ex->arrays[var] = ptr;
 }
 
 void
@@ -142,7 +143,8 @@ orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value)
 {
   int var;
   var = orc_program_find_var_by_name (ex->program, name);
-  ex->params[var] = value;
+  if (var >= 0)
+    ex->params[var] = value;
 }
 
 int
@@ -156,7 +158,9 @@ orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name)
 {
   int var;
   var = orc_program_find_var_by_name (ex->program, name);
-  return ex->accumulators[var];
+  if (var >= 0)
+    return ex->accumulators[var];
+  return -1;
 }
 
 void