diff options
author | Miles Bader <miles@gnu.org> | 1996-01-24 02:39:26 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 1996-01-24 02:39:26 +0000 |
commit | 6d5cbf7b35bdbfe5bc9675842b2cf595f12288cc (patch) | |
tree | ecf2600c41feaeaceb4ec56d8fa8ec91e678c358 | |
parent | fd86137937b2be15f18c6564f39aa51fd0c48b00 (diff) | |
download | glibc-6d5cbf7b35bdbfe5bc9675842b2cf595f12288cc.tar.gz glibc-6d5cbf7b35bdbfe5bc9675842b2cf595f12288cc.tar.xz glibc-6d5cbf7b35bdbfe5bc9675842b2cf595f12288cc.zip |
(bind): Ensure NAME for the AF_LOCAL case is '\0'-terminated.
-rw-r--r-- | sysdeps/mach/hurd/bind.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sysdeps/mach/hurd/bind.c b/sysdeps/mach/hurd/bind.c index 11f268be09..a6ebc1ea34 100644 --- a/sysdeps/mach/hurd/bind.c +++ b/sysdeps/mach/hurd/bind.c @@ -42,8 +42,11 @@ DEFUN(bind, (fd, addr, len), /* For the local domain, we must create a node in the filesystem using the ifsock translator and then fetch the address from it. */ file_t dir, node; - char name[len - offsetof (struct sockaddr_un, sun_path)], *n; - strncpy (name, addr->sun_path, sizeof name); + char name[len - offsetof (struct sockaddr_un, sun_path) + 1], *n; + + strncpy (name, addr->sun_path, sizeof name - 1); + name[sizeof name - 1] = '\0'; /* Make sure */ + dir = __file_name_split (name, &n); if (dir == MACH_PORT_NULL) return -1; |