diff options
Diffstat (limited to 'proxy/src/gp_config.c')
-rw-r--r-- | proxy/src/gp_config.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/proxy/src/gp_config.c b/proxy/src/gp_config.c index a906128..8be669a 100644 --- a/proxy/src/gp_config.c +++ b/proxy/src/gp_config.c @@ -31,7 +31,7 @@ #include "gp_proxy.h" #include "gp_config.h" -static void free_str_array(const char ***a) +static void free_str_array(const char ***a, int *count) { const char **array = *a; int i; @@ -39,8 +39,14 @@ static void free_str_array(const char ***a) if (!a) { return; } - for (i = 0; array[i]; i++) { - safefree(array[i]); + if (count) { + for (i = 0; i < *count; i++) { + safefree(array[i]); + } + } else { + for (i = 0; array[i]; i++) { + safefree(array[i]); + } } safefree(*a); } @@ -50,7 +56,8 @@ static void gp_service_free(struct gp_service *svc) free(svc->name); if (svc->mechs & GP_CRED_KRB5) { free(svc->krb5.principal); - free_str_array(&(svc->krb5.cred_store)); + free_str_array(&(svc->krb5.cred_store), + &svc->krb5.cred_count); } gp_free_creds_handle(&svc->creds_handle); memset(svc, 0, sizeof(struct gp_service)); |