From edadcbd6247ca741756e234b6aa5f3db895bdd3d Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 10 May 2012 15:21:18 -0700 Subject: Hurd: empty file names fail with ENOENT --- ChangeLog | 6 ++++++ hurd/hurdchdir.c | 5 ++++- sysdeps/mach/hurd/chroot.c | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1371751346..739ee9689e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-05-10 Samuel Thibault + + * hurd/hurdchdir.c (_hurd_change_directory_port_from_name): + Return ENOENT when name is empty. + * sysdeps/mach/hurd/chroot.c (chroot): Likewise. + 2012-05-10 Thomas Schwinge * include/libc-symbols.h [NO_HIDDEN] (hidden_nolink): New macro. diff --git a/hurd/hurdchdir.c b/hurd/hurdchdir.c index 6881956d40..1669358a57 100644 --- a/hurd/hurdchdir.c +++ b/hurd/hurdchdir.c @@ -1,5 +1,5 @@ /* Change a port cell to a directory by looking up a name. - Copyright (C) 1999,2001,02 Free Software Foundation, Inc. + Copyright (C) 1999-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,6 +37,9 @@ _hurd_change_directory_port_from_name (struct hurd_port *portcell, len = strlen (name); if (len >= 2 && name[len - 2] == '/' && name[len - 1] == '.') lookup = name; + else if (len == 0) + /* Special-case empty file name according to POSIX. */ + return __hurd_fail (ENOENT); else { char *n = alloca (len + 3); diff --git a/sysdeps/mach/hurd/chroot.c b/sysdeps/mach/hurd/chroot.c index 1a6b1e44da..95bee33176 100644 --- a/sysdeps/mach/hurd/chroot.c +++ b/sysdeps/mach/hurd/chroot.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,93,94,95,97,99,2001 Free Software Foundation, Inc. +/* Copyright (C) 1991-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -37,6 +37,9 @@ chroot (const char *path) len = strlen (path); if (len >= 2 && path[len - 2] == '/' && path[len - 1] == '.') lookup = path; + else if (len == 0) + /* Special-case empty file name according to POSIX. */ + return __hurd_fail (ENOENT); else { char *n = alloca (len + 3); -- cgit 1.4.1