X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Fgenerator.ml;h=d680d42459671bf5d18cc9be18a58348206e9865;hp=a7093768eaac7cbc8603efc0b5ab5b685cc59e0e;hb=abb447c32abdea467374edc30704818dd2883da7;hpb=afca1dba5eeb989c231a22df26e48f0967387547 diff --git a/src/generator.ml b/src/generator.ml index a709376..d680d42 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -2767,9 +2767,14 @@ and generate_daemon_actions () = | String n -> pr " %s = args.%s;\n" n n | OptString n -> pr " %s = args.%s ? *args.%s : NULL;\n" n n n | StringList n -> - pr " args.%s.%s_val = realloc (args.%s.%s_val, sizeof (char *) * (args.%s.%s_len+1));\n" n n n n n n; - pr " args.%s.%s_val[args.%s.%s_len] = NULL;\n" n n n n; - pr " %s = args.%s.%s_val;\n" n n n + pr " %s = realloc (args.%s.%s_val,\n" n n n; + pr " sizeof (char *) * (args.%s.%s_len+1));\n" n n; + pr " if (%s == NULL) {\n" n; + pr " reply_with_perror (\"realloc\");\n"; + pr " goto done;\n"; + pr " }\n"; + pr " %s[args.%s.%s_len] = NULL;\n" n n n; + pr " args.%s.%s_val = %s;\n" n n n; | Bool n -> pr " %s = args.%s;\n" n n | Int n -> pr " %s = args.%s;\n" n n | FileIn _ | FileOut _ -> () @@ -3899,7 +3904,7 @@ and generate_fish_completion () = #ifdef HAVE_LIBREADLINE -static const char *commands[] = { +static const char *const commands[] = { "; (* Get the commands and sort them, including the aliases. *) @@ -4329,7 +4334,7 @@ copy_table (char * const * argv) pr " %sv != Val_int (0) ? String_val (Field (%sv, 0)) : NULL;\n" n n | StringList n -> - pr " char **%s = ocaml_guestfs_strings_val (%sv);\n" n n + pr " char **%s = ocaml_guestfs_strings_val (g, %sv);\n" n n | Bool n -> pr " int %s = Bool_val (%sv);\n" n n | Int n -> @@ -4551,12 +4556,13 @@ XS_unpack_charPtrPtr (SV *arg) { AV *av; I32 i; - if (!arg || !SvOK (arg) || !SvROK (arg) || SvTYPE (SvRV (arg)) != SVt_PVAV) { + if (!arg || !SvOK (arg) || !SvROK (arg) || SvTYPE (SvRV (arg)) != SVt_PVAV) croak (\"array reference expected\"); - } av = (AV *)SvRV (arg); - ret = (char **)malloc (av_len (av) + 1 + 1); + ret = malloc (av_len (av) + 1 + 1); + if (!ret) + croak (\"malloc failed\"); for (i = 0; i <= av_len (av); i++) { SV **elem = av_fetch (av, i, 0); @@ -5550,7 +5556,8 @@ static VALUE ruby_guestfs_close (VALUE gv) pr " {\n"; pr " int i, len;\n"; pr " len = RARRAY_LEN (%sv);\n" n; - pr " %s = malloc (sizeof (char *) * (len+1));\n" n; + pr " %s = guestfs_safe_malloc (g, sizeof (char *) * (len+1));\n" + n; pr " for (i = 0; i < len; ++i) {\n"; pr " VALUE v = rb_ary_entry (%sv, i);\n" n; pr " %s[i] = StringValueCStr (v);\n" n; @@ -6070,7 +6077,7 @@ Java_com_redhat_et_libguestfs_GuestFS__1close pr " %s = (*env)->GetStringUTFChars (env, j%s, NULL);\n" n n | StringList n -> pr " %s_len = (*env)->GetArrayLength (env, j%s);\n" n n; - pr " %s = malloc (sizeof (char *) * (%s_len+1));\n" n n; + pr " %s = guestfs_safe_malloc (g, sizeof (char *) * (%s_len+1));\n" n n; pr " for (i = 0; i < %s_len; ++i) {\n" n; pr " jobject o = (*env)->GetObjectArrayElement (env, j%s, i);\n" n;