#!/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 . if test "$VERBOSE" = yes; then set -x mkdir --version mkfifo --version mknod --version fi . $srcdir/../envvar-check . $srcdir/../lang-default . $srcdir/../test-lib.sh c=invalid-selinux-context msg="failed to set default file creation context to \`$c':" # Test each of mkdir, mknod, mkfifo with "-Z invalid-context". for cmd_w_arg in 'mkdir dir' 'mknod b p' 'mkfifo f'; do $cmd_w_arg -Z $c 2> out && fail=1 set $cmd_w_arg; cmd=$1 echo "$cmd: $msg" > exp || fail=1 # Some systems fail with ENOTSUP, EINVAL, ENOENT, or even # "Unknown system error", or "Function not implemented". sed \ -e 's/ Invalid argument$//' \ -e 's/ Unknown system error$//' \ -e 's/ Operation not supported$//' \ -e 's/ Function not implemented$//' \ -e 's/ No such file or directory$//' out > k || fail=1 mv k out || fail=1 compare out exp || fail=1 done (exit $fail); exit $fail