Ruby bindings didn't NULL-terminate an array, resulting in segfault. 1.0.12
authorRichard Jones <rjones@redhat.com>
Fri, 24 Apr 2009 13:31:38 +0000 (14:31 +0100)
committerRichard Jones <rjones@redhat.com>
Fri, 24 Apr 2009 13:31:38 +0000 (14:31 +0100)
ruby/ext/guestfs/_guestfs.c
src/generator.ml

index 07b0228..d4b62ca 100644 (file)
@@ -1418,6 +1418,7 @@ static VALUE ruby_guestfs_vgcreate (VALUE gv, VALUE volgroupv, VALUE physvolsv)
       VALUE v = rb_ary_entry (physvolsv, i);
       physvols[i] = StringValueCStr (v);
     }
       VALUE v = rb_ary_entry (physvolsv, i);
       physvols[i] = StringValueCStr (v);
     }
+    physvols[len] = NULL;
   }
 
   int r;
   }
 
   int r;
@@ -1503,6 +1504,7 @@ static VALUE ruby_guestfs_sfdisk (VALUE gv, VALUE devicev, VALUE cylsv, VALUE he
       VALUE v = rb_ary_entry (linesv, i);
       lines[i] = StringValueCStr (v);
     }
       VALUE v = rb_ary_entry (linesv, i);
       lines[i] = StringValueCStr (v);
     }
+    lines[len] = NULL;
   }
 
   int r;
   }
 
   int r;
@@ -1659,6 +1661,7 @@ static VALUE ruby_guestfs_command (VALUE gv, VALUE argumentsv)
       VALUE v = rb_ary_entry (argumentsv, i);
       arguments[i] = StringValueCStr (v);
     }
       VALUE v = rb_ary_entry (argumentsv, i);
       arguments[i] = StringValueCStr (v);
     }
+    arguments[len] = NULL;
   }
 
   char *r;
   }
 
   char *r;
@@ -1688,6 +1691,7 @@ static VALUE ruby_guestfs_command_lines (VALUE gv, VALUE argumentsv)
       VALUE v = rb_ary_entry (argumentsv, i);
       arguments[i] = StringValueCStr (v);
     }
       VALUE v = rb_ary_entry (argumentsv, i);
       arguments[i] = StringValueCStr (v);
     }
+    arguments[len] = NULL;
   }
 
   char **r;
   }
 
   char **r;
@@ -2337,6 +2341,7 @@ static VALUE ruby_guestfs_debug (VALUE gv, VALUE subcmdv, VALUE extraargsv)
       VALUE v = rb_ary_entry (extraargsv, i);
       extraargs[i] = StringValueCStr (v);
     }
       VALUE v = rb_ary_entry (extraargsv, i);
       extraargs[i] = StringValueCStr (v);
     }
+    extraargs[len] = NULL;
   }
 
   char *r;
   }
 
   char *r;
index 29b0ecd..19ee71a 100755 (executable)
@@ -5414,6 +5414,7 @@ static VALUE ruby_guestfs_close (VALUE gv)
            pr "      VALUE v = rb_ary_entry (%sv, i);\n" n;
            pr "      %s[i] = StringValueCStr (v);\n" n;
            pr "    }\n";
            pr "      VALUE v = rb_ary_entry (%sv, i);\n" n;
            pr "      %s[i] = StringValueCStr (v);\n" n;
            pr "    }\n";
+           pr "    %s[len] = NULL;\n" n;
            pr "  }\n";
        | Bool n
        | Int n ->
            pr "  }\n";
        | Bool n
        | Int n ->