[llvm] r301220 - Don't test setting sticky bits on files for modern BSDs

Ahmed Bougacha via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 25 18:04:07 PDT 2017


On Mon, Apr 24, 2017 at 11:54 AM, Dimitry Andric via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: dim
> Date: Mon Apr 24 13:54:48 2017
> New Revision: 301220
>
> URL: http://llvm.org/viewvc/llvm-project?rev=301220&view=rev
> Log:
> Don't test setting sticky bits on files for modern BSDs
>
> Summary: In rL297945, jhenderson added methods for setting permissions
> to sys::fs, but some of the unittests that attempt to set sticky bits
> (01000) on files fail on modern BSDs, such as FreeBSD, NetBSD and
> OpenBSD.  This is because those systems do not allow regular users to
> set sticky bits on files, only on directories.  Fix it by disabling
> these particular tests on modern BSDs.
>
> Reviewers: emaste, brad, jhenderson
>
> Reviewed By: jhenderson
>
> Subscribers: joerg, krytarowski, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D32120
>
> Modified:
>     llvm/trunk/unittests/Support/Path.cpp
>
> Modified: llvm/trunk/unittests/Support/Path.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/Path.cpp?rev=301220&r1=301219&r2=301220&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/Support/Path.cpp (original)
> +++ llvm/trunk/unittests/Support/Path.cpp Mon Apr 24 13:54:48 2017
> @@ -1515,6 +1515,8 @@ TEST_F(FileSystemTest, permissions) {
>    EXPECT_EQ(fs::setPermissions(TempPath, fs::set_gid_on_exe), NoError);
>    EXPECT_TRUE(CheckPermissions(fs::set_gid_on_exe));
>
> +  // Modern BSDs require root to set the sticky bit on files.
> +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
>    EXPECT_EQ(fs::setPermissions(TempPath, fs::sticky_bit), NoError);
>    EXPECT_TRUE(CheckPermissions(fs::sticky_bit));
>
> @@ -1534,6 +1536,11 @@ TEST_F(FileSystemTest, permissions) {
>
>    EXPECT_EQ(fs::setPermissions(TempPath, fs::all_perms), NoError);
>    EXPECT_TRUE(CheckPermissions(fs::all_perms));
> +#endif // !FreeBSD && !NetBSD && !OpenBSD
> +
> +  EXPECT_EQ(fs::setPermissions(TempPath, fs::all_perms & ~fs::sticky_bit),
> +                               NoError);
> +  EXPECT_TRUE(CheckPermissions(fs::all_perms & ~fs::sticky_bit));

FYI: this caused ubsan failures;  should be taken care of in r301373.

-Ahmed

>  #endif
>  }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list