From d46deef51c0809429c414eea99566b82b6d5fbbf Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 8 Aug 2018 15:06:29 +0200 Subject: executor: clean up immutable files Fixes #650 --- executor/common_linux.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'executor/common_linux.h') diff --git a/executor/common_linux.h b/executor/common_linux.h index aab854d1c..2a1d14e2b 100644 --- a/executor/common_linux.h +++ b/executor/common_linux.h @@ -1734,6 +1734,7 @@ static int do_sandbox_namespace(void) #if SYZ_EXECUTOR || SYZ_REPEAT && SYZ_USE_TMP_DIR #include #include +#include #include #include @@ -1783,6 +1784,17 @@ retry: debug("unlink(%s)\n", filename); if (unlink(filename) == 0) break; + if (errno == EPERM) { + // Try to reset FS_XFLAG_IMMUTABLE. + int fd = open(filename, O_RDONLY); + if (fd != -1) { + struct fsxattr attr = {0}; + if (ioctl(fd, FS_IOC_FSSETXATTR, &attr) == 0) + debug("reset FS_XFLAG_IMMUTABLE\n"); + close(fd); + continue; + } + } if (errno == EROFS) { debug("ignoring EROFS\n"); break; -- cgit mrf-deployment