summaryrefslogtreecommitdiff
path: root/libc/sysdeps/unix/sysv/linux/shm_open.c
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2013-11-06 23:03:08 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2013-11-06 23:03:08 +0000
commit036dfd44bcc8ed8e97dcd9c763f61d3b59796941 (patch)
tree27fe47c83800c73d61262ea4e70b211f6753e516 /libc/sysdeps/unix/sysv/linux/shm_open.c
parentfe2ed5aaa408e1ab996a9fe1595a05634208a79c (diff)
downloadeglibc2-036dfd44bcc8ed8e97dcd9c763f61d3b59796941.tar.gz
Merge changes between r24305 and r24468 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@24469 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps/unix/sysv/linux/shm_open.c')
-rw-r--r--libc/sysdeps/unix/sysv/linux/shm_open.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libc/sysdeps/unix/sysv/linux/shm_open.c b/libc/sysdeps/unix/sysv/linux/shm_open.c
index 41d93155a..482b49cfe 100644
--- a/libc/sysdeps/unix/sysv/linux/shm_open.c
+++ b/libc/sysdeps/unix/sysv/linux/shm_open.c
@@ -148,14 +148,15 @@ shm_open (const char *name, int oflag, mode_t mode)
while (name[0] == '/')
++name;
- if (name[0] == '\0')
+ namelen = strlen (name);
+
+ /* Validate the filename. */
+ if (name[0] == '\0' || namelen > NAME_MAX || strchr (name, '/') == NULL)
{
- /* The name "/" is not supported. */
__set_errno (EINVAL);
return -1;
}
- namelen = strlen (name);
fname = (char *) alloca (mountpoint.dirlen + namelen + 1);
__mempcpy (__mempcpy (fname, mountpoint.dir, mountpoint.dirlen),
name, namelen + 1);
@@ -237,14 +238,15 @@ shm_unlink (const char *name)
while (name[0] == '/')
++name;
- if (name[0] == '\0')
+ namelen = strlen (name);
+
+ /* Validate the filename. */
+ if (name[0] == '\0' || namelen > NAME_MAX || strchr (name, '/') == NULL)
{
- /* The name "/" is not supported. */
__set_errno (ENOENT);
return -1;
}
- namelen = strlen (name);
fname = (char *) alloca (mountpoint.dirlen + namelen + 1);
__mempcpy (__mempcpy (fname, mountpoint.dir, mountpoint.dirlen),
name, namelen + 1);