598 lines
19 KiB
Diff
598 lines
19 KiB
Diff
|
diff -up nfs-utils-2.3.3/configure.ac.orig nfs-utils-2.3.3/configure.ac
|
||
|
--- nfs-utils-2.3.3/configure.ac.orig 2019-09-18 10:57:14.190810677 -0400
|
||
|
+++ nfs-utils-2.3.3/configure.ac 2019-09-18 10:57:56.715567641 -0400
|
||
|
@@ -561,6 +561,7 @@ my_am_cflags="\
|
||
|
-Werror=parentheses \
|
||
|
-Werror=aggregate-return \
|
||
|
-Werror=unused-result \
|
||
|
+ -Wno-cast-function-type \
|
||
|
-fno-strict-aliasing \
|
||
|
"
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/junction/path.c.orig nfs-utils-2.3.3/support/junction/path.c
|
||
|
--- nfs-utils-2.3.3/support/junction/path.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/junction/path.c 2019-09-18 10:57:56.715567641 -0400
|
||
|
@@ -163,8 +163,10 @@ nsdb_count_components(const char *pathna
|
||
|
break;
|
||
|
next = strchrnul(component, '/');
|
||
|
tmp = (size_t)(next - component);
|
||
|
- if (tmp > 255)
|
||
|
+ if (tmp > 255) {
|
||
|
+ free(start);
|
||
|
return false;
|
||
|
+ }
|
||
|
length += XDR_UINT_BYTES + (nsdb_quadlen(tmp) << 2);
|
||
|
count++;
|
||
|
|
||
|
@@ -328,11 +330,13 @@ nsdb_posix_to_path_array(const char *pat
|
||
|
length = (size_t)(next - component);
|
||
|
if (length > 255) {
|
||
|
nsdb_free_string_array(result);
|
||
|
+ free(normalized);
|
||
|
return FEDFS_ERR_SVRFAULT;
|
||
|
}
|
||
|
|
||
|
result[i] = strndup(component, length);
|
||
|
if (result[i] == NULL) {
|
||
|
+ free(normalized);
|
||
|
nsdb_free_string_array(result);
|
||
|
return FEDFS_ERR_SVRFAULT;
|
||
|
}
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/exports.c.orig nfs-utils-2.3.3/support/nfs/exports.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/exports.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/exports.c 2019-09-18 10:57:56.715567641 -0400
|
||
|
@@ -714,6 +714,7 @@ parsesquash(char *list, int **idp, int *
|
||
|
}
|
||
|
if (id0 == -1 || id1 == -1) {
|
||
|
syntaxerr("uid/gid -1 not permitted");
|
||
|
+ xfree(id);
|
||
|
return -1;
|
||
|
}
|
||
|
if ((len % 8) == 0)
|
||
|
@@ -724,6 +725,7 @@ parsesquash(char *list, int **idp, int *
|
||
|
break;
|
||
|
if (*cp != ',') {
|
||
|
syntaxerr("bad uid/gid list");
|
||
|
+ xfree(id);
|
||
|
return -1;
|
||
|
}
|
||
|
cp++;
|
||
|
diff -up nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c.orig nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c
|
||
|
--- nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c 2019-09-18 10:57:56.716567635 -0400
|
||
|
@@ -406,8 +406,10 @@ int nfs4_init_name_mapping(char *conffil
|
||
|
nfs4_methods = conf_get_list("Translation", "Method");
|
||
|
if (nfs4_methods) {
|
||
|
IDMAP_LOG(1, ("libnfsidmap: processing 'Method' list"));
|
||
|
- if (load_plugins(nfs4_methods, &nfs4_plugins) == -1)
|
||
|
+ if (load_plugins(nfs4_methods, &nfs4_plugins) == -1) {
|
||
|
+ conf_free_list(nfs4_methods);
|
||
|
return -ENOENT;
|
||
|
+ }
|
||
|
} else {
|
||
|
struct conf_list list;
|
||
|
struct conf_list_node node;
|
||
|
@@ -475,11 +477,15 @@ out:
|
||
|
if (ret) {
|
||
|
if (nfs4_plugins)
|
||
|
unload_plugins(nfs4_plugins);
|
||
|
- if (gss_plugins)
|
||
|
+ if (gss_plugins) {
|
||
|
unload_plugins(gss_plugins);
|
||
|
+ }
|
||
|
nfs4_plugins = gss_plugins = NULL;
|
||
|
}
|
||
|
|
||
|
+ if (gss_methods)
|
||
|
+ conf_free_list(gss_methods);
|
||
|
+
|
||
|
return ret ? -ENOENT: 0;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/nfsidmap/static.c.orig nfs-utils-2.3.3/support/nfsidmap/static.c
|
||
|
--- nfs-utils-2.3.3/support/nfsidmap/static.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfsidmap/static.c 2019-09-18 10:57:56.716567635 -0400
|
||
|
@@ -347,6 +347,7 @@ static int static_init(void) {
|
||
|
warnx("static_init: calloc (1, %lu) failed",
|
||
|
(unsigned long)sizeof *unode);
|
||
|
free(pw);
|
||
|
+ conf_free_list(princ_list);
|
||
|
return -ENOMEM;
|
||
|
}
|
||
|
unode->uid = pw->pw_uid;
|
||
|
@@ -355,6 +356,9 @@ static int static_init(void) {
|
||
|
unode->localname = conf_get_str("Static", cln->field);
|
||
|
if (!unode->localname) {
|
||
|
free(pw);
|
||
|
+ free(unode->principal);
|
||
|
+ free(unode);
|
||
|
+ conf_free_list(princ_list);
|
||
|
return -ENOENT;
|
||
|
}
|
||
|
|
||
|
@@ -379,6 +383,7 @@ static int static_init(void) {
|
||
|
warnx("static_init: calloc (1, %lu) failed",
|
||
|
(unsigned long)sizeof *gnode);
|
||
|
free(gr);
|
||
|
+ conf_free_list(princ_list);
|
||
|
return -ENOMEM;
|
||
|
}
|
||
|
gnode->gid = gr->gr_gid;
|
||
|
@@ -387,6 +392,9 @@ static int static_init(void) {
|
||
|
gnode->localgroup = conf_get_str("Static", cln->field);
|
||
|
if (!gnode->localgroup) {
|
||
|
free(gr);
|
||
|
+ free(gnode->principal);
|
||
|
+ free(gnode);
|
||
|
+ conf_free_list(princ_list);
|
||
|
return -ENOENT;
|
||
|
}
|
||
|
|
||
|
@@ -394,6 +402,8 @@ static int static_init(void) {
|
||
|
|
||
|
LIST_INSERT_HEAD (&gid_mappings[gid_hash(gnode->gid)], gnode, link);
|
||
|
}
|
||
|
+
|
||
|
+ conf_free_list(princ_list);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/mydaemon.c.orig nfs-utils-2.3.3/support/nfs/mydaemon.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/mydaemon.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/mydaemon.c 2019-09-18 10:57:56.716567635 -0400
|
||
|
@@ -123,6 +123,7 @@ daemon_init(bool fg)
|
||
|
dup2(tempfd, 0);
|
||
|
dup2(tempfd, 1);
|
||
|
dup2(tempfd, 2);
|
||
|
+ close(tempfd);
|
||
|
closelog();
|
||
|
dup2(pipefds[1], 3);
|
||
|
pipefds[1] = 3;
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/rpcmisc.c.orig nfs-utils-2.3.3/support/nfs/rpcmisc.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/rpcmisc.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/rpcmisc.c 2019-09-18 10:57:56.716567635 -0400
|
||
|
@@ -102,6 +102,7 @@ makesock(int port, int proto)
|
||
|
if (bind(sock, (struct sockaddr *) &sin, sizeof(sin)) == -1) {
|
||
|
xlog(L_FATAL, "Could not bind name to socket: %s",
|
||
|
strerror(errno));
|
||
|
+ close(sock);
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/svc_socket.c.orig nfs-utils-2.3.3/support/nfs/svc_socket.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/svc_socket.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/svc_socket.c 2019-09-18 10:57:56.717567629 -0400
|
||
|
@@ -134,6 +134,7 @@ svc_socket (u_long number, int type, int
|
||
|
if (ret < 0)
|
||
|
{
|
||
|
xlog(L_ERROR, "svc_socket: socket reuse problem: %m");
|
||
|
+ (void) __close(sock);
|
||
|
return ret;
|
||
|
}
|
||
|
}
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/xcommon.c.orig nfs-utils-2.3.3/support/nfs/xcommon.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/xcommon.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/xcommon.c 2019-09-18 10:57:56.717567629 -0400
|
||
|
@@ -53,14 +53,17 @@ char *
|
||
|
xstrconcat3 (const char *s, const char *t, const char *u) {
|
||
|
char *res;
|
||
|
|
||
|
- if (!s) s = "";
|
||
|
+ int dofree = 1;
|
||
|
+
|
||
|
+ if (!s) s = "", dofree=0;
|
||
|
if (!t) t = "";
|
||
|
if (!u) u = "";
|
||
|
res = xmalloc(strlen(s) + strlen(t) + strlen(u) + 1);
|
||
|
strcpy(res, s);
|
||
|
strcat(res, t);
|
||
|
strcat(res, u);
|
||
|
- free((void *) s);
|
||
|
+ if (dofree)
|
||
|
+ free((void *) s);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
@@ -69,7 +72,9 @@ char *
|
||
|
xstrconcat4 (const char *s, const char *t, const char *u, const char *v) {
|
||
|
char *res;
|
||
|
|
||
|
- if (!s) s = "";
|
||
|
+ int dofree = 1;
|
||
|
+
|
||
|
+ if (!s) s = "", dofree=0;
|
||
|
if (!t) t = "";
|
||
|
if (!u) u = "";
|
||
|
if (!v) v = "";
|
||
|
@@ -78,7 +83,8 @@ xstrconcat4 (const char *s, const char *
|
||
|
strcat(res, t);
|
||
|
strcat(res, u);
|
||
|
strcat(res, v);
|
||
|
- free((void *) s);
|
||
|
+ if (dofree)
|
||
|
+ free((void *) s);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/nfs/xlog.c.orig nfs-utils-2.3.3/support/nfs/xlog.c
|
||
|
--- nfs-utils-2.3.3/support/nfs/xlog.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nfs/xlog.c 2019-09-18 10:57:56.717567629 -0400
|
||
|
@@ -135,10 +135,14 @@ xlog_from_conffile(char *service)
|
||
|
struct conf_list_node *n;
|
||
|
|
||
|
kinds = conf_get_list(service, "debug");
|
||
|
- if (!kinds || !kinds->cnt)
|
||
|
+ if (!kinds || !kinds->cnt) {
|
||
|
+ free(kinds);
|
||
|
return;
|
||
|
+ }
|
||
|
TAILQ_FOREACH(n, &(kinds->fields), link)
|
||
|
xlog_sconfig(n->field, 1);
|
||
|
+
|
||
|
+ conf_free_list(kinds);
|
||
|
}
|
||
|
|
||
|
int
|
||
|
diff -up nfs-utils-2.3.3/support/nsm/file.c.orig nfs-utils-2.3.3/support/nsm/file.c
|
||
|
--- nfs-utils-2.3.3/support/nsm/file.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/support/nsm/file.c 2019-09-18 10:57:56.717567629 -0400
|
||
|
@@ -533,6 +533,7 @@ nsm_update_kernel_state(const int state)
|
||
|
len = snprintf(buf, sizeof(buf), "%d", state);
|
||
|
if (error_check(len, sizeof(buf))) {
|
||
|
xlog_warn("Failed to form NSM state number string");
|
||
|
+ close(fd);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/systemd/rpc-pipefs-generator.c.orig nfs-utils-2.3.3/systemd/rpc-pipefs-generator.c
|
||
|
--- nfs-utils-2.3.3/systemd/rpc-pipefs-generator.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/systemd/rpc-pipefs-generator.c 2019-09-18 10:57:56.717567629 -0400
|
||
|
@@ -69,12 +69,16 @@ int generate_target(char *pipefs_path, c
|
||
|
return 1;
|
||
|
|
||
|
ret = generate_mount_unit(pipefs_path, pipefs_unit, dirname);
|
||
|
- if (ret)
|
||
|
+ if (ret) {
|
||
|
+ free(pipefs_unit);
|
||
|
return ret;
|
||
|
+ }
|
||
|
|
||
|
path = malloc(strlen(dirname) + 1 + sizeof(filebase));
|
||
|
- if (!path)
|
||
|
+ if (!path) {
|
||
|
+ free(pipefs_unit);
|
||
|
return 2;
|
||
|
+ }
|
||
|
sprintf(path, "%s", dirname);
|
||
|
mkdir(path, 0755);
|
||
|
strcat(path, filebase);
|
||
|
@@ -82,6 +86,7 @@ int generate_target(char *pipefs_path, c
|
||
|
if (!f)
|
||
|
{
|
||
|
free(path);
|
||
|
+ free(pipefs_unit);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
@@ -90,6 +95,7 @@ int generate_target(char *pipefs_path, c
|
||
|
fprintf(f, "After=%s\n", pipefs_unit);
|
||
|
fclose(f);
|
||
|
free(path);
|
||
|
+ free(pipefs_unit);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
diff -up nfs-utils-2.3.3/utils/blkmapd/device-discovery.c.orig nfs-utils-2.3.3/utils/blkmapd/device-discovery.c
|
||
|
--- nfs-utils-2.3.3/utils/blkmapd/device-discovery.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/blkmapd/device-discovery.c 2019-09-18 10:58:54.444237714 -0400
|
||
|
@@ -186,8 +186,11 @@ static void bl_add_disk(char *filepath)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- if (disk && diskpath)
|
||
|
+ if (disk && diskpath) {
|
||
|
+ if (serial)
|
||
|
+ free(serial);
|
||
|
return;
|
||
|
+ }
|
||
|
|
||
|
/* add path */
|
||
|
path = malloc(sizeof(struct bl_disk_path));
|
||
|
@@ -223,6 +226,8 @@ static void bl_add_disk(char *filepath)
|
||
|
disk->size = size;
|
||
|
disk->valid_path = path;
|
||
|
}
|
||
|
+ if (serial)
|
||
|
+ free(serial);
|
||
|
}
|
||
|
return;
|
||
|
|
||
|
@@ -232,6 +237,9 @@ static void bl_add_disk(char *filepath)
|
||
|
free(path->full_path);
|
||
|
free(path);
|
||
|
}
|
||
|
+ if (serial)
|
||
|
+ free(serial);
|
||
|
+
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
@@ -375,7 +383,12 @@ static void bl_rpcpipe_cb(void)
|
||
|
if (event->mask & IN_CREATE) {
|
||
|
BL_LOG_WARNING("nfs pipe dir created\n");
|
||
|
bl_watch_dir(nfspipe_dir, &nfs_pipedir_wfd);
|
||
|
+ if (bl_pipe_fd >= 0)
|
||
|
+ close(bl_pipe_fd);
|
||
|
bl_pipe_fd = open(bl_pipe_file, O_RDWR);
|
||
|
+ if (bl_pipe_fd < 0)
|
||
|
+ BL_LOG_ERR("open %s failed: %s\n",
|
||
|
+ event->name, strerror(errno));
|
||
|
} else if (event->mask & IN_DELETE) {
|
||
|
BL_LOG_WARNING("nfs pipe dir deleted\n");
|
||
|
inotify_rm_watch(bl_watch_fd, nfs_pipedir_wfd);
|
||
|
@@ -388,6 +401,8 @@ static void bl_rpcpipe_cb(void)
|
||
|
continue;
|
||
|
if (event->mask & IN_CREATE) {
|
||
|
BL_LOG_WARNING("blocklayout pipe file created\n");
|
||
|
+ if (bl_pipe_fd >= 0)
|
||
|
+ close(bl_pipe_fd);
|
||
|
bl_pipe_fd = open(bl_pipe_file, O_RDWR);
|
||
|
if (bl_pipe_fd < 0)
|
||
|
BL_LOG_ERR("open %s failed: %s\n",
|
||
|
diff -up nfs-utils-2.3.3/utils/gssd/krb5_util.c.orig nfs-utils-2.3.3/utils/gssd/krb5_util.c
|
||
|
--- nfs-utils-2.3.3/utils/gssd/krb5_util.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/gssd/krb5_util.c 2019-09-18 10:57:56.718567624 -0400
|
||
|
@@ -698,6 +698,8 @@ gssd_search_krb5_keytab(krb5_context con
|
||
|
"we failed to unparse principal name: %s\n",
|
||
|
k5err);
|
||
|
k5_free_kt_entry(context, kte);
|
||
|
+ free(k5err);
|
||
|
+ k5err = NULL;
|
||
|
continue;
|
||
|
}
|
||
|
printerr(4, "Processing keytab entry for principal '%s'\n",
|
||
|
@@ -899,6 +901,8 @@ find_keytab_entry(krb5_context context,
|
||
|
k5err = gssd_k5_err_msg(context, code);
|
||
|
printerr(1, "%s while building principal for '%s'\n",
|
||
|
k5err, spn);
|
||
|
+ free(k5err);
|
||
|
+ k5err = NULL;
|
||
|
continue;
|
||
|
}
|
||
|
code = krb5_kt_get_entry(context, kt, princ, 0, 0, kte);
|
||
|
@@ -1168,7 +1172,8 @@ gssd_get_krb5_machine_cred_list(char ***
|
||
|
*list = l;
|
||
|
retval = 0;
|
||
|
goto out;
|
||
|
- }
|
||
|
+ } else
|
||
|
+ free((void *)l);
|
||
|
out:
|
||
|
return retval;
|
||
|
}
|
||
|
@@ -1216,6 +1221,8 @@ gssd_destroy_krb5_machine_creds(void)
|
||
|
printerr(0, "WARNING: %s while resolving credential "
|
||
|
"cache '%s' for destruction\n", k5err,
|
||
|
ple->ccname);
|
||
|
+ free(k5err);
|
||
|
+ k5err = NULL;
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/mount/configfile.c.orig nfs-utils-2.3.3/utils/mount/configfile.c
|
||
|
--- nfs-utils-2.3.3/utils/mount/configfile.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/mount/configfile.c 2019-09-18 10:57:56.718567624 -0400
|
||
|
@@ -404,7 +404,7 @@ char *conf_get_mntopts(char *spec, char
|
||
|
|
||
|
/* list_size + optlen + ',' + '\0' */
|
||
|
config_opts = calloc(1, (list_size+optlen+2));
|
||
|
- if (server == NULL) {
|
||
|
+ if (config_opts == NULL) {
|
||
|
xlog_warn("conf_get_mountops: Unable calloc memory for config_opts");
|
||
|
free_all();
|
||
|
return mount_opts;
|
||
|
diff -up nfs-utils-2.3.3/utils/mountd/cache.c.orig nfs-utils-2.3.3/utils/mountd/cache.c
|
||
|
--- nfs-utils-2.3.3/utils/mountd/cache.c.orig 2019-09-18 10:57:14.190810677 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/mountd/cache.c 2019-09-18 10:57:56.718567624 -0400
|
||
|
@@ -1240,7 +1240,7 @@ static struct exportent *lookup_junction
|
||
|
goto out;
|
||
|
}
|
||
|
status = nfs_get_basic_junction(pathname, &locations);
|
||
|
- switch (status) {
|
||
|
+ if (status) {
|
||
|
xlog(L_WARNING, "Dangling junction %s: %s",
|
||
|
pathname, strerror(status));
|
||
|
goto out;
|
||
|
@@ -1248,10 +1248,11 @@ static struct exportent *lookup_junction
|
||
|
|
||
|
parent = lookup_parent_export(dom, pathname, ai);
|
||
|
if (parent == NULL)
|
||
|
- goto out;
|
||
|
+ goto free_locations;
|
||
|
|
||
|
exp = locations_to_export(locations, pathname, parent);
|
||
|
|
||
|
+free_locations:
|
||
|
nfs_free_locations(locations->ns_list);
|
||
|
free(locations);
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/mountd/fsloc.c.orig nfs-utils-2.3.3/utils/mountd/fsloc.c
|
||
|
--- nfs-utils-2.3.3/utils/mountd/fsloc.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/mountd/fsloc.c 2019-09-18 10:57:56.719567618 -0400
|
||
|
@@ -102,6 +102,7 @@ static struct servers *parse_list(char *
|
||
|
cp = strchr(list[i], '@');
|
||
|
if ((!cp) || list[i][0] != '/') {
|
||
|
xlog(L_WARNING, "invalid entry '%s'", list[i]);
|
||
|
+ free(mp);
|
||
|
continue; /* XXX Need better error handling */
|
||
|
}
|
||
|
res->h_mp[i] = mp;
|
||
|
diff -up nfs-utils-2.3.3/utils/mount/nfsmount.c.orig nfs-utils-2.3.3/utils/mount/nfsmount.c
|
||
|
--- nfs-utils-2.3.3/utils/mount/nfsmount.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/mount/nfsmount.c 2019-09-18 10:57:56.730567555 -0400
|
||
|
@@ -452,6 +452,7 @@ parse_options(char *old_opts, struct nfs
|
||
|
nfs_error(_("%s: Bad nfs mount parameter: %s\n"), progname, opt);
|
||
|
out_bad:
|
||
|
free(tmp_opts);
|
||
|
+ free(mounthost);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/mount/stropts.c.orig nfs-utils-2.3.3/utils/mount/stropts.c
|
||
|
--- nfs-utils-2.3.3/utils/mount/stropts.c.orig 2019-09-18 10:57:14.183810717 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/mount/stropts.c 2019-09-18 10:57:56.730567555 -0400
|
||
|
@@ -982,8 +982,11 @@ static int nfs_try_mount(struct nfsmount
|
||
|
}
|
||
|
|
||
|
if (!nfs_append_addr_option(address->ai_addr,
|
||
|
- address->ai_addrlen, mi->options))
|
||
|
+ address->ai_addrlen, mi->options)) {
|
||
|
+ freeaddrinfo(address);
|
||
|
+ errno = ENOMEM;
|
||
|
return 0;
|
||
|
+ }
|
||
|
mi->address = address;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/nfsdcltrack/sqlite.c.orig nfs-utils-2.3.3/utils/nfsdcltrack/sqlite.c
|
||
|
--- nfs-utils-2.3.3/utils/nfsdcltrack/sqlite.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/nfsdcltrack/sqlite.c 2019-09-18 10:57:56.731567549 -0400
|
||
|
@@ -215,6 +215,8 @@ sqlite_maindb_init_v2(void)
|
||
|
&err);
|
||
|
if (ret != SQLITE_OK) {
|
||
|
xlog(L_ERROR, "Unable to begin transaction: %s", err);
|
||
|
+ if (err)
|
||
|
+ sqlite3_free(err);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c.orig nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c
|
||
|
--- nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c.orig 2019-11-11 08:49:06.044870974 -0500
|
||
|
+++ nfs-utils-2.3.3/support/nfsidmap/libnfsidmap.c 2019-11-11 09:19:10.391896845 -0500
|
||
|
@@ -486,6 +486,9 @@ out:
|
||
|
if (gss_methods)
|
||
|
conf_free_list(gss_methods);
|
||
|
|
||
|
+ if (nfs4_methods)
|
||
|
+ conf_free_list(nfs4_methods);
|
||
|
+
|
||
|
return ret ? -ENOENT: 0;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/gssd/krb5_util.c.orig nfs-utils-2.3.3/utils/gssd/krb5_util.c
|
||
|
--- nfs-utils-2.3.3/utils/gssd/krb5_util.c.orig 2019-11-11 08:49:06.045870979 -0500
|
||
|
+++ nfs-utils-2.3.3/utils/gssd/krb5_util.c 2019-11-11 09:19:10.393896856 -0500
|
||
|
@@ -911,6 +911,8 @@ find_keytab_entry(krb5_context context,
|
||
|
k5err = gssd_k5_err_msg(context, code);
|
||
|
printerr(3, "%s while getting keytab entry for '%s'\n",
|
||
|
k5err, spn);
|
||
|
+ free(k5err);
|
||
|
+ k5err = NULL;
|
||
|
/*
|
||
|
* We tried the active directory machine account
|
||
|
* with the hostname part as-is and failed...
|
||
|
@@ -1013,6 +1015,8 @@ query_krb5_ccache(const char* cred_cache
|
||
|
char *str = NULL;
|
||
|
char *princstring;
|
||
|
|
||
|
+ *ret_princname = *ret_realm = NULL;
|
||
|
+
|
||
|
ret = krb5_init_context(&context);
|
||
|
if (ret)
|
||
|
return 0;
|
||
|
@@ -1047,7 +1051,7 @@ err_princ:
|
||
|
krb5_cc_close(context, ccache);
|
||
|
err_cache:
|
||
|
krb5_free_context(context);
|
||
|
- return found;
|
||
|
+ return (*ret_princname && *ret_realm);
|
||
|
}
|
||
|
|
||
|
/*==========================*/
|
||
|
@@ -1230,6 +1234,8 @@ gssd_destroy_krb5_machine_creds(void)
|
||
|
k5err = gssd_k5_err_msg(context, code);
|
||
|
printerr(0, "WARNING: %s while destroying credential "
|
||
|
"cache '%s'\n", k5err, ple->ccname);
|
||
|
+ free(k5err);
|
||
|
+ k5err = NULL;
|
||
|
}
|
||
|
}
|
||
|
krb5_free_context(context);
|
||
|
diff -up nfs-utils-2.3.3/utils/idmapd/idmapd.c.orig nfs-utils-2.3.3/utils/idmapd/idmapd.c
|
||
|
--- nfs-utils-2.3.3/utils/idmapd/idmapd.c.orig 2019-11-11 08:49:06.029870889 -0500
|
||
|
+++ nfs-utils-2.3.3/utils/idmapd/idmapd.c 2019-11-11 09:19:10.393896856 -0500
|
||
|
@@ -517,14 +517,16 @@ static void
|
||
|
clntscancb(int UNUSED(fd), short UNUSED(which), void *data)
|
||
|
{
|
||
|
struct idmap_clientq *icq = data;
|
||
|
- struct idmap_client *ic;
|
||
|
+ struct idmap_client *ic, *ic_next;
|
||
|
|
||
|
- TAILQ_FOREACH(ic, icq, ic_next)
|
||
|
+ for (ic = TAILQ_FIRST(icq); ic != NULL; ic = ic_next) {
|
||
|
+ ic_next = TAILQ_NEXT(ic, ic_next);
|
||
|
if (ic->ic_fd == -1 && nfsopen(ic) == -1) {
|
||
|
close(ic->ic_dirfd);
|
||
|
TAILQ_REMOVE(icq, ic, ic_next);
|
||
|
free(ic);
|
||
|
}
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
diff -up nfs-utils-2.3.3/utils/statd/monitor.c.orig nfs-utils-2.3.3/utils/statd/monitor.c
|
||
|
--- nfs-utils-2.3.3/utils/statd/monitor.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/statd/monitor.c 2019-11-11 09:19:10.393896856 -0500
|
||
|
@@ -66,7 +66,7 @@ sm_mon_1_svc(struct mon *argp, struct sv
|
||
|
*my_name = argp->mon_id.my_id.my_name;
|
||
|
struct my_id *id = &argp->mon_id.my_id;
|
||
|
char *cp;
|
||
|
- notify_list *clnt;
|
||
|
+ notify_list *clnt = NULL;
|
||
|
struct sockaddr_in my_addr = {
|
||
|
.sin_family = AF_INET,
|
||
|
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
|
||
|
@@ -223,6 +224,7 @@ sm_mon_1_svc(struct mon *argp, struct sv
|
||
|
|
||
|
failure:
|
||
|
xlog_warn("STAT_FAIL to %s for SM_MON of %s", my_name, mon_name);
|
||
|
+ free(clnt);
|
||
|
return (&result);
|
||
|
}
|
||
|
|
||
|
@@ -242,6 +244,7 @@ load_one_host(const char *hostname,
|
||
|
clnt->dns_name = strdup(hostname);
|
||
|
if (clnt->dns_name == NULL) {
|
||
|
nlist_free(NULL, clnt);
|
||
|
+ free(clnt);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
diff -up nfs-utils-2.3.3/utils/statd/notlist.c.orig nfs-utils-2.3.3/utils/statd/notlist.c
|
||
|
--- nfs-utils-2.3.3/utils/statd/notlist.c.orig 2018-09-06 14:09:08.000000000 -0400
|
||
|
+++ nfs-utils-2.3.3/utils/statd/notlist.c 2019-11-11 09:19:10.394896861 -0500
|
||
|
@@ -210,7 +210,6 @@ nlist_free(notify_list **head, notify_li
|
||
|
if (NL_MON_NAME(entry))
|
||
|
free(NL_MON_NAME(entry));
|
||
|
free(entry->dns_name);
|
||
|
- free(entry);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
@@ -219,8 +218,14 @@ nlist_free(notify_list **head, notify_li
|
||
|
void
|
||
|
nlist_kill(notify_list **head)
|
||
|
{
|
||
|
- while (*head)
|
||
|
+ notify_list *next;
|
||
|
+
|
||
|
+ while (*head) {
|
||
|
+ next = (*head)->next;
|
||
|
nlist_free(head, *head);
|
||
|
+ free(*head);
|
||
|
+ *head = next;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
/*
|