From 63e8d6b960c227503f00daa799cc16817fd0a7cd Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Thu, 26 Aug 2021 15:34:27 -0400 Subject: [PATCH] General memory fixes (bz 1938822) Signed-off-by: Steve Dickson Resolves: bz1938822 --- nfs-utils-2.5.4-general-memory-fixes.patch | 131 +++++++++++++++++++++ nfs-utils.spec | 6 + 2 files changed, 137 insertions(+) create mode 100644 nfs-utils-2.5.4-general-memory-fixes.patch diff --git a/nfs-utils-2.5.4-general-memory-fixes.patch b/nfs-utils-2.5.4-general-memory-fixes.patch new file mode 100644 index 0000000..ad95ef9 --- /dev/null +++ b/nfs-utils-2.5.4-general-memory-fixes.patch @@ -0,0 +1,131 @@ +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", diff --git a/nfs-utils.spec b/nfs-utils.spec index 2429d8b..e078e07 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -19,6 +19,7 @@ Source4: 10-nfsv4.conf # Patch001: nfs-utils-2.5.4-mount-sloppy.patch Patch002: nfs-utils-2.5.4-nfsdcltrack-printf.patch +Patch003: nfs-utils-2.5.4-general-memory-fixes.patch Patch100: nfs-utils-1.2.1-statdpath-man.patch Patch101: nfs-utils-1.2.1-exp-subtree-warn-off.patch @@ -445,6 +446,11 @@ fi %{_mandir}/*/nfsiostat.8.gz %changelog +* Thu Aug 26 2021 Alice Mitchell 2.5.4-5 +- triggerun doesn't work correctly unless the epoch is given (bz 1937811) +- Restored the nfs-utils-2.5.4-mount-sloppy.patch (bz 1987070) +- General memory fixes (bz 1938822) + * Tue Aug 24 2021 Alice Mitchell 2.5.4-4 - explicitly disable any previous nfs-convert (bz 1937811)