X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=linux_module%2Fiface-env-inject.c;h=af60915b86d30e11915c104d170111ba4215143a;hb=d22c11cec4e8c3390bfe6bf16ed07f5d073f0d4a;hp=44daab59c002ba83eb9dd49082478c7e371b04ad;hpb=5c2a2684778fa080c41a0f04518721ebe476efb1;p=palacios.git diff --git a/linux_module/iface-env-inject.c b/linux_module/iface-env-inject.c index 44daab5..af60915 100644 --- a/linux_module/iface-env-inject.c +++ b/linux_module/iface-env-inject.c @@ -59,7 +59,7 @@ static int vm_env_inject (struct v3_guest * guest, unsigned int cmd, unsigned lo } env = palacios_alloc(sizeof(struct env_data)); - if (IS_ERR(env)) { + if (!env) { ERROR("Palacios Error: could not allocate space for environment data\n"); return -EFAULT; } @@ -68,12 +68,13 @@ static int vm_env_inject (struct v3_guest * guest, unsigned int cmd, unsigned lo env->num_strings = env_arg.num_strings; - strcpy(env->bin_name, env_arg.bin_name); + strncpy(env->bin_name, env_arg.bin_name, MAX_STRING_LEN); + env->bin_name[MAX_STRING_LEN-1] = 0; DEBUG("Binary hooked on: %s\n", env->bin_name); //DEBUG("Palacios: Allocating space for %u env var string ptrs...\n", env->num_strings); env->strings = palacios_alloc(env->num_strings*sizeof(char*)); - if (IS_ERR(env->strings)) { + if (!(env->strings)) { ERROR("Palacios Error: could not allocate space for env var strings\n"); return -EFAULT; } @@ -87,7 +88,7 @@ static int vm_env_inject (struct v3_guest * guest, unsigned int cmd, unsigned lo for (i = 0; i < env->num_strings; i++) { char * tmp = palacios_alloc(MAX_STRING_LEN); - if (IS_ERR(tmp)) { + if (!(tmp)) { ERROR("Palacios Error: could not allocate space for env var string #%d\n", i); return -EFAULT; } @@ -132,6 +133,7 @@ static int guest_init_env_inject (struct v3_guest * guest, void ** vm_data) { static int guest_deinit_env_inject (struct v3_guest * guest, void * vm_data) { free_inject_data(); + remove_guest_ctrl(guest, V3_VM_ENV_INJECT); return 0; }