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