You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.5 KiB
131 lines
3.5 KiB
diff --git a/support/nfsidmap/nss.c b/support/nfsidmap/nss.c |
|
index 669760b7..0f43076e 100644 |
|
--- a/support/nfsidmap/nss.c |
|
+++ b/support/nfsidmap/nss.c |
|
@@ -365,10 +365,8 @@ static int _nss_name_to_gid(char *name, gid_t *gid, int dostrip) |
|
out_buf: |
|
free(buf); |
|
out_name: |
|
- if (dostrip) |
|
- free(localname); |
|
- if (get_reformat_group()) |
|
- free(ref_name); |
|
+ free(localname); |
|
+ free(ref_name); |
|
out: |
|
return err; |
|
} |
|
diff --git a/support/nfsidmap/regex.c b/support/nfsidmap/regex.c |
|
index fdbb2e2f..958b4ac8 100644 |
|
--- a/support/nfsidmap/regex.c |
|
+++ b/support/nfsidmap/regex.c |
|
@@ -157,6 +157,7 @@ again: |
|
IDMAP_LOG(4, ("regexp_getpwnam: name '%s' mapped to '%s'", |
|
name, localname)); |
|
|
|
+ free(localname); |
|
*err_p = 0; |
|
return pw; |
|
|
|
diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c |
|
index 4113cbab..833d8e01 100644 |
|
--- a/utils/gssd/gssd.c |
|
+++ b/utils/gssd/gssd.c |
|
@@ -1016,7 +1016,7 @@ read_gss_conf(void) |
|
keytabfile = s; |
|
s = conf_get_str("gssd", "cred-cache-directory"); |
|
if (s) |
|
- ccachedir = s; |
|
+ ccachedir = strdup(s); |
|
s = conf_get_str("gssd", "preferred-realm"); |
|
if (s) |
|
preferred_realm = s; |
|
@@ -1070,7 +1070,8 @@ main(int argc, char *argv[]) |
|
keytabfile = optarg; |
|
break; |
|
case 'd': |
|
- ccachedir = optarg; |
|
+ free(ccachedir); |
|
+ ccachedir = strdup(optarg); |
|
break; |
|
case 't': |
|
context_timeout = atoi(optarg); |
|
@@ -1133,7 +1134,6 @@ main(int argc, char *argv[]) |
|
} |
|
|
|
if (ccachedir) { |
|
- char *ccachedir_copy; |
|
char *ptr; |
|
|
|
for (ptr = ccachedir, i = 2; *ptr; ptr++) |
|
@@ -1141,8 +1141,7 @@ main(int argc, char *argv[]) |
|
i++; |
|
|
|
ccachesearch = malloc(i * sizeof(char *)); |
|
- ccachedir_copy = strdup(ccachedir); |
|
- if (!ccachedir_copy || !ccachesearch) { |
|
+ if (!ccachesearch) { |
|
printerr(0, "malloc failure\n"); |
|
exit(EXIT_FAILURE); |
|
} |
|
@@ -1274,6 +1273,7 @@ main(int argc, char *argv[]) |
|
|
|
free(preferred_realm); |
|
free(ccachesearch); |
|
+ free(ccachedir); |
|
|
|
return rc < 0 ? EXIT_FAILURE : EXIT_SUCCESS; |
|
} |
|
diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c |
|
index c5f1152e..6d059f33 100644 |
|
--- a/utils/gssd/krb5_util.c |
|
+++ b/utils/gssd/krb5_util.c |
|
@@ -1129,6 +1129,12 @@ query_krb5_ccache(const char* cred_cache, char **ret_princname, |
|
*str = '\0'; |
|
*ret_princname = strdup(princstring); |
|
*ret_realm = strdup(str+1); |
|
+ if (!*ret_princname || !*ret_realm) { |
|
+ free(*ret_princname); |
|
+ free(*ret_realm); |
|
+ *ret_princname = NULL; |
|
+ *ret_realm = NULL; |
|
+ } |
|
} |
|
k5_free_unparsed_name(context, princstring); |
|
} |
|
@@ -1350,15 +1356,19 @@ gssd_get_krb5_machine_cred_list(char ***list) |
|
if (retval) |
|
continue; |
|
if (i + 1 > listsize) { |
|
+ char **tmplist; |
|
listsize += listinc; |
|
- l = (char **) |
|
+ tmplist = (char **) |
|
realloc(l, listsize * sizeof(char *)); |
|
- if (l == NULL) { |
|
+ if (tmplist == NULL) { |
|
+ gssd_free_krb5_machine_cred_list(l); |
|
retval = ENOMEM; |
|
goto out_lock; |
|
} |
|
+ l = tmplist; |
|
} |
|
if ((l[i++] = strdup(ple->ccname)) == NULL) { |
|
+ gssd_free_krb5_machine_cred_list(l); |
|
retval = ENOMEM; |
|
goto out_lock; |
|
} |
|
diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c |
|
index 2da97615..752fdb66 100644 |
|
--- a/utils/mountd/rmtab.c |
|
+++ b/utils/mountd/rmtab.c |
|
@@ -233,6 +233,9 @@ mountlist_list(void) |
|
m->ml_directory = strdup(rep->r_path); |
|
|
|
if (m->ml_hostname == NULL || m->ml_directory == NULL) { |
|
+ free(m->ml_hostname); |
|
+ free(m->ml_directory); |
|
+ free(m); |
|
mountlist_freeall(mlist); |
|
mlist = NULL; |
|
xlog(L_ERROR, "%s: memory allocation failed",
|
|
|