People rarely use this, but all it takes is one lame package.
URL: http://bugs.gentoo.org/297684
Reported-by: Pacho Ramos <pacho@gentoo.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
if (!(sb_nr == SB_NR_UNLINK ||
sb_nr == SB_NR_UNLINKAT ||
sb_nr == SB_NR_LCHOWN ||
+ sb_nr == SB_NR_REMOVE ||
sb_nr == SB_NR_RENAME ||
sb_nr == SB_NR_SYMLINK))
{
sb_nr == SB_NR_MKNOD ||
sb_nr == SB_NR_MKNODAT ||
sb_nr == SB_NR_OPEN_WR ||
+ sb_nr == SB_NR_REMOVE ||
sb_nr == SB_NR_RENAME ||
sb_nr == SB_NR_RENAMEAT ||
sb_nr == SB_NR_RMDIR ||
mkfifoat
access
faccessat
+remove
rename
renameat
rmdir
--- /dev/null
+/*
+ * remove() wrapper.
+ *
+ * Copyright 1999-2009 Gentoo Foundation
+ * Licensed under the GPL-2
+ */
+
+#define WRAPPER_ARGS_PROTO const char *pathname
+#define WRAPPER_ARGS pathname
+#define WRAPPER_SAFE() SB_SAFE(pathname)
+#define WRAPPER_PRE_CHECKS() sb_unlinkat_pre_check(STRING_NAME, pathname, AT_FDCWD)
+#include "__wrapper_simple.c"
openat_static-0 \
openat64-0 \
opendir-0 \
+ remove-0 \
rename-0 \
renameat-0 \
signal_static-0 \
--- /dev/null
+#define FUNC remove
+#define SFUNC "remove"
+#define FUNC_STR "\"%s\""
+#define FUNC_IMP path
+#define ARG_CNT 1
+#define ARG_USE "<path>"
+
+#define process_args() \
+ s = argv[i++]; \
+ char *path = s;
+
+#include "test-skel-0.c"
--- /dev/null
+#!/bin/sh
+# make sure we catch openat with relative path
+[ "${at_xfail}" = "yes" ] && exit 77 # see trace-0
+
+export SANDBOX_LOG=$PWD/sb.log
+remove-0 -1 f
+test -e sb.log
--- /dev/null
+SB_CHECK(1)
sb_inc([open_static])
sb_inc([openat])
sb_inc([openat_static])
+sb_inc([remove])
sb_inc([rename])
sb_inc([renameat])
sb_inc([sb_printf])
sb_inc([signal_static])
sb_inc([symlink])
sb_inc([symlinkat])
+sb_inc([unlink])
sb_inc([utimensat])
sb_inc([utimensat_static])
sb_inc([vfork])
--- /dev/null
+#!/bin/sh
+# make sure we catch openat with relative path
+[ "${at_xfail}" = "yes" ] && exit 77 # see trace-0
+
+export SANDBOX_LOG=$PWD/sb.log
+unlink-0 -1 f
+test -e sb.log
--- /dev/null
+SB_CHECK(1)