From 8f4f1f846588e9016b546889466b8bfb92b8c116 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Thu, 1 Apr 2021 08:00:00 +0000 Subject: [PATCH 143/149] tests: introduce create_and_enter_subdir and leave_and_remove_subdir Introduce the pair of functions that is going to be used to make sure the current workdir of the tracee is different from the current workdir of the tracer. Use the new interface in a few tests where the difference is going to be relevant with --secontext option. * tests/subdir.c: New file. * tests/Makefile.am (libtests_a_SOURCES): Add subdir.c. * tests/tests.h (create_and_enter_subdir, leave_and_remove_subdir): New function prototypes. * tests/access.c (main): Use create_and_enter_subdir and leave_and_remove_subdir. * tests/chmod.c (main): Likewise. * tests/execve.c (main): Likewise. * tests/fchmod.c (main): Likewise. * tests/fchmodat.c (main): Likewise. * tests/fchownat.c (main): Likewise. * tests/linkat.c (main): Likewise. * tests/open.c (main): Likewise. * tests/openat.c (main): Likewise. Conflicts: tests/execve.c --- tests/Makefile.am | 1 + tests/access.c | 10 +++++++++- tests/chmod.c | 9 ++++++++- tests/execve.c | 12 ++++++++++-- tests/fchmod.c | 8 ++++++++ tests/fchmodat.c | 9 ++++++++- tests/fchownat.c | 8 ++++++++ tests/linkat.c | 10 +++++++++- tests/open.c | 8 ++++++++ tests/openat.c | 10 +++++++++- tests/subdir.c | 40 ++++++++++++++++++++++++++++++++++++++++ tests/tests.h | 12 ++++++++++++ 12 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 tests/subdir.c Index: strace-5.7/tests/Makefile.am =================================================================== --- strace-5.7.orig/tests/Makefile.am 2021-08-24 19:42:08.850580847 +0200 +++ strace-5.7/tests/Makefile.am 2021-08-24 19:42:16.041519983 +0200 @@ -58,6 +58,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ Index: strace-5.7/tests/access.c =================================================================== --- strace-5.7.orig/tests/access.c 2021-08-24 19:42:08.851580838 +0200 +++ strace-5.7/tests/access.c 2021-08-24 19:42:16.041519983 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("access_subdir"); + static const char sample[] = "access_sample"; long rc = syscall(__NR_access, sample, F_OK); @@ -26,6 +32,8 @@ printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", sample, rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/chmod.c =================================================================== --- strace-5.7.orig/tests/chmod.c 2021-08-24 19:42:08.851580838 +0200 +++ strace-5.7/tests/chmod.c 2021-08-24 19:42:16.042519974 +0200 @@ -15,11 +15,16 @@ # include # include # include -# include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("chmod_subdir"); + static const char fname[] = "chmod_test_file"; if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) @@ -37,6 +42,8 @@ rc = syscall(__NR_chmod, fname, 004); printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/execve.c =================================================================== --- strace-5.7.orig/tests/execve.c 2021-08-24 19:42:08.851580838 +0200 +++ strace-5.7/tests/execve.c 2021-08-24 19:42:16.042519974 +0200 @@ -1,8 +1,8 @@ /* * This file is part of execve strace test. * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2015-2018 The strace developers. + * Copyright (c) 2015-2016 Dmitry V. Levin + * Copyright (c) 2015-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -34,6 +34,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("execve_subdir"); + char ** const tail_argv = tail_memdup(argv, sizeof(argv)); char ** const tail_envp = tail_memdup(envp, sizeof(envp)); @@ -167,5 +173,7 @@ printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", Q_FILENAME, efault); + leave_and_remove_subdir(); + return 0; } Index: strace-5.7/tests/fchmod.c =================================================================== --- strace-5.7.orig/tests/fchmod.c 2021-08-24 19:42:08.851580838 +0200 +++ strace-5.7/tests/fchmod.c 2021-08-24 19:42:16.042519974 +0200 @@ -21,6 +21,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmod_subdir"); + static const char sample[] = "fchmod_sample_file"; (void) unlink(sample); int fd = open(sample, O_CREAT|O_RDONLY, 0400); @@ -70,6 +76,8 @@ # endif sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/fchmodat.c =================================================================== --- strace-5.7.orig/tests/fchmodat.c 2021-08-24 19:42:08.851580838 +0200 +++ strace-5.7/tests/fchmodat.c 2021-08-24 19:42:16.043519966 +0200 @@ -14,13 +14,18 @@ #ifdef __NR_fchmodat # include -# include # include # include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmodat_subdir"); + static const char sample[] = "fchmodat_sample"; if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) @@ -41,6 +46,8 @@ printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/fchownat.c =================================================================== --- strace-5.7.orig/tests/fchownat.c 2021-08-24 19:42:08.852580830 +0200 +++ strace-5.7/tests/fchownat.c 2021-08-24 19:42:16.043519966 +0200 @@ -20,6 +20,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchownat_subdir"); + static const char sample[] = "fchownat_sample"; uid_t uid = geteuid(); uid_t gid = getegid(); @@ -39,6 +45,8 @@ printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/linkat.c =================================================================== --- strace-5.7.orig/tests/linkat.c 2021-08-24 19:42:08.852580830 +0200 +++ strace-5.7/tests/linkat.c 2021-08-24 19:42:16.043519966 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("linkat_subdir"); + static const char sample_1[] = "linkat_sample_old"; static const char sample_2[] = "linkat_sample_new"; const long fd_old = (long) 0xdeadbeefffffffffULL; @@ -33,6 +39,8 @@ "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/open.c =================================================================== --- strace-5.7.orig/tests/open.c 2021-08-24 19:42:08.852580830 +0200 +++ strace-5.7/tests/open.c 2021-08-24 19:42:16.044519958 +0200 @@ -18,6 +18,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("open_subdir"); + static const char sample[] = "open.sample"; long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); @@ -43,6 +49,8 @@ sample, sprintrc(fd)); # endif /* O_TMPFILE */ + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/openat.c =================================================================== --- strace-5.7.orig/tests/openat.c 2021-08-24 19:42:08.852580830 +0200 +++ strace-5.7/tests/openat.c 2021-08-24 19:42:16.044519958 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 Katerina Koukiou - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -39,6 +39,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("openat_subdir"); + long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", sample, sprintrc(fd)); @@ -101,6 +107,8 @@ test_mode_flag(modes[m].val, modes[m].str, flags[f].val, flags[f].str); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests/subdir.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-5.7/tests/subdir.c 2021-08-24 19:42:16.044519958 +0200 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" + +#include +#include +#include + +static const char *subdir; +static DIR *dirp; + +void +create_and_enter_subdir(const char *name) +{ + dirp = opendir("."); + if (!dirp) + perror_msg_and_fail("opendir: %s", "."); + (void) mkdir(name, 0700); + if (chdir(name)) + perror_msg_and_fail("chdir: %s", name); + subdir = name; +} + +void +leave_and_remove_subdir(void) +{ + if (fchdir(dirfd(dirp))) + perror_msg_and_fail("fchdir: %d", dirfd(dirp)); + if (closedir(dirp)) + perror_msg_and_fail("closedir"); + dirp = 0; + if (rmdir(subdir)) + perror_msg_and_fail("rmdir: %s", subdir); + subdir = 0; +} Index: strace-5.7/tests/tests.h =================================================================== --- strace-5.7.orig/tests/tests.h 2021-08-24 19:42:08.852580830 +0200 +++ strace-5.7/tests/tests.h 2021-08-24 19:42:16.045519949 +0200 @@ -161,6 +161,18 @@ char *get_fd_path(int fd) ATTRIBUTE_MALLOC; /* + * Create the specified directory and chdir into it, + * die on chdir failure. + */ +void create_and_enter_subdir(const char *subdir); + +/* + * Leave from the directory entered by create_and_enter_subdir, + * remove that directory, die on failure. + */ +void leave_and_remove_subdir(void); + +/* * Obtain an exclusive lock on dirname(path_name)/lock_name file * using open and flock. */ Index: strace-5.7/tests-m32/Makefile.am =================================================================== --- strace-5.7.orig/tests-m32/Makefile.am 2021-08-24 19:42:08.853580821 +0200 +++ strace-5.7/tests-m32/Makefile.am 2021-08-24 19:42:16.045519949 +0200 @@ -58,6 +58,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ Index: strace-5.7/tests-m32/access.c =================================================================== --- strace-5.7.orig/tests-m32/access.c 2021-08-24 19:42:08.853580821 +0200 +++ strace-5.7/tests-m32/access.c 2021-08-24 19:42:16.045519949 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("access_subdir"); + static const char sample[] = "access_sample"; long rc = syscall(__NR_access, sample, F_OK); @@ -26,6 +32,8 @@ printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", sample, rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/chmod.c =================================================================== --- strace-5.7.orig/tests-m32/chmod.c 2021-08-24 19:42:08.853580821 +0200 +++ strace-5.7/tests-m32/chmod.c 2021-08-24 19:42:16.046519941 +0200 @@ -15,11 +15,16 @@ # include # include # include -# include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("chmod_subdir"); + static const char fname[] = "chmod_test_file"; if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) @@ -37,6 +42,8 @@ rc = syscall(__NR_chmod, fname, 004); printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/execve.c =================================================================== --- strace-5.7.orig/tests-m32/execve.c 2021-08-24 19:42:08.853580821 +0200 +++ strace-5.7/tests-m32/execve.c 2021-08-24 19:42:16.046519941 +0200 @@ -1,8 +1,8 @@ /* * This file is part of execve strace test. * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2015-2018 The strace developers. + * Copyright (c) 2015-2016 Dmitry V. Levin + * Copyright (c) 2015-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -34,6 +34,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("execve_subdir"); + char ** const tail_argv = tail_memdup(argv, sizeof(argv)); char ** const tail_envp = tail_memdup(envp, sizeof(envp)); @@ -167,5 +173,7 @@ printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", Q_FILENAME, efault); + leave_and_remove_subdir(); + return 0; } Index: strace-5.7/tests-m32/fchmod.c =================================================================== --- strace-5.7.orig/tests-m32/fchmod.c 2021-08-24 19:42:08.853580821 +0200 +++ strace-5.7/tests-m32/fchmod.c 2021-08-24 19:42:16.046519941 +0200 @@ -21,6 +21,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmod_subdir"); + static const char sample[] = "fchmod_sample_file"; (void) unlink(sample); int fd = open(sample, O_CREAT|O_RDONLY, 0400); @@ -70,6 +76,8 @@ # endif sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/fchmodat.c =================================================================== --- strace-5.7.orig/tests-m32/fchmodat.c 2021-08-24 19:42:08.854580813 +0200 +++ strace-5.7/tests-m32/fchmodat.c 2021-08-24 19:42:16.046519941 +0200 @@ -14,13 +14,18 @@ #ifdef __NR_fchmodat # include -# include # include # include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmodat_subdir"); + static const char sample[] = "fchmodat_sample"; if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) @@ -41,6 +46,8 @@ printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/fchownat.c =================================================================== --- strace-5.7.orig/tests-m32/fchownat.c 2021-08-24 19:42:08.854580813 +0200 +++ strace-5.7/tests-m32/fchownat.c 2021-08-24 19:42:16.047519932 +0200 @@ -20,6 +20,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchownat_subdir"); + static const char sample[] = "fchownat_sample"; uid_t uid = geteuid(); uid_t gid = getegid(); @@ -39,6 +45,8 @@ printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/linkat.c =================================================================== --- strace-5.7.orig/tests-m32/linkat.c 2021-08-24 19:42:08.854580813 +0200 +++ strace-5.7/tests-m32/linkat.c 2021-08-24 19:42:16.047519932 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("linkat_subdir"); + static const char sample_1[] = "linkat_sample_old"; static const char sample_2[] = "linkat_sample_new"; const long fd_old = (long) 0xdeadbeefffffffffULL; @@ -33,6 +39,8 @@ "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/open.c =================================================================== --- strace-5.7.orig/tests-m32/open.c 2021-08-24 19:42:08.854580813 +0200 +++ strace-5.7/tests-m32/open.c 2021-08-24 19:42:16.047519932 +0200 @@ -18,6 +18,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("open_subdir"); + static const char sample[] = "open.sample"; long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); @@ -43,6 +49,8 @@ sample, sprintrc(fd)); # endif /* O_TMPFILE */ + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/openat.c =================================================================== --- strace-5.7.orig/tests-m32/openat.c 2021-08-24 19:42:08.854580813 +0200 +++ strace-5.7/tests-m32/openat.c 2021-08-24 19:42:16.047519932 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 Katerina Koukiou - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -39,6 +39,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("openat_subdir"); + long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", sample, sprintrc(fd)); @@ -101,6 +107,8 @@ test_mode_flag(modes[m].val, modes[m].str, flags[f].val, flags[f].str); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-m32/subdir.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-5.7/tests-m32/subdir.c 2021-08-24 19:42:16.048519924 +0200 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" + +#include +#include +#include + +static const char *subdir; +static DIR *dirp; + +void +create_and_enter_subdir(const char *name) +{ + dirp = opendir("."); + if (!dirp) + perror_msg_and_fail("opendir: %s", "."); + (void) mkdir(name, 0700); + if (chdir(name)) + perror_msg_and_fail("chdir: %s", name); + subdir = name; +} + +void +leave_and_remove_subdir(void) +{ + if (fchdir(dirfd(dirp))) + perror_msg_and_fail("fchdir: %d", dirfd(dirp)); + if (closedir(dirp)) + perror_msg_and_fail("closedir"); + dirp = 0; + if (rmdir(subdir)) + perror_msg_and_fail("rmdir: %s", subdir); + subdir = 0; +} Index: strace-5.7/tests-m32/tests.h =================================================================== --- strace-5.7.orig/tests-m32/tests.h 2021-08-24 19:42:08.855580804 +0200 +++ strace-5.7/tests-m32/tests.h 2021-08-24 19:42:16.048519924 +0200 @@ -161,6 +161,18 @@ char *get_fd_path(int fd) ATTRIBUTE_MALLOC; /* + * Create the specified directory and chdir into it, + * die on chdir failure. + */ +void create_and_enter_subdir(const char *subdir); + +/* + * Leave from the directory entered by create_and_enter_subdir, + * remove that directory, die on failure. + */ +void leave_and_remove_subdir(void); + +/* * Obtain an exclusive lock on dirname(path_name)/lock_name file * using open and flock. */ Index: strace-5.7/tests-mx32/Makefile.am =================================================================== --- strace-5.7.orig/tests-mx32/Makefile.am 2021-08-24 19:42:08.855580804 +0200 +++ strace-5.7/tests-mx32/Makefile.am 2021-08-24 19:42:16.048519924 +0200 @@ -58,6 +58,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ Index: strace-5.7/tests-mx32/access.c =================================================================== --- strace-5.7.orig/tests-mx32/access.c 2021-08-24 19:42:08.855580804 +0200 +++ strace-5.7/tests-mx32/access.c 2021-08-24 19:42:16.048519924 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("access_subdir"); + static const char sample[] = "access_sample"; long rc = syscall(__NR_access, sample, F_OK); @@ -26,6 +32,8 @@ printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", sample, rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/chmod.c =================================================================== --- strace-5.7.orig/tests-mx32/chmod.c 2021-08-24 19:42:08.855580804 +0200 +++ strace-5.7/tests-mx32/chmod.c 2021-08-24 19:42:16.049519915 +0200 @@ -15,11 +15,16 @@ # include # include # include -# include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("chmod_subdir"); + static const char fname[] = "chmod_test_file"; if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) @@ -37,6 +42,8 @@ rc = syscall(__NR_chmod, fname, 004); printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/execve.c =================================================================== --- strace-5.7.orig/tests-mx32/execve.c 2021-08-24 19:42:08.855580804 +0200 +++ strace-5.7/tests-mx32/execve.c 2021-08-24 19:42:16.049519915 +0200 @@ -1,8 +1,8 @@ /* * This file is part of execve strace test. * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2015-2018 The strace developers. + * Copyright (c) 2015-2016 Dmitry V. Levin + * Copyright (c) 2015-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -34,6 +34,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("execve_subdir"); + char ** const tail_argv = tail_memdup(argv, sizeof(argv)); char ** const tail_envp = tail_memdup(envp, sizeof(envp)); @@ -167,5 +173,7 @@ printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", Q_FILENAME, efault); + leave_and_remove_subdir(); + return 0; } Index: strace-5.7/tests-mx32/fchmod.c =================================================================== --- strace-5.7.orig/tests-mx32/fchmod.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/fchmod.c 2021-08-24 19:42:16.049519915 +0200 @@ -21,6 +21,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmod_subdir"); + static const char sample[] = "fchmod_sample_file"; (void) unlink(sample); int fd = open(sample, O_CREAT|O_RDONLY, 0400); @@ -70,6 +76,8 @@ # endif sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/fchmodat.c =================================================================== --- strace-5.7.orig/tests-mx32/fchmodat.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/fchmodat.c 2021-08-24 19:42:16.049519915 +0200 @@ -14,13 +14,18 @@ #ifdef __NR_fchmodat # include -# include # include # include int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchmodat_subdir"); + static const char sample[] = "fchmodat_sample"; if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) @@ -41,6 +46,8 @@ printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/fchownat.c =================================================================== --- strace-5.7.orig/tests-mx32/fchownat.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/fchownat.c 2021-08-24 19:42:16.050519907 +0200 @@ -20,6 +20,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("fchownat_subdir"); + static const char sample[] = "fchownat_sample"; uid_t uid = geteuid(); uid_t gid = getegid(); @@ -39,6 +45,8 @@ printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", sample, sprintrc(rc)); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/linkat.c =================================================================== --- strace-5.7.orig/tests-mx32/linkat.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/linkat.c 2021-08-24 19:42:16.050519907 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -16,6 +16,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("linkat_subdir"); + static const char sample_1[] = "linkat_sample_old"; static const char sample_2[] = "linkat_sample_new"; const long fd_old = (long) 0xdeadbeefffffffffULL; @@ -33,6 +39,8 @@ "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", rc, errno2name()); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/open.c =================================================================== --- strace-5.7.orig/tests-mx32/open.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/open.c 2021-08-24 19:42:16.050519907 +0200 @@ -18,6 +18,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("open_subdir"); + static const char sample[] = "open.sample"; long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); @@ -43,6 +49,8 @@ sample, sprintrc(fd)); # endif /* O_TMPFILE */ + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/openat.c =================================================================== --- strace-5.7.orig/tests-mx32/openat.c 2021-08-24 19:42:08.856580796 +0200 +++ strace-5.7/tests-mx32/openat.c 2021-08-24 19:42:16.050519907 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2016 Katerina Koukiou - * Copyright (c) 2016-2019 The strace developers. + * Copyright (c) 2016-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: GPL-2.0-or-later @@ -39,6 +39,12 @@ int main(void) { + /* + * Make sure the current workdir of the tracee + * is different from the current workdir of the tracer. + */ + create_and_enter_subdir("openat_subdir"); + long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", sample, sprintrc(fd)); @@ -101,6 +107,8 @@ test_mode_flag(modes[m].val, modes[m].str, flags[f].val, flags[f].str); + leave_and_remove_subdir(); + puts("+++ exited with 0 +++"); return 0; } Index: strace-5.7/tests-mx32/subdir.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-5.7/tests-mx32/subdir.c 2021-08-24 19:42:16.050519907 +0200 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" + +#include +#include +#include + +static const char *subdir; +static DIR *dirp; + +void +create_and_enter_subdir(const char *name) +{ + dirp = opendir("."); + if (!dirp) + perror_msg_and_fail("opendir: %s", "."); + (void) mkdir(name, 0700); + if (chdir(name)) + perror_msg_and_fail("chdir: %s", name); + subdir = name; +} + +void +leave_and_remove_subdir(void) +{ + if (fchdir(dirfd(dirp))) + perror_msg_and_fail("fchdir: %d", dirfd(dirp)); + if (closedir(dirp)) + perror_msg_and_fail("closedir"); + dirp = 0; + if (rmdir(subdir)) + perror_msg_and_fail("rmdir: %s", subdir); + subdir = 0; +} Index: strace-5.7/tests-mx32/tests.h =================================================================== --- strace-5.7.orig/tests-mx32/tests.h 2021-08-24 19:42:08.857580787 +0200 +++ strace-5.7/tests-mx32/tests.h 2021-08-24 19:42:16.051519898 +0200 @@ -161,6 +161,18 @@ char *get_fd_path(int fd) ATTRIBUTE_MALLOC; /* + * Create the specified directory and chdir into it, + * die on chdir failure. + */ +void create_and_enter_subdir(const char *subdir); + +/* + * Leave from the directory entered by create_and_enter_subdir, + * remove that directory, die on failure. + */ +void leave_and_remove_subdir(void); + +/* * Obtain an exclusive lock on dirname(path_name)/lock_name file * using open and flock. */ Index: strace-5.7/tests/Makefile.in =================================================================== --- strace-5.7.orig/tests/Makefile.in 2021-08-24 19:42:08.862580745 +0200 +++ strace-5.7/tests/Makefile.in 2021-08-24 19:42:54.720192609 +0200 @@ -574,7 +574,7 @@ libtests_a-signal2name.$(OBJEXT) \ libtests_a-skip_unavailable.$(OBJEXT) \ libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ - libtests_a-tail_alloc.$(OBJEXT) \ + libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ libtests_a-test_printpath.$(OBJEXT) \ libtests_a-test_printstrn.$(OBJEXT) \ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ @@ -5430,6 +5430,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ @@ -10433,6 +10434,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker @@ -11353,6 +11355,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` +libtests_a-subdir.o: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c + +libtests_a-subdir.obj: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` + libtests_a-tail_alloc.o: tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po Index: strace-5.7/tests-m32/Makefile.in =================================================================== --- strace-5.7.orig/tests-m32/Makefile.in 2021-08-24 19:42:08.866580711 +0200 +++ strace-5.7/tests-m32/Makefile.in 2021-08-24 19:43:13.669032228 +0200 @@ -574,7 +574,7 @@ libtests_a-signal2name.$(OBJEXT) \ libtests_a-skip_unavailable.$(OBJEXT) \ libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ - libtests_a-tail_alloc.$(OBJEXT) \ + libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ libtests_a-test_printpath.$(OBJEXT) \ libtests_a-test_printstrn.$(OBJEXT) \ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ @@ -5430,6 +5430,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ @@ -10433,6 +10434,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker @@ -11353,6 +11355,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` +libtests_a-subdir.o: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c + +libtests_a-subdir.obj: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` + libtests_a-tail_alloc.o: tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po Index: strace-5.7/tests-mx32/Makefile.in =================================================================== --- strace-5.7.orig/tests-mx32/Makefile.in 2021-08-24 19:42:08.870580677 +0200 +++ strace-5.7/tests-mx32/Makefile.in 2021-08-24 19:43:32.469873099 +0200 @@ -574,7 +574,7 @@ libtests_a-signal2name.$(OBJEXT) \ libtests_a-skip_unavailable.$(OBJEXT) \ libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ - libtests_a-tail_alloc.$(OBJEXT) \ + libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ libtests_a-test_printpath.$(OBJEXT) \ libtests_a-test_printstrn.$(OBJEXT) \ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ @@ -5430,6 +5430,7 @@ skip_unavailable.c \ sprintrc.c \ status.c \ + subdir.c \ tail_alloc.c \ test_netlink.h \ test_nlattr.h \ @@ -10433,6 +10434,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker @@ -11353,6 +11355,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` +libtests_a-subdir.o: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c + +libtests_a-subdir.obj: subdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` + libtests_a-tail_alloc.o: tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po