diff --git a/kubernetes/config/exec_provider.c b/kubernetes/config/exec_provider.c index f0dfa83..eb42d0e 100644 --- a/kubernetes/config/exec_provider.c +++ b/kubernetes/config/exec_provider.c @@ -75,7 +75,8 @@ int kube_exec_and_get_result(ExecCredential_t * exec_credential, const kubeconfi result_string = calloc(1, KUBECONFIG_EXEC_RESULT_BUFFER_SIZE); if (!result_string) { fprintf(stderr, "%s: Cannot allocate memory for command result.[%s]\n", fname, strerror(errno)); - return -1; + rc = -1; + goto end; } int result_string_remaining_size = KUBECONFIG_EXEC_RESULT_BUFFER_SIZE - 1; char string_buf[KUBECONFIG_STRING_BUFFER_SIZE]; @@ -90,11 +91,6 @@ int kube_exec_and_get_result(ExecCredential_t * exec_credential, const kubeconfi strncat(result_string, string_buf, strlen(string_buf)); memset(string_buf, 0, sizeof(string_buf)); } -#ifndef _WIN32 - pclose(fp); -#else - _pclose(fp); -#endif } else { fprintf(stderr, "%s: Cannot open pipe to run command.[%s]\n", fname, strerror(errno)); return -1; @@ -105,7 +101,16 @@ int kube_exec_and_get_result(ExecCredential_t * exec_credential, const kubeconfi end: if (result_string) { free(result_string); + result_string = NULL; } + if (fp) { +#ifndef _WIN32 + pclose(fp); +#else + _pclose(fp); +#endif + fp = NULL; + } return rc; } diff --git a/kubernetes/config/kube_config_yaml.c b/kubernetes/config/kube_config_yaml.c index 33ac027..b460512 100644 --- a/kubernetes/config/kube_config_yaml.c +++ b/kubernetes/config/kube_config_yaml.c @@ -1065,6 +1065,7 @@ int kubeyaml_save_kubeconfig(const kubeconfig_t * kubeconfig) /* Initialize the emitter object. */ if (!yaml_emitter_initialize(&emitter)) { fprintf(stderr, "%s: Could not initialize the emitter object\n", fname); + fclose(output); return -1; }