FYI, Daniel Dunbar, Cristian Cadar and Dawson Engler discovered that "mkdir -Z no-such-context DIR" segfaults. Here's the fix and a new test:
>From 72d052896a9092b811961a8f3e6ca5d151a59be5 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar <[EMAIL PROTECTED]> Date: Wed, 26 Mar 2008 00:51:47 +0100 Subject: [PATCH] mkdir -Z x d: don't segfault when diagnosing invalid context "x" (tiny change) * src/mkdir.c (main): Use "scontext", not NULL optarg in diagnostic. Reported by Cristian Cadar, Daniel Dunbar and Dawson Engler. * NEWS: Mention the bug fix. Signed-off-by: Jim Meyering <[EMAIL PROTECTED]> --- NEWS | 2 ++ src/mkdir.c | 2 +- 2 files changed, 3 insertions(+), 1 deletions(-) diff --git a/NEWS b/NEWS index 43d80ca..5250ed8 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,8 @@ GNU coreutils NEWS -*- outline -*- ls no longer segfaults on files in /proc when linked with an older version of libselinux. E.g., ls -l /proc/sys would dereference a NULL pointer. + "mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x" + mv would mistakenly unlink a destination file before calling rename, when the destination had two or more hard links. It no longer does that. [bug introduced in coreutils-5.3.0] diff --git a/src/mkdir.c b/src/mkdir.c index 3952594..d3d76ad 100644 --- a/src/mkdir.c +++ b/src/mkdir.c @@ -192,7 +192,7 @@ main (int argc, char **argv) if (scontext && setfscreatecon (scontext) < 0) error (EXIT_FAILURE, errno, _("failed to set default file creation context to %s"), - quote (optarg)); + quote (scontext)); if (options.make_ancestor_function || specified_mode) { -- 1.5.5.rc0.22.g467c >From 0e5381fe9357d89806dded3e8538dcb932ae3cac Mon Sep 17 00:00:00 2001 From: Jim Meyering <[EMAIL PROTECTED]> Date: Wed, 26 Mar 2008 01:11:16 +0100 Subject: [PATCH] Test for mkdir bug fix. * tests/mkdir/selinux: New file: test for today's fix. * tests/mkdir/Makefile.am (TESTS): Add selinux. Signed-off-by: Jim Meyering <[EMAIL PROTECTED]> --- tests/mkdir/Makefile.am | 1 + tests/mkdir/selinux | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 0 deletions(-) create mode 100755 tests/mkdir/selinux diff --git a/tests/mkdir/Makefile.am b/tests/mkdir/Makefile.am index 617abcf..ee8bfb8 100644 --- a/tests/mkdir/Makefile.am +++ b/tests/mkdir/Makefile.am @@ -1,5 +1,6 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*-. TESTS = \ + selinux \ p-1 \ p-2 \ p-3 \ diff --git a/tests/mkdir/selinux b/tests/mkdir/selinux new file mode 100755 index 0000000..9bfd090 --- /dev/null +++ b/tests/mkdir/selinux @@ -0,0 +1,38 @@ +#!/bin/sh +# ensure that an invalid context doesn't cause a segfault + +# Copyright (C) 2008 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +if test "$VERBOSE" = yes; then + set -x + mkdir --version +fi + +. $srcdir/../envvar-check +. $srcdir/../lang-default +. $srcdir/../test-lib.sh + +c=invalid-selinux-context + +fail=0 +mkdir -Z $c dir-arg 2> out && fail=1 +cat <<EOF > exp || fail=1 +mkdir: failed to set default file creation context to \`$c': Invalid argument +EOF + +compare out exp || fail=1 + +(exit $fail); exit $fail -- 1.5.5.rc0.22.g467c _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils