diff options
Diffstat (limited to 'debian/patches/fix-utimensat-test.patch')
-rw-r--r-- | debian/patches/fix-utimensat-test.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/debian/patches/fix-utimensat-test.patch b/debian/patches/fix-utimensat-test.patch deleted file mode 100644 index 56b6fcdbf..000000000 --- a/debian/patches/fix-utimensat-test.patch +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | From 61d2706623ed144ee9cbd212d13eeba202a7ce26 Mon Sep 17 00:00:00 2001 | ||
2 | From: Darren Tucker <dtucker@dtucker.net> | ||
3 | Date: Fri, 7 Jun 2019 23:47:37 +1000 | ||
4 | Subject: Update utimensat test. | ||
5 | |||
6 | POSIX specifies that when given a symlink, AT_SYMLINK_NOFOLLOW should | ||
7 | update the symlink and not the destination. The compat code doesn't | ||
8 | have a way to do this, so where possible it fails instead of following a | ||
9 | symlink when explicitly asked not to. Instead of checking for an explicit | ||
10 | failure, check that it does not update the destination, which both the | ||
11 | real and compat implementations should honour. | ||
12 | |||
13 | Inspired by github pull req #125 from chutzpah at gentoo.org. | ||
14 | |||
15 | Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=182898192d4b720e4faeafd5b39c2cfb3b92aa21 | ||
16 | Last-Update: 2019-06-09 | ||
17 | |||
18 | Patch-Name: fix-utimensat-test.patch | ||
19 | --- | ||
20 | openbsd-compat/regress/utimensattest.c | 20 +++++++++++++++++--- | ||
21 | 1 file changed, 17 insertions(+), 3 deletions(-) | ||
22 | |||
23 | diff --git a/openbsd-compat/regress/utimensattest.c b/openbsd-compat/regress/utimensattest.c | ||
24 | index a7bc7634b..b29cef2f1 100644 | ||
25 | --- a/openbsd-compat/regress/utimensattest.c | ||
26 | +++ b/openbsd-compat/regress/utimensattest.c | ||
27 | @@ -83,14 +83,28 @@ main(void) | ||
28 | fail("mtim.tv_nsec", 45678000, sb.st_mtim.tv_nsec); | ||
29 | #endif | ||
30 | |||
31 | + /* | ||
32 | + * POSIX specifies that when given a symlink, AT_SYMLINK_NOFOLLOW | ||
33 | + * should update the symlink and not the destination. The compat | ||
34 | + * code doesn't have a way to do this, so where possible it fails | ||
35 | + * with ENOSYS instead of following a symlink when explicitly asked | ||
36 | + * not to. Here we just test that it does not update the destination. | ||
37 | + */ | ||
38 | if (rename(TMPFILE, TMPFILE2) == -1) | ||
39 | fail("rename", 0, 0); | ||
40 | if (symlink(TMPFILE2, TMPFILE) == -1) | ||
41 | fail("symlink", 0, 0); | ||
42 | + ts[0].tv_sec = 11223344; | ||
43 | + ts[1].tv_sec = 55667788; | ||
44 | + (void)utimensat(AT_FDCWD, TMPFILE, ts, AT_SYMLINK_NOFOLLOW); | ||
45 | + if (stat(TMPFILE2, &sb) == -1) | ||
46 | + fail("stat", 0, 0 ); | ||
47 | + if (sb.st_atime == 11223344) | ||
48 | + fail("utimensat symlink st_atime", 0, 0 ); | ||
49 | + if (sb.st_mtime == 55667788) | ||
50 | + fail("utimensat symlink st_mtime", 0, 0 ); | ||
51 | |||
52 | - if (utimensat(AT_FDCWD, TMPFILE, ts, AT_SYMLINK_NOFOLLOW) != -1) | ||
53 | - fail("utimensat followed symlink", 0, 0); | ||
54 | - | ||
55 | + /* Clean up */ | ||
56 | if (!(unlink(TMPFILE) == 0 && unlink(TMPFILE2) == 0)) | ||
57 | fail("unlink", 0, 0); | ||
58 | exit(0); | ||