aboutsummaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-01-31 18:49:58 +0100
committerFlorian Weimer <fweimer@redhat.com>2019-01-31 18:49:58 +0100
commit2bac7daa58da1a313bd452369b0508b31e146637 (patch)
treecb26cc3d34519adb5110c443400ff47b3c3cc00b /support
parentde44ab67aa4eec369deea828733567c35a0611c0 (diff)
downloadglibc-2bac7daa58da1a313bd452369b0508b31e146637.zip
glibc-2bac7daa58da1a313bd452369b0508b31e146637.tar.gz
glibc-2bac7daa58da1a313bd452369b0508b31e146637.tar.bz2
nss_files: Fix /etc/aliases null pointer dereference [BZ #24059]
If /etc/aliases ends with a continuation line (a line that starts with whitespace) which does not have a trailing newline character, the file parser would crash due to a null pointer dereference. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'support')
-rw-r--r--support/namespace.h2
-rw-r--r--support/support_chroot.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/support/namespace.h b/support/namespace.h
index f937549..4770cf9 100644
--- a/support/namespace.h
+++ b/support/namespace.h
@@ -74,6 +74,7 @@ struct support_chroot_configuration
const char *resolv_conf; /* /etc/resolv.conf. */
const char *hosts; /* /etc/hosts. */
const char *host_conf; /* /etc/host.conf. */
+ const char *aliases; /* /etc/aliases. */
};
/* The result of the creation of a chroot. */
@@ -90,6 +91,7 @@ struct support_chroot
char *path_resolv_conf; /* /etc/resolv.conf. */
char *path_hosts; /* /etc/hosts. */
char *path_host_conf; /* /etc/host.conf. */
+ char *path_aliases; /* /etc/aliases. */
};
/* Create a chroot environment. The returned data should be freed
diff --git a/support/support_chroot.c b/support/support_chroot.c
index b866b89..412ec33 100644
--- a/support/support_chroot.c
+++ b/support/support_chroot.c
@@ -56,6 +56,7 @@ support_chroot_create (struct support_chroot_configuration conf)
&chroot->path_resolv_conf);
write_file (path_etc, "hosts", conf.hosts, &chroot->path_hosts);
write_file (path_etc, "host.conf", conf.host_conf, &chroot->path_host_conf);
+ write_file (path_etc, "aliases", conf.aliases, &chroot->path_aliases);
free (path_etc);
@@ -77,5 +78,6 @@ support_chroot_free (struct support_chroot *chroot)
free (chroot->path_resolv_conf);
free (chroot->path_hosts);
free (chroot->path_host_conf);
+ free (chroot->path_aliases);
free (chroot);
}