|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:28
|
- numeric uid/gid now supported
- special value -1 means "don't change" (see man 2 chown)
- better error reporting from get*nam()
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_chown.c | 45 ++++++++++++++++++++++++++++-----------
audit-test/utils/bin/do_lchown.c | 46 ++++++++++++++++++++++++++++------------
2 files changed, 66 insertions(+), 25 deletions(-)
diff --git a/audit-test/utils/bin/do_chown.c b/audit-test/utils/bin/do_chown.c
index 54ff5b6..0bb1b91 100644
--- a/audit-test/utils/bin/do_chown.c
+++ b/audit-test/utils/bin/do_chown.c
@@ -20,32 +20,53 @@
int main(int argc, char **argv)
{
int exitval, result;
- gid_t gid = -1;
+ long id_read;
+ char *endptr;
uid_t uid = -1;
+ gid_t gid = -1;
struct passwd *pw;
- struct group *grp;
+ struct group *gr;
- if (argc != 3 && argc != 4) {
- fprintf(stderr, "Usage:\n%s <path> <owner> [<group>]\n", argv[0]);
+ if (argc < 3) {
+ fprintf(stderr, "Usage:\n%s <path> <owner> [group]\n", argv[0]);
return TEST_ERROR;
}
- if(strcmp(argv[2],"")) {
+ /* try to convert owner/group into numeric values,
+ * if it fails with EINVAL, the owner/group is probably given
+ * as name (and to be resolved via get*nam) */
+
+ /* uid */
+ errno = 0;
+ id_read = strtol(argv[2], &endptr, 10);
+ if (errno || endptr == argv[2] || id_read > USHRT_MAX) {
+ errno = 0;
pw = getpwnam(argv[2]);
if (!pw) {
- perror("do_chown: getpwnam");
+ fprintf(stderr, "do_chown: getpwnam: %s\n",
+ errno ? strerror(errno) : "no entry found");
return TEST_ERROR;
}
uid = pw->pw_uid;
+ } else {
+ uid = id_read;
}
- if(argc == 4 && strcmp(argv[3],"")) {
- grp = getgrnam(argv[3]);
- if(!grp) {
- perror("do_chown: getgrnam");
- return TEST_ERROR;
+ /* gid */
+ if (argc > 3) {
+ errno = 0;
+ id_read = strtol(argv[3], &endptr, 10);
+ if (errno || endptr == argv[3] || id_read > USHRT_MAX) {
+ gr = getgrnam(argv[3]);
+ if (!gr) {
+ fprintf(stderr, "do_chown: getgrnam: %s\n",
+ errno ? strerror(errno) : "no entry found");
+ return TEST_ERROR;
+ }
+ gid = gr->gr_gid;
+ } else {
+ gid = id_read;
}
- gid = grp->gr_gid;
}
/* use syscall() to force chown over chown32 */
diff --git a/audit-test/utils/bin/do_lchown.c b/audit-test/utils/bin/do_lchown.c
index ab19662..4585b42 100644
--- a/audit-test/utils/bin/do_lchown.c
+++ b/audit-test/utils/bin/do_lchown.c
@@ -20,32 +20,53 @@
int main(int argc, char **argv)
{
int exitval, result;
- gid_t gid = -1;
+ long id_read;
+ char *endptr;
uid_t uid = -1;
+ gid_t gid = -1;
struct passwd *pw;
- struct group *grp;
+ struct group *gr;
- if (argc != 3 && argc != 4) {
- fprintf(stderr, "Usage:\n%s <path> <owner> [<group>]\n", argv[0]);
+ if (argc < 3) {
+ fprintf(stderr, "Usage:\n%s <path> <owner> [group]\n", argv[0]);
return TEST_ERROR;
}
- if(strcmp(argv[2],"")) {
+ /* try to convert owner/group into numeric values,
+ * if it fails with EINVAL, the owner/group is probably given
+ * as name (and to be resolved via get*nam) */
+
+ /* uid */
+ errno = 0;
+ id_read = strtol(argv[2], &endptr, 10);
+ if (errno || endptr == argv[2] || id_read > USHRT_MAX) {
+ errno = 0;
pw = getpwnam(argv[2]);
if (!pw) {
- perror("do_lchown: getpwnam");
+ fprintf(stderr, "do_lchown: getpwnam: %s\n",
+ errno ? strerror(errno) : "no entry found");
return TEST_ERROR;
}
uid = pw->pw_uid;
+ } else {
+ uid = id_read;
}
- if(argc == 4 && strcmp(argv[3],"")) {
- grp = getgrnam(argv[3]);
- if(!grp) {
- perror("do_lchown: getgrnam");
- return TEST_ERROR;
+ /* gid */
+ if (argc > 3) {
+ errno = 0;
+ id_read = strtol(argv[3], &endptr, 10);
+ if (errno || endptr == argv[3] || id_read > USHRT_MAX) {
+ gr = getgrnam(argv[3]);
+ if (!gr) {
+ fprintf(stderr, "do_lchown: getgrnam: %s\n",
+ errno ? strerror(errno) : "no entry found");
+ return TEST_ERROR;
+ }
+ gid = gr->gr_gid;
+ } else {
+ gid = id_read;
}
- gid = grp->gr_gid;
}
errno = 0;
@@ -54,5 +75,4 @@ int main(int argc, char **argv)
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
-
}
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:31
|
The output was conflicting with "testres exitval pid" fprintf
and doesn't seem to be used anywhere in the suite.
Furthermore, it doesn't alter the behavior of the fork syscall,
since it's getrlimit, not setrlimit.
Whitespace separation from the rest of the code suggests that this
was perhaps a debugging (temporary) code.
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_fork.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/audit-test/utils/bin/do_fork.c b/audit-test/utils/bin/do_fork.c
index f77ceea..991fded 100644
--- a/audit-test/utils/bin/do_fork.c
+++ b/audit-test/utils/bin/do_fork.c
@@ -23,13 +23,6 @@ int main(int argc, char **argv)
int exitval, result;
pid_t pid;
-
- struct rlimit slimit;
-
- getrlimit(RLIMIT_NPROC, &slimit);
- fprintf(stderr, "rlim_cur = %d rlim_max = %d\n",
- (int)slimit.rlim_cur, (int)slimit.rlim_max);
-
/* use syscall() to force fork, as the fork() library routine
* doesn't call sys_fork on x86_64. */
errno = 0;
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:37
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_settimeofday.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/audit-test/utils/bin/do_settimeofday.c b/audit-test/utils/bin/do_settimeofday.c
index 7dba2d0..e45ce50 100644
--- a/audit-test/utils/bin/do_settimeofday.c
+++ b/audit-test/utils/bin/do_settimeofday.c
@@ -20,24 +20,28 @@ int main(int argc, char **argv)
{
int exitval, result;
struct timeval tv;
- struct timezone tz;
+ struct timezone tz_data, *tz = NULL;
- if (argc < 3) {
- fprintf(stderr, "Usage:\n%s <seconds> <timezone> [DST correction]\n",
+ if (argc < 2) {
+ fprintf(stderr, "Usage:\n%s <seconds> [timezone] [DST correction]\n",
argv[0]);
return TEST_ERROR;
}
- memset(&tv, 0, sizeof(tv));
- memset(&tz, 0, sizeof(tz));
-
+ memset(&tv, 0, sizeof(struct timeval));
tv.tv_sec = atol(argv[1]);
- tz.tz_minuteswest = atoi(argv[2]);
+
+ if (argc >= 3) {
+ tz = &tz_data;
+ memset(tz, 0, sizeof(struct timezone));
+ tz->tz_minuteswest = atoi(argv[2]);
+ }
+
if (argc >= 4)
- tz.tz_dsttime = atoi(argv[3]);
+ tz->tz_dsttime = atoi(argv[3]);
errno = 0;
- exitval = settimeofday(&tv, &tz);
+ exitval = settimeofday(&tv, tz);
result = exitval < 0;
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:41
|
From: Ondrej Moris <om...@re...>
Signed-off-by: Ondrej Moris <om...@re...>
---
audit-test/utils/bin/do_utimensat.c | 30 +++++++++++++++++++++++++++---
audit-test/utils/bin/do_utimes.c | 19 +++++++++++++++----
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/audit-test/utils/bin/do_utimensat.c b/audit-test/utils/bin/do_utimensat.c
index 660b926..bf1fe0b 100644
--- a/audit-test/utils/bin/do_utimensat.c
+++ b/audit-test/utils/bin/do_utimensat.c
@@ -15,6 +15,7 @@
#include "includes.h"
#include <sys/time.h>
+#include <ctype.h>
int main(int argc, char **argv)
{
@@ -22,9 +23,9 @@ int main(int argc, char **argv)
int exitval, result = 0;
int dirfd;
- if (argc != 3) {
- fprintf(stderr, "Usage:\n%s <dir> <path>\n", argv[0]);
- return TEST_ERROR;
+ if (argc != 3 && argc != 5) {
+ fprintf(stderr, "Usage:\n%s <dir> <path> [atime] [mtime]\n", argv[0]);
+ return TEST_ERROR;
}
dirfd = open(argv[1], O_DIRECTORY);
@@ -38,6 +39,29 @@ int main(int argc, char **argv)
times[1].tv_sec = 0;
times[1].tv_nsec = UTIME_NOW;
+ if (argc == 5) {
+ if (!strcmp(argv[3], "UTIME_NOW")) {
+ times[0].tv_sec = 0;
+ times[0].tv_nsec = UTIME_NOW;
+ } else if (!strcmp(argv[3], "UTIME_OMIT")) {
+ times[0].tv_sec = 0;
+ times[0].tv_nsec = UTIME_OMIT;
+ } else if (isdigit(argv[3][0])) {
+ times[0].tv_sec = atol(argv[3]);
+ times[0].tv_nsec = 0;
+ }
+ if (!strcmp(argv[4], "UTIME_NOW")) {
+ times[1].tv_sec = 0;
+ times[1].tv_nsec = UTIME_NOW;
+ } else if (!strcmp(argv[4], "UTIME_OMIT")) {
+ times[1].tv_sec = 0;
+ times[1].tv_nsec = UTIME_OMIT;
+ } else if (isdigit(argv[4][0])) {
+ times[1].tv_sec = atol(argv[4]);
+ times[1].tv_nsec = 0;
+ }
+ }
+
errno = 0;
exitval = utimensat(dirfd, argv[2], times, 0);
result = exitval < 0;
diff --git a/audit-test/utils/bin/do_utimes.c b/audit-test/utils/bin/do_utimes.c
index 9f12d68..6ca2062 100644
--- a/audit-test/utils/bin/do_utimes.c
+++ b/audit-test/utils/bin/do_utimes.c
@@ -15,18 +15,29 @@
#include "includes.h"
#include <sys/time.h>
+#include <ctype.h>
int main(int argc, char **argv)
{
int exitval, result;
+ struct timeval times[2];
- if (argc != 2) {
- fprintf(stderr, "Usage:\n%s <path>\n", argv[0]);
- return TEST_ERROR;
+ if (argc != 2 && argc != 4) {
+ fprintf(stderr, "Usage:\n%s <path> [actime_sec] [modtime_sec]\n", argv[0]);
+ return TEST_ERROR;
}
errno = 0;
- exitval = utimes(argv[1], NULL);
+ if (argc == 4 && isdigit(argv[2][0]) && isdigit(argv[3][0])) {
+ times[0].tv_sec = atol(argv[3]);
+ times[0].tv_usec = 0;
+ times[1].tv_sec = atol(argv[3]);
+ times[1].tv_usec = 0;
+ exitval = utimes(argv[1], times);
+ } else {
+ exitval = utimes(argv[1], NULL);
+ }
+
result = exitval < 0;
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:44
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_linkat.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/audit-test/utils/bin/do_linkat.c b/audit-test/utils/bin/do_linkat.c
index d73bf20..0f528f4 100644
--- a/audit-test/utils/bin/do_linkat.c
+++ b/audit-test/utils/bin/do_linkat.c
@@ -17,20 +17,30 @@
int main(int argc, char **argv)
{
- int dir_fd;
+ int dir_fd, newdir_fd;
int exitval, result;
- if (argc != 4) {
- fprintf(stderr, "Usage:\n%s <directory> <oldpath> <newpath>\n", argv[0]);
+ if (argc < 4) {
+ fprintf(stderr, "Usage:\n%s <directory> <oldpath> <newpath> [<new_directory>]\n", argv[0]);
return TEST_ERROR;
}
+ /* directory */
dir_fd = open(argv[1], O_DIRECTORY);
if (dir_fd < 0)
- return TEST_ERROR;
+ return TEST_ERROR;
+
+ /* new_directory */
+ if (argc > 4) {
+ newdir_fd = open(argv[4], O_DIRECTORY);
+ if (newdir_fd < 0)
+ return TEST_ERROR;
+ } else {
+ newdir_fd = dir_fd;
+ }
errno = 0;
- exitval = linkat(dir_fd, argv[2], dir_fd, argv[3], 0);
+ exitval = linkat(dir_fd, argv[2], newdir_fd, argv[3], 0);
result = exitval < 0;
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:49
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_fchmodat.c | 12 ++++++++----
audit-test/utils/bin/do_fchownat.c | 12 ++++++++----
audit-test/utils/bin/do_linkat.c | 24 ++++++++++++++++++------
audit-test/utils/bin/do_mkdirat.c | 12 +++++++++---
audit-test/utils/bin/do_mknodat.c | 13 ++++++++++---
audit-test/utils/bin/do_openat.c | 13 +++++++++----
audit-test/utils/bin/do_readlinkat.c | 12 +++++++++---
audit-test/utils/bin/do_renameat.c | 12 +++++++++---
audit-test/utils/bin/do_symlinkat.c | 13 ++++++++++---
audit-test/utils/bin/do_unlinkat.c | 12 +++++++++---
audit-test/utils/bin/do_utimensat.c | 12 ++++++++----
11 files changed, 107 insertions(+), 40 deletions(-)
diff --git a/audit-test/utils/bin/do_fchmodat.c b/audit-test/utils/bin/do_fchmodat.c
index ce49746..006cf50 100644
--- a/audit-test/utils/bin/do_fchmodat.c
+++ b/audit-test/utils/bin/do_fchmodat.c
@@ -26,10 +26,14 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd == -1) {
- perror("do_fchmodat: open dir fd");
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_fchmodat: open dir_fd");
+ return TEST_ERROR;
+ }
}
errno = 0;
diff --git a/audit-test/utils/bin/do_fchownat.c b/audit-test/utils/bin/do_fchownat.c
index 2d2baf5..5eb16ae 100644
--- a/audit-test/utils/bin/do_fchownat.c
+++ b/audit-test/utils/bin/do_fchownat.c
@@ -28,10 +28,14 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd == -1) {
- perror("do_fchownat: open dir fd");
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_fchownat: open dir_fd");
+ return TEST_ERROR;
+ }
}
pw = getpwnam(argv[3]);
diff --git a/audit-test/utils/bin/do_linkat.c b/audit-test/utils/bin/do_linkat.c
index 0f528f4..41535b8 100644
--- a/audit-test/utils/bin/do_linkat.c
+++ b/audit-test/utils/bin/do_linkat.c
@@ -26,15 +26,27 @@ int main(int argc, char **argv)
}
/* directory */
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_linkat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
/* new_directory */
if (argc > 4) {
- newdir_fd = open(argv[4], O_DIRECTORY);
- if (newdir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[4], "AT_FDCWD")) {
+ newdir_fd = AT_FDCWD;
+ } else {
+ newdir_fd = open(argv[4], O_DIRECTORY);
+ if (newdir_fd == -1) {
+ perror("do_linkat: open newdir_fd");
+ return TEST_ERROR;
+ }
+ }
} else {
newdir_fd = dir_fd;
}
diff --git a/audit-test/utils/bin/do_mkdirat.c b/audit-test/utils/bin/do_mkdirat.c
index 5a6e54f..a3fe48f 100644
--- a/audit-test/utils/bin/do_mkdirat.c
+++ b/audit-test/utils/bin/do_mkdirat.c
@@ -35,9 +35,15 @@ int main(int argc, char **argv)
}
#endif
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_mkdirat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
errno = 0;
exitval = mkdirat(dir_fd, argv[2], S_IRWXU);
diff --git a/audit-test/utils/bin/do_mknodat.c b/audit-test/utils/bin/do_mknodat.c
index 7e9ea2c..d6f5f47 100644
--- a/audit-test/utils/bin/do_mknodat.c
+++ b/audit-test/utils/bin/do_mknodat.c
@@ -28,9 +28,16 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_mknodat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
+
#ifdef LSM_SELINUX
if (argc == 4 && setfscreatecon(argv[3]) < 0) {
perror("do_mknodat: setfscreatecon");
diff --git a/audit-test/utils/bin/do_openat.c b/audit-test/utils/bin/do_openat.c
index 6205406..9c30c5e 100644
--- a/audit-test/utils/bin/do_openat.c
+++ b/audit-test/utils/bin/do_openat.c
@@ -48,11 +48,16 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dirfd = open(argv[1], O_DIRECTORY);
- if (dirfd == -1) {
- perror("do_openat: open dirfd");
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dirfd = AT_FDCWD;
+ } else {
+ dirfd = open(argv[1], O_DIRECTORY);
+ if (dirfd == -1) {
+ perror("do_openat: open dirfd");
+ return TEST_ERROR;
+ }
}
+
#ifdef LSM_SELINUX
if (argc == 5 && setfscreatecon(argv[4]) < 0) {
perror("do_openat: setfscreatecon");
diff --git a/audit-test/utils/bin/do_readlinkat.c b/audit-test/utils/bin/do_readlinkat.c
index 121e651..bb4fa7d 100644
--- a/audit-test/utils/bin/do_readlinkat.c
+++ b/audit-test/utils/bin/do_readlinkat.c
@@ -26,9 +26,15 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_readlinkat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
errno = 0;
exitval = readlinkat(dir_fd, argv[2], buf, PATH_MAX);
diff --git a/audit-test/utils/bin/do_renameat.c b/audit-test/utils/bin/do_renameat.c
index cbdec09..96f0545 100644
--- a/audit-test/utils/bin/do_renameat.c
+++ b/audit-test/utils/bin/do_renameat.c
@@ -26,9 +26,15 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_renameat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
errno = 0;
exitval = renameat(dir_fd, argv[2], dir_fd, argv[3]);
diff --git a/audit-test/utils/bin/do_symlinkat.c b/audit-test/utils/bin/do_symlinkat.c
index 1829dcf..3edcb39 100644
--- a/audit-test/utils/bin/do_symlinkat.c
+++ b/audit-test/utils/bin/do_symlinkat.c
@@ -29,9 +29,16 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_symlinkat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
+
#ifdef LSM_SELINUX
if (argc == 5 && setfscreatecon(argv[4]) < 0) {
perror("do_symlinkat: setfscreatecon");
diff --git a/audit-test/utils/bin/do_unlinkat.c b/audit-test/utils/bin/do_unlinkat.c
index 8694bd8..f72f4e0 100644
--- a/audit-test/utils/bin/do_unlinkat.c
+++ b/audit-test/utils/bin/do_unlinkat.c
@@ -25,9 +25,15 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dir_fd = open(argv[1], O_DIRECTORY);
- if (dir_fd < 0)
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dir_fd = AT_FDCWD;
+ } else {
+ dir_fd = open(argv[1], O_DIRECTORY);
+ if (dir_fd == -1) {
+ perror("do_unlinkat: open dir_fd");
+ return TEST_ERROR;
+ }
+ }
errno = 0;
exitval = unlinkat(dir_fd, argv[2], 0);
diff --git a/audit-test/utils/bin/do_utimensat.c b/audit-test/utils/bin/do_utimensat.c
index bf1fe0b..46f3adb 100644
--- a/audit-test/utils/bin/do_utimensat.c
+++ b/audit-test/utils/bin/do_utimensat.c
@@ -28,10 +28,14 @@ int main(int argc, char **argv)
return TEST_ERROR;
}
- dirfd = open(argv[1], O_DIRECTORY);
- if (dirfd == -1) {
- perror("do_utimensat: open dirfd");
- return TEST_ERROR;
+ if (!strcmp(argv[1], "AT_FDCWD")) {
+ dirfd = AT_FDCWD;
+ } else {
+ dirfd = open(argv[1], O_DIRECTORY);
+ if (dirfd == -1) {
+ perror("do_utimensat: open dirfd");
+ return TEST_ERROR;
+ }
}
times[0].tv_sec = 0;
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:56
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/Makefile | 14 +-------------
audit-test/utils/bin/ipc_common.c | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/audit-test/utils/bin/Makefile b/audit-test/utils/bin/Makefile
index bbead88..aeaa493 100644
--- a/audit-test/utils/bin/Makefile
+++ b/audit-test/utils/bin/Makefile
@@ -207,19 +207,7 @@ $(MQ_EXE): LDLIBS += -lrt
endif
$(RT_EXE): LDLIBS += -lrt
-headerhack:
- @echo -en "/* Do NOT edit this file directly," \
- "it is generated from /usr/include/linux/ipc.h\n" \
- " which cannot be included due to an obsolete definition of" \
- "struct ipc_perm */\n\n" > ipc_hack.h && \
- gcc -E -dM /usr/include/linux/ipc.h | egrep "SEM|MSG|SHM" >> ipc_hack.h;
-
-clean: headerhack_clean
-headerhack_clean:
- $(RM) ipc_hack.h
-
-
-all: headerhack $(ALL_EXE)
+all: $(ALL_EXE)
clobber:
$(RM) $(ALL_EXE)
diff --git a/audit-test/utils/bin/ipc_common.c b/audit-test/utils/bin/ipc_common.c
index 2c93e4d..724b130 100644
--- a/audit-test/utils/bin/ipc_common.c
+++ b/audit-test/utils/bin/ipc_common.c
@@ -14,11 +14,26 @@
*/
#include "includes.h"
-#include "ipc_hack.h"
#include <sys/msg.h>
#include <sys/sem.h>
#include <sys/shm.h>
+/* from <linux/ipc.h> which has conflicting definition of ipc_perm */
+/* NOTE that these defines are (at this time) used only internally
+ * for one specific switch{} in do_ipc.c */
+#define SEMOP 1
+#define SEMGET 2
+#define SEMCTL 3
+#define SEMTIMEDOP 4
+#define MSGSND 11
+#define MSGRCV 12
+#define MSGGET 13
+#define MSGCTL 14
+#define SHMAT 21
+#define SHMDT 22
+#define SHMGET 23
+#define SHMCTL 24
+
int check_ipc_usage(char *call, int nargs)
{
if (!strcmp(call, "msgctl") || !strcmp(call, "msgget") ||
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:57
|
(use stdout for syscall-specific output)
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/netfilebt/run.conf | 2 +-
audit-test/netfilter/run.conf | 2 +-
audit-test/network/run.conf | 2 +-
audit-test/syscalls/run.conf | 2 +-
audit-test/syscalls/syscall_functions.bash | 26 +++++++++++++-------------
audit-test/utils/bin/do_accept.c | 2 +-
audit-test/utils/bin/do_accept4.c | 2 +-
audit-test/utils/bin/do_access.c | 2 +-
audit-test/utils/bin/do_acct.c | 2 +-
audit-test/utils/bin/do_adjtimex.c | 2 +-
audit-test/utils/bin/do_bind.c | 2 +-
audit-test/utils/bin/do_capset.c | 2 +-
audit-test/utils/bin/do_chdir.c | 2 +-
audit-test/utils/bin/do_chmod.c | 2 +-
audit-test/utils/bin/do_chown.c | 2 +-
audit-test/utils/bin/do_chown32.c | 2 +-
audit-test/utils/bin/do_clock_settime.c | 2 +-
audit-test/utils/bin/do_clone.c | 2 +-
audit-test/utils/bin/do_clone2.c | 2 +-
audit-test/utils/bin/do_connect.c | 2 +-
audit-test/utils/bin/do_creat.c | 2 +-
audit-test/utils/bin/do_delete_module.c | 2 +-
audit-test/utils/bin/do_execve.c | 2 +-
audit-test/utils/bin/do_fchmod.c | 2 +-
audit-test/utils/bin/do_fchmodat.c | 2 +-
audit-test/utils/bin/do_fchown.c | 2 +-
audit-test/utils/bin/do_fchown32.c | 2 +-
audit-test/utils/bin/do_fchownat.c | 2 +-
audit-test/utils/bin/do_fork.c | 2 +-
audit-test/utils/bin/do_fremovexattr.c | 2 +-
audit-test/utils/bin/do_fsetxattr.c | 2 +-
audit-test/utils/bin/do_getseconds.c | 1 +
audit-test/utils/bin/do_gettimezone.c | 3 ++-
audit-test/utils/bin/do_getxattr.c | 2 +-
audit-test/utils/bin/do_init_module.c | 2 +-
audit-test/utils/bin/do_ioctl.c | 2 +-
audit-test/utils/bin/do_ioperm.c | 2 +-
audit-test/utils/bin/do_iopl.c | 2 +-
audit-test/utils/bin/do_ipc.c | 2 +-
audit-test/utils/bin/do_kill.c | 2 +-
audit-test/utils/bin/do_lchown.c | 2 +-
audit-test/utils/bin/do_lchown32.c | 2 +-
audit-test/utils/bin/do_lgetxattr.c | 2 +-
audit-test/utils/bin/do_link.c | 2 +-
audit-test/utils/bin/do_linkat.c | 2 +-
audit-test/utils/bin/do_listxattr.c | 2 +-
audit-test/utils/bin/do_llistxattr.c | 2 +-
audit-test/utils/bin/do_lremovexattr.c | 2 +-
audit-test/utils/bin/do_lsetxattr.c | 2 +-
audit-test/utils/bin/do_mkdir.c | 2 +-
audit-test/utils/bin/do_mkdirat.c | 2 +-
audit-test/utils/bin/do_mknod.c | 2 +-
audit-test/utils/bin/do_mknodat.c | 2 +-
audit-test/utils/bin/do_mmap2.c | 6 +++---
audit-test/utils/bin/do_mount.c | 2 +-
audit-test/utils/bin/do_mq_open.c | 2 +-
audit-test/utils/bin/do_mq_unlink.c | 2 +-
audit-test/utils/bin/do_msgctl.c | 2 +-
audit-test/utils/bin/do_msgget.c | 2 +-
audit-test/utils/bin/do_msgrcv.c | 2 +-
audit-test/utils/bin/do_msgsnd.c | 2 +-
audit-test/utils/bin/do_open.c | 2 +-
audit-test/utils/bin/do_openat.c | 2 +-
audit-test/utils/bin/do_ptrace.c | 2 +-
audit-test/utils/bin/do_read.c | 2 +-
audit-test/utils/bin/do_readlink.c | 2 +-
audit-test/utils/bin/do_readlinkat.c | 2 +-
audit-test/utils/bin/do_recvfrom.c | 2 +-
audit-test/utils/bin/do_recvmmsg.c | 2 +-
audit-test/utils/bin/do_recvmsg.c | 2 +-
audit-test/utils/bin/do_removexattr.c | 2 +-
audit-test/utils/bin/do_rename.c | 2 +-
audit-test/utils/bin/do_renameat.c | 2 +-
audit-test/utils/bin/do_rmdir.c | 2 +-
audit-test/utils/bin/do_semctl.c | 2 +-
audit-test/utils/bin/do_semget.c | 2 +-
audit-test/utils/bin/do_semop.c | 2 +-
audit-test/utils/bin/do_semtimedop.c | 2 +-
audit-test/utils/bin/do_send.c | 2 +-
audit-test/utils/bin/do_sendmsg.c | 2 +-
audit-test/utils/bin/do_sendto.c | 2 +-
audit-test/utils/bin/do_setfsgid.c | 2 +-
audit-test/utils/bin/do_setfsgid32.c | 2 +-
audit-test/utils/bin/do_setfsuid.c | 2 +-
audit-test/utils/bin/do_setfsuid32.c | 2 +-
audit-test/utils/bin/do_setgid.c | 2 +-
audit-test/utils/bin/do_setgid32.c | 2 +-
audit-test/utils/bin/do_setgroups.c | 2 +-
audit-test/utils/bin/do_setgroups32.c | 2 +-
audit-test/utils/bin/do_setregid.c | 2 +-
audit-test/utils/bin/do_setregid32.c | 2 +-
audit-test/utils/bin/do_setresgid.c | 2 +-
audit-test/utils/bin/do_setresgid32.c | 2 +-
audit-test/utils/bin/do_setresuid.c | 2 +-
audit-test/utils/bin/do_setresuid32.c | 2 +-
audit-test/utils/bin/do_setreuid.c | 2 +-
audit-test/utils/bin/do_setreuid32.c | 2 +-
audit-test/utils/bin/do_settimeofday.c | 2 +-
audit-test/utils/bin/do_setuid.c | 2 +-
audit-test/utils/bin/do_setuid32.c | 2 +-
audit-test/utils/bin/do_setxattr.c | 2 +-
audit-test/utils/bin/do_shmat.c | 2 +-
audit-test/utils/bin/do_shmctl.c | 2 +-
audit-test/utils/bin/do_shmget.c | 2 +-
audit-test/utils/bin/do_socketcall.c | 2 +-
audit-test/utils/bin/do_stime.c | 2 +-
audit-test/utils/bin/do_swapon.c | 2 +-
audit-test/utils/bin/do_symlink.c | 2 +-
audit-test/utils/bin/do_symlinkat.c | 2 +-
audit-test/utils/bin/do_tgkill.c | 2 +-
audit-test/utils/bin/do_tkill.c | 2 +-
audit-test/utils/bin/do_truncate.c | 2 +-
audit-test/utils/bin/do_truncate64.c | 2 +-
audit-test/utils/bin/do_umask.c | 2 +-
audit-test/utils/bin/do_unlink.c | 2 +-
audit-test/utils/bin/do_unlinkat.c | 2 +-
audit-test/utils/bin/do_uselib.c | 2 +-
audit-test/utils/bin/do_utime.c | 2 +-
audit-test/utils/bin/do_utimensat.c | 2 +-
audit-test/utils/bin/do_utimes.c | 2 +-
audit-test/utils/bin/do_vfork.c | 2 +-
121 files changed, 136 insertions(+), 134 deletions(-)
diff --git a/audit-test/netfilebt/run.conf b/audit-test/netfilebt/run.conf
index 93b9d93..3ecc41e 100644
--- a/audit-test/netfilebt/run.conf
+++ b/audit-test/netfilebt/run.conf
@@ -722,7 +722,7 @@ function run_test {
# run the test itself
read testres exitval pid <<< \
"$(runcon -t $test_domain -l $(get_label_subj $mlsop) \
- do_$tst_name "${tst_args[@]}")"
+ do_$tst_name "${tst_args[@]}" 2>&1 1>/dev/null)"
echo "testres is "$testres" and exitval is "$exitval" "
[[ -z $testres || -z $exitval || -z $pid ]] && exit_error
diff --git a/audit-test/netfilter/run.conf b/audit-test/netfilter/run.conf
index 8d86097..d9b6f06 100644
--- a/audit-test/netfilter/run.conf
+++ b/audit-test/netfilter/run.conf
@@ -945,7 +945,7 @@ function run_test {
*)
read testres exitval pid <<< \
"$(runcon -t $test_domain -l $(get_label_subj $mlsop) \
- do_$tst_name "${tst_args[@]}")"
+ do_$tst_name "${tst_args[@]}" 2>&1 1>/dev/null)"
;;
esac
diff --git a/audit-test/network/run.conf b/audit-test/network/run.conf
index 0a88e17..f59aa02 100644
--- a/audit-test/network/run.conf
+++ b/audit-test/network/run.conf
@@ -933,7 +933,7 @@ function run_test {
# run the test itself
read testres exitval pid <<< \
"$(runcon -u system_u -r system_r -t $test_domain -l $(get_label_subj $mlsop) -- \
- do_$tst_name "${tst_args[@]}")"
+ do_$tst_name "${tst_args[@]}" 2>&1 1>/dev/null)"
[[ -z $testres || -z $exitval || -z $pid ]] && exit_error
check_result $expres $testres $exitval $err
diff --git a/audit-test/syscalls/run.conf b/audit-test/syscalls/run.conf
index b3af7c4..0f22382 100644
--- a/audit-test/syscalls/run.conf
+++ b/audit-test/syscalls/run.conf
@@ -135,7 +135,7 @@ function run_test {
test_runcon_default
else
read testres exitval pid \
- <<<"$(do_$syscall $op $dirname $source $target $flag)"
+ <<<"$(do_$syscall $op $dirname $source $target $flag 2>&1 1>/dev/null)"
fi
[[ -z $testres || -z $exitval || -z $pid ]] && exit_error
diff --git a/audit-test/syscalls/syscall_functions.bash b/audit-test/syscalls/syscall_functions.bash
index bd38b40..cbaed4f 100644
--- a/audit-test/syscalls/syscall_functions.bash
+++ b/audit-test/syscalls/syscall_functions.bash
@@ -96,7 +96,7 @@ function test_su_default {
# do the test
[[ -z $user ]] && exit_error "test \$user undefined"
if [[ $user == super ]]; then
- read testres exitval pid <<<"$(do_$syscall "$@")"
+ read testres exitval pid <<<"$(do_$syscall "$@" 2>&1 1>/dev/null)"
else
if [[ $user == "test" ]]; then
testuser=$TEST_USER
@@ -109,7 +109,7 @@ function test_su_default {
read uid euid suid fsuid gid egid sgid fsgid \
<<<"$(/bin/su - $testuser -c 'ps --no-headers -p $$ -o uid,euid,suid,fsuid,gid,egid,sgid,fsgid')"
read testres exitval pid \
- <<<"$(/bin/su - $testuser -c "$(which do_$syscall) $testargs")"
+ <<<"$(/bin/su - $testuser -c "$(which do_$syscall) $testargs 2>&1 1>/dev/null")"
fi
}
@@ -121,7 +121,7 @@ function test_su_fork {
saved=$(ulimit -u)
prepend_cleanup "ulimit -u $saved"
ulimit -u 2
- read testres exitval pid <<<"$(do_$syscall)"
+ read testres exitval pid <<<"$(do_$syscall 2>&1 1>/dev/null)"
else
if [[ $user == "test" ]]; then
testuser=$TEST_USER
@@ -133,7 +133,7 @@ function test_su_fork {
read uid euid suid fsuid gid egid sgid fsgid \
<<<"$(/bin/su - $testuser -c 'ps --no-headers -p $$ -o uid,euid,suid,fsuid,gid,egid,sgid,fsgid')"
read testres exitval pid \
- <<<"$(/bin/su - $testuser -c "ulimit -u 2 ; $(which do_$syscall)")"
+ <<<"$(/bin/su - $testuser -c "ulimit -u 2 ; $(which do_$syscall) 2>&1 1>/dev/null")"
fi
}
@@ -163,15 +163,15 @@ function test_su_time_zone {
function test_runcon_default {
read testres exitval pid \
- <<<"$(runcon $subj do_$syscall $op $dirname $source $target $flag $setcontext)"
+ <<<"$(runcon $subj do_$syscall $op $dirname $source $target $flag $setcontext 2>&1 1>/dev/null)"
}
function test_runcon_kill_pgrp {
- read testres exitval pid <<<"$(runcon $subj do_$syscall $target $flag group)"
+ read testres exitval pid <<<"$(runcon $subj do_$syscall $target $flag group 2>&1 1>/dev/null)"
}
function test_runcon_msg_send {
- read testres exitval pid <<<"$(runcon $subj do_$syscall $op $target $flag "$msg")"
+ read testres exitval pid <<<"$(runcon $subj do_$syscall $op $target $flag "$msg" 2>&1 1>/dev/null)"
}
######################################################################
@@ -492,7 +492,7 @@ function create_msg_id {
eval "$(parse_named "$@")" || exit_error
prepend_cleanup "ipcrm -Q $ipc_key"
- read result id foo <<<"$(${context:+runcon $context} $(which do_msgget) $ipc_key create)"
+ read result id foo <<<"$(${context:+runcon $context} $(which do_msgget) $ipc_key create 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not create message queue"
eval "$var=\$id"
@@ -516,7 +516,7 @@ function create_sem_id {
eval "$(parse_named "$@")" || exit_error
prepend_cleanup "ipcrm -S $ipc_key"
- read result id foo <<<"$(${context:+runcon $context} $(which do_semget) $ipc_key create)"
+ read result id foo <<<"$(${context:+runcon $context} $(which do_semget) $ipc_key create 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not create semaphore set"
eval "$var=\$id"
@@ -540,7 +540,7 @@ function create_shm_id {
eval "$(parse_named "$@")" || exit_error
prepend_cleanup "ipcrm -M $ipc_key"
- read result id foo <<<"$(${context:+runcon $context} $(which do_shmget) $ipc_key create)"
+ read result id foo <<<"$(${context:+runcon $context} $(which do_shmget) $ipc_key create 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not create shared memory segment"
eval "$var=\$id"
@@ -783,7 +783,7 @@ function create_fs_objects_dac {
value="text/plain"
if [[ $action == remove ]]; then
read result foo bar \
- <<<"$(do_setxattr $target $flag "$value")"
+ <<<"$(do_setxattr $target $flag "$value" 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not initialize xattr"
fi
;;
@@ -872,7 +872,7 @@ function create_ipc_objects_dac {
# do_ipc utility purely because the harness wants to find a
# do_$syscall binary.
read result foo bar \
- <<<"$(do_msgsnd $target $flag 'test message')"
+ <<<"$(do_msgsnd $target $flag 'test message' 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not send initial message" ;;
esac
@@ -1063,7 +1063,7 @@ function create_ipc_objects_mac {
# do_ipc utility purely because the harness wants to find a
# do_$syscall binary.
read result foo bar \
- <<<"$(runcon $obj do_msgsnd $target $flag 'test message')"
+ <<<"$(runcon $obj do_msgsnd $target $flag 'test message' 2>&1 1>/dev/null)"
[[ $result == 0 ]] || exit_error "could not send initial message" ;;
esac
diff --git a/audit-test/utils/bin/do_accept.c b/audit-test/utils/bin/do_accept.c
index f96ffa2..c0c80b2 100644
--- a/audit-test/utils/bin/do_accept.c
+++ b/audit-test/utils/bin/do_accept.c
@@ -70,6 +70,6 @@ int main(int argc, char **argv)
rc = accept(sock, NULL, 0);
result = (rc < 0 ? TEST_FAIL : TEST_SUCCESS);
- printf("%d %d %d\n", result, result ? errno : rc, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : rc, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_accept4.c b/audit-test/utils/bin/do_accept4.c
index cf8323d..e32fb0a 100644
--- a/audit-test/utils/bin/do_accept4.c
+++ b/audit-test/utils/bin/do_accept4.c
@@ -70,6 +70,6 @@ int main(int argc, char **argv)
rc = accept4(sock, NULL, 0, 0);
result = (rc < 0 ? TEST_FAIL : TEST_SUCCESS);
- printf("%d %d %d\n", result, result ? errno : rc, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : rc, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_access.c b/audit-test/utils/bin/do_access.c
index 1a8fffd..4268030 100644
--- a/audit-test/utils/bin/do_access.c
+++ b/audit-test/utils/bin/do_access.c
@@ -28,6 +28,6 @@ int main(int argc, char **argv)
exitval = access(argv[1], W_OK);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_acct.c b/audit-test/utils/bin/do_acct.c
index eda3715..0c9dde6 100644
--- a/audit-test/utils/bin/do_acct.c
+++ b/audit-test/utils/bin/do_acct.c
@@ -27,6 +27,6 @@ int main(int argc, char **argv)
exitval = acct(filename);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_adjtimex.c b/audit-test/utils/bin/do_adjtimex.c
index a627269..9101acb 100644
--- a/audit-test/utils/bin/do_adjtimex.c
+++ b/audit-test/utils/bin/do_adjtimex.c
@@ -39,6 +39,6 @@ int main(int argc, char **argv)
exitval = adjtimex(&timex);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_bind.c b/audit-test/utils/bin/do_bind.c
index f6bfe75..0b87d01 100644
--- a/audit-test/utils/bin/do_bind.c
+++ b/audit-test/utils/bin/do_bind.c
@@ -66,6 +66,6 @@ int main(int argc, char **argv)
exitval = bind(sockfd, (struct sockaddr *)&addr, addrlen);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_capset.c b/audit-test/utils/bin/do_capset.c
index bffb451..e5176ab 100644
--- a/audit-test/utils/bin/do_capset.c
+++ b/audit-test/utils/bin/do_capset.c
@@ -58,7 +58,7 @@ int main(int argc, char **argv)
cap_free(caps);
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_chdir.c b/audit-test/utils/bin/do_chdir.c
index b54a48d..13cf6bb 100644
--- a/audit-test/utils/bin/do_chdir.c
+++ b/audit-test/utils/bin/do_chdir.c
@@ -29,6 +29,6 @@ int main(int argc, char **argv)
exitval = chdir(argv[1]);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_chmod.c b/audit-test/utils/bin/do_chmod.c
index 4d870d2..114ce86 100644
--- a/audit-test/utils/bin/do_chmod.c
+++ b/audit-test/utils/bin/do_chmod.c
@@ -29,6 +29,6 @@ int main(int argc, char **argv)
exitval = chmod(argv[1], atoi(argv[2]));
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_chown.c b/audit-test/utils/bin/do_chown.c
index 0bb1b91..bc6ecce 100644
--- a/audit-test/utils/bin/do_chown.c
+++ b/audit-test/utils/bin/do_chown.c
@@ -74,6 +74,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_chown, argv[1], uid, gid);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_chown32.c b/audit-test/utils/bin/do_chown32.c
index 01895dd..4eaf1b7 100644
--- a/audit-test/utils/bin/do_chown32.c
+++ b/audit-test/utils/bin/do_chown32.c
@@ -37,6 +37,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_chown32, argv[1], pw->pw_uid, -1);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_clock_settime.c b/audit-test/utils/bin/do_clock_settime.c
index 164efe0..6670162 100644
--- a/audit-test/utils/bin/do_clock_settime.c
+++ b/audit-test/utils/bin/do_clock_settime.c
@@ -33,6 +33,6 @@ int main(int argc, char **argv)
exitval = clock_settime(CLOCK_REALTIME, &tspec);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_clone.c b/audit-test/utils/bin/do_clone.c
index fa89ba8..e723639 100644
--- a/audit-test/utils/bin/do_clone.c
+++ b/audit-test/utils/bin/do_clone.c
@@ -50,6 +50,6 @@ int main(int argc, char **argv)
exitval = pid;
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_clone2.c b/audit-test/utils/bin/do_clone2.c
index 503e254..c2304cb 100644
--- a/audit-test/utils/bin/do_clone2.c
+++ b/audit-test/utils/bin/do_clone2.c
@@ -56,6 +56,6 @@ int main(int argc, char **argv)
exitval = pid;
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_connect.c b/audit-test/utils/bin/do_connect.c
index d88c058..4b86fed 100644
--- a/audit-test/utils/bin/do_connect.c
+++ b/audit-test/utils/bin/do_connect.c
@@ -50,7 +50,7 @@ int main(int argc, char **argv)
rc = connect(sock, host->ai_addr, host->ai_addrlen);
result = (rc < 0 ? TEST_FAIL : TEST_SUCCESS);
- printf("%d %d %d\n", result, result ? errno : rc, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : rc, getpid());
shutdown(sock, SHUT_RDWR);
close(sock);
diff --git a/audit-test/utils/bin/do_creat.c b/audit-test/utils/bin/do_creat.c
index 81b0686..6edb8ec 100644
--- a/audit-test/utils/bin/do_creat.c
+++ b/audit-test/utils/bin/do_creat.c
@@ -38,6 +38,6 @@ int main(int argc, char **argv)
exitval = creat(argv[1], S_IRWXU);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_delete_module.c b/audit-test/utils/bin/do_delete_module.c
index 7f1a8ea..9d3a784 100644
--- a/audit-test/utils/bin/do_delete_module.c
+++ b/audit-test/utils/bin/do_delete_module.c
@@ -29,6 +29,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_delete_module, argv[1], 0);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_execve.c b/audit-test/utils/bin/do_execve.c
index c78d24a..a75b4ad 100644
--- a/audit-test/utils/bin/do_execve.c
+++ b/audit-test/utils/bin/do_execve.c
@@ -46,6 +46,6 @@ int main(int argc, char **argv)
error = WIFEXITED(status) ? WEXITSTATUS(status) : EINTR;
result = !!error;
- printf("%d %d %d\n", result, result ? error : 0, pid);
+ fprintf(stderr, "%d %d %d\n", result, result ? error : 0, pid);
return result;
}
diff --git a/audit-test/utils/bin/do_fchmod.c b/audit-test/utils/bin/do_fchmod.c
index e4d911f..f3f07e1 100644
--- a/audit-test/utils/bin/do_fchmod.c
+++ b/audit-test/utils/bin/do_fchmod.c
@@ -36,6 +36,6 @@ int main(int argc, char **argv)
exitval = fchmod(fd, atoi(argv[2]));
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fchmodat.c b/audit-test/utils/bin/do_fchmodat.c
index 006cf50..bd61ad1 100644
--- a/audit-test/utils/bin/do_fchmodat.c
+++ b/audit-test/utils/bin/do_fchmodat.c
@@ -40,6 +40,6 @@ int main(int argc, char **argv)
exitval = fchmodat(dir_fd, argv[2], atoi(argv[3]), 0);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fchown.c b/audit-test/utils/bin/do_fchown.c
index 179d89d..d9403a9 100644
--- a/audit-test/utils/bin/do_fchown.c
+++ b/audit-test/utils/bin/do_fchown.c
@@ -45,6 +45,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_fchown, fd, pw->pw_uid, -1);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fchown32.c b/audit-test/utils/bin/do_fchown32.c
index d83c169..f2f7163 100644
--- a/audit-test/utils/bin/do_fchown32.c
+++ b/audit-test/utils/bin/do_fchown32.c
@@ -45,6 +45,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_fchown32, fd, pw->pw_uid, -1);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fchownat.c b/audit-test/utils/bin/do_fchownat.c
index 5eb16ae..cbea54d 100644
--- a/audit-test/utils/bin/do_fchownat.c
+++ b/audit-test/utils/bin/do_fchownat.c
@@ -48,6 +48,6 @@ int main(int argc, char **argv)
exitval = fchownat(dir_fd, argv[2], pw->pw_uid, -1, 0);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fork.c b/audit-test/utils/bin/do_fork.c
index 991fded..62bc58b 100644
--- a/audit-test/utils/bin/do_fork.c
+++ b/audit-test/utils/bin/do_fork.c
@@ -36,6 +36,6 @@ int main(int argc, char **argv)
exitval = pid;
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fremovexattr.c b/audit-test/utils/bin/do_fremovexattr.c
index 37224ec..ecbe1c7 100644
--- a/audit-test/utils/bin/do_fremovexattr.c
+++ b/audit-test/utils/bin/do_fremovexattr.c
@@ -37,6 +37,6 @@ int main(int argc, char **argv)
exitval = fremovexattr(fd, argv[2]);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_fsetxattr.c b/audit-test/utils/bin/do_fsetxattr.c
index 65c2c86..ee4bc10 100644
--- a/audit-test/utils/bin/do_fsetxattr.c
+++ b/audit-test/utils/bin/do_fsetxattr.c
@@ -37,6 +37,6 @@ int main(int argc, char **argv)
exitval = fsetxattr(fd, argv[2], argv[3], strlen(argv[3]), XATTR_CREATE);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_getseconds.c b/audit-test/utils/bin/do_getseconds.c
index 2ef41d6..cd8dd8d 100644
--- a/audit-test/utils/bin/do_getseconds.c
+++ b/audit-test/utils/bin/do_getseconds.c
@@ -27,5 +27,6 @@ int main(int argc, char **argv)
result = exitval < 0;
printf("%ld\n", tv.tv_sec);
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_gettimezone.c b/audit-test/utils/bin/do_gettimezone.c
index 9076866..5c8c201 100644
--- a/audit-test/utils/bin/do_gettimezone.c
+++ b/audit-test/utils/bin/do_gettimezone.c
@@ -26,6 +26,7 @@ int main(int argc, char **argv)
exitval = gettimeofday(&tv, &tz);
result = exitval < 0;
- printf("%d %d\n", tz.tz_minuteswest, tz.tz_dsttime);
+ fprintf(stderr, "%d %d\n", tz.tz_minuteswest, tz.tz_dsttime);
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_getxattr.c b/audit-test/utils/bin/do_getxattr.c
index 3d680dc..e5396b7 100644
--- a/audit-test/utils/bin/do_getxattr.c
+++ b/audit-test/utils/bin/do_getxattr.c
@@ -31,6 +31,6 @@ int main(int argc, char **argv)
exitval = getxattr(argv[1], argv[2], &buf, 256);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_init_module.c b/audit-test/utils/bin/do_init_module.c
index ba6c3e6..0ac567b 100644
--- a/audit-test/utils/bin/do_init_module.c
+++ b/audit-test/utils/bin/do_init_module.c
@@ -56,6 +56,6 @@ int main(int argc, char **argv)
exitval = syscall(__NR_init_module, buffer, mstat.st_size, "");
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_ioctl.c b/audit-test/utils/bin/do_ioctl.c
index 1ddcffd..a675f76 100644
--- a/audit-test/utils/bin/do_ioctl.c
+++ b/audit-test/utils/bin/do_ioctl.c
@@ -52,6 +52,6 @@ int main(int argc, char **argv)
exitval = ioctl(fd, request, arg);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_ioperm.c b/audit-test/utils/bin/do_ioperm.c
index 4388f84..ccb6cec 100644
--- a/audit-test/utils/bin/do_ioperm.c
+++ b/audit-test/utils/bin/do_ioperm.c
@@ -30,6 +30,6 @@ int main(int argc, char **argv)
exitval = ioperm(atoi(argv[1]), atoi(argv[2]), turn_on);
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_iopl.c b/audit-test/utils/bin/do_iopl.c
index 42e6cd1..18fa8a4 100644
--- a/audit-test/utils/bin/do_iopl.c
+++ b/audit-test/utils/bin/do_iopl.c
@@ -29,6 +29,6 @@ int main(int argc, char **argv)
exitval = iopl(atoi(argv[1]));
result = exitval < 0;
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_ipc.c b/audit-test/utils/bin/do_ipc.c
index 6d1d7ee..b44c77e 100644
--- a/audit-test/utils/bin/do_ipc.c
+++ b/audit-test/utils/bin/do_ipc.c
@@ -102,6 +102,6 @@ int main(int argc, char **argv)
result = exitval < 0;
}
- printf("%d %d %d\n", result, result ? errno : exitval, getpid());
+ fprintf(stderr, "%d %d %d\n", result, result ? errno : exitval, getpid());
return result;
}
diff --git a/audit-test/utils/bin/do_kill.c b/audit-test/utils...
[truncated message content] |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:00
|
This target was inconsistent across buckets (supported only by two) and likely unused. Use 'make clean' or 'make distclean' instead. Signed-off-by: Jiri Jaburek <jja...@re...> --- audit-test/rules.mk | 2 +- audit-test/utils/bin/Makefile | 3 --- audit-test/utils/network-server/Makefile | 3 --- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/audit-test/rules.mk b/audit-test/rules.mk index 22af9d3..bf32746 100644 --- a/audit-test/rules.mk +++ b/audit-test/rules.mk @@ -102,7 +102,7 @@ endif ########################################################################## .PHONY: all run \ - clean clobber distclean _clean _clobber _distclean \ + clean distclean _clean _distclean \ msgque rmlogs showrpms showrpms2 all: deps subdirs $(ALL_AR) $(ALL_EXE) $(ALL_SO) diff --git a/audit-test/utils/bin/Makefile b/audit-test/utils/bin/Makefile index aeaa493..397cb32 100644 --- a/audit-test/utils/bin/Makefile +++ b/audit-test/utils/bin/Makefile @@ -208,6 +208,3 @@ endif $(RT_EXE): LDLIBS += -lrt all: $(ALL_EXE) - -clobber: - $(RM) $(ALL_EXE) diff --git a/audit-test/utils/network-server/Makefile b/audit-test/utils/network-server/Makefile index 98478d2..9306c94 100644 --- a/audit-test/utils/network-server/Makefile +++ b/audit-test/utils/network-server/Makefile @@ -30,6 +30,3 @@ all: $(ALL_EXE) install: $(SRVR_EXE) install -o root -g root -m 0644 lblnet_tst-tcp /etc/xinetd.d - -clobber: - $(RM) $(ALL_EXE) -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:03
|
These variables don't seem to be used anywhere in the suite. Signed-off-by: Jiri Jaburek <jja...@re...> --- audit-test/rules.mk | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/audit-test/rules.mk b/audit-test/rules.mk index bf32746..fd18e0f 100644 --- a/audit-test/rules.mk +++ b/audit-test/rules.mk @@ -314,23 +314,3 @@ subdirs_quiet: @for x in $(SUB_DIRS); do \ $(MAKE) --no-print-directory -C $$x $(MAKECMDGOALS) || exit $$?; \ done - -########################################################################## -# Command framework execution rules -########################################################################## - -ifneq ($(DEBUG),) -DEBUG_ARG = -d $(DEBUG) -endif - -ifneq ($(TEST_USER),) -USER_ARG = -u $(TEST_USER) -endif - -ifneq ($(LOGIN_USER),) -LOGIN_ARG = -l $(LOGIN_USER) -endif - -ifneq ($(TEST),) -TEST_ARG = -t $(TEST) -endif -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:06
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/rules.mk | 11 +++++++++--
audit-test/utils/run.bash | 16 ++++++++++++++++
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/audit-test/rules.mk b/audit-test/rules.mk
index fd18e0f..16410b5 100644
--- a/audit-test/rules.mk
+++ b/audit-test/rules.mk
@@ -51,8 +51,8 @@ LINK_SO = $(CC) $(LDFLAGS) -shared -o $@ $^ $(LOADLIBES) $(LDLIBS)
export MACHINE
# If MODE isn't set explicitly, the default for the machine is used
-export NATIVE = $(strip $(shell file /bin/bash | awk -F'[ -]' '{print $$3}'))
-export MODE ?= $(NATIVE)
+NATIVE = $(strip $(shell file /bin/bash | awk -F'[ -]' '{print $$3}'))
+export MODE ?= $(NATIVE)
ifneq ($(MODE), $(NATIVE))
ifeq ($(MODE), 32)
ifneq (,$(findstring $(MACHINE), $(Z64)))
@@ -314,3 +314,10 @@ subdirs_quiet:
@for x in $(SUB_DIRS); do \
$(MAKE) --no-print-directory -C $$x $(MAKECMDGOALS) || exit $$?; \
done
+
+##########################################################################
+# Various helper rules
+##########################################################################
+
+export-%:
+ @[ '$($*)' ] && echo 'export $*=$($*)' || true
diff --git a/audit-test/utils/run.bash b/audit-test/utils/run.bash
index a258988..451b5e6 100755
--- a/audit-test/utils/run.bash
+++ b/audit-test/utils/run.bash
@@ -31,6 +31,21 @@
# usage information can be retrieved with "./run.bash --help"
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
+
+# read certain variables from the make system
+# - these variables are normally exported by 'make run', but not by manual
+# ./run.bash, so read them (in either case) manually here
+if [[ -f Makefile ]]; then
+ eval "$(MAKELEVEL= make --no-print-directory -f Makefile \
+ export-TOPDIR export-MACHINE export-MODE export-DISTRO \
+ export-LSM_SELINUX)"
+ # convert TOPDIR to absolute path
+ [ "$TOPDIR" ] && TOPDIR=$(cd "$TOPDIR"; pwd)
+else
+ echo "Unable to find Makefile in $PWD, some variables might be empty." >&2
+fi
+
+# fallback, primarily read from Makefile
if [[ -z $TOPDIR ]]; then
TOPDIR=$(
while [[ ! $PWD -ef / ]]; do
@@ -41,6 +56,7 @@ if [[ -z $TOPDIR ]]; then
) || { echo "Can't find TOPDIR, where is rules.mk?" >&2; exit 1; }
export TOPDIR
fi
+
PATH=$TOPDIR/utils:$TOPDIR/utils/bin:$PATH
source functions.bash || exit 2
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:12
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/README.run | 11 +++++++++++
audit-test/rules.mk | 37 -------------------------------------
audit-test/utils/envcheck | 4 +++-
3 files changed, 14 insertions(+), 38 deletions(-)
diff --git a/audit-test/README.run b/audit-test/README.run
index c9875f4..fa215b9 100644
--- a/audit-test/README.run
+++ b/audit-test/README.run
@@ -7,6 +7,17 @@ Dependencies
The audit-test suite requires the following packages in order to run
on RHEL6.2:
+binutils
+cpp
+flex
+make
+gcc
+gcc-c++
+glibc-devel
+libattr-devel
+libstdc++-devel
+libcap-devel
+
audit-libs-devel
expect
libselinux-devel
diff --git a/audit-test/rules.mk b/audit-test/rules.mk
index 16410b5..4a7ab9e 100644
--- a/audit-test/rules.mk
+++ b/audit-test/rules.mk
@@ -218,29 +218,6 @@ _distclean: clean
distclean: _distclean
-##########################################################################
-# RPM dependency checking
-##########################################################################
-
-# These are assumed to be the base requirements for all the tests. Requirements
-# can be refined in individual Makefiles by appending (+=) or overriding (=)
-# the RPMS variable.
-RPMS = binutils \
- cpp \
- expect \
- flex \
- gcc \
- gcc-c++ \
- glibc-devel \
- libattr-devel \
- libstdc++-devel \
- libcap-devel \
- make \
- audit-libs-devel
-ifneq ($(findstring $(MACHINE),$(IP)),)
-RPMS += gcc-64bit
-endif
-
# This can be augmented per directory to check things other than the default
# list in "verify". (In fact some things should be moved from that list to the
# appropriate directory)
@@ -256,22 +233,8 @@ verify:
echo "please set 'acl' for this filesystem'"; \
exit 1; \
fi
- @echo "-----------------------"
- @echo "Checking installed rpms"
- @echo "-----------------------"
- @if ! rpm -q $$($(MAKE) --no-print-directory showrpms); then \
- echo "Please install the missing rpms"; \
- exit 1; \
- fi
- @echo "-----------------------"
@echo "Looks good!"
-showrpms:
- @$(MAKE) --no-print-directory _showrpms | xargs -n1 echo | sort -u
-
-_showrpms: subdirs_quiet
- @echo "$(RPMS)"
-
##########################################################################
# Dependency rules
##########################################################################
diff --git a/audit-test/utils/envcheck b/audit-test/utils/envcheck
index c48e463..7c0e490 100755
--- a/audit-test/utils/envcheck
+++ b/audit-test/utils/envcheck
@@ -167,7 +167,9 @@ check_rpm_deps() {
}
# from README.run
- local rpms="audit-libs-devel expect libselinux-devel perl-devel \
+ local rpms="binutils cpp flex make gcc gcc-c++ glibc-devel libattr-devel \
+ libstdc++-devel libcap-devel \
+ audit-libs-devel expect libselinux-devel perl-devel \
perl-Expect perl-IO-Tty"
for rpm in $rpms; do
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:14
|
The mount options verified by this target are highly fs-specific and relevant only to ext* filesystems. This target therefore fails on ie. RHEL7, which uses xfs. Even on ext* filesystems, these options don't have to be specified as mount options, in fact the *defaults* for mke2fs are to enable them in the metadata (see tune2fs -l /dev/sdX | grep 'Default mount'). Signed-off-by: Jiri Jaburek <jja...@re...> --- audit-test/rules.mk | 20 +++----------------- audit-test/trustedprograms/tests/policy/Makefile | 3 +-- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/audit-test/rules.mk b/audit-test/rules.mk index 4a7ab9e..daedd98 100644 --- a/audit-test/rules.mk +++ b/audit-test/rules.mk @@ -102,8 +102,7 @@ endif ########################################################################## .PHONY: all run \ - clean distclean _clean _distclean \ - msgque rmlogs showrpms showrpms2 + clean distclean verify _clean _distclean _verify all: deps subdirs $(ALL_AR) $(ALL_EXE) $(ALL_SO) @@ -218,22 +217,9 @@ _distclean: clean distclean: _distclean -# This can be augmented per directory to check things other than the default -# list in "verify". (In fact some things should be moved from that list to the -# appropriate directory) -verifyme: subdirs +_verify: -verify: - $(MAKE) verifyme - @if ! mount | grep -q "^$$(df . | head -n2 | tail -n1 | cut -f1 -d\ ) .*(.*user_xattr"; then \ - echo "please set 'user_xattr' for this filesystem'"; \ - exit 1; \ - fi - @if ! mount | grep -q "^$$(df . | head -n2 | tail -n1 | cut -f1 -d\ ) .*(.*acl"; then \ - echo "please set 'acl' for this filesystem'"; \ - exit 1; \ - fi - @echo "Looks good!" +verify: _verify ########################################################################## # Dependency rules diff --git a/audit-test/trustedprograms/tests/policy/Makefile b/audit-test/trustedprograms/tests/policy/Makefile index a113fc7..194a6cb 100644 --- a/audit-test/trustedprograms/tests/policy/Makefile +++ b/audit-test/trustedprograms/tests/policy/Makefile @@ -37,12 +37,11 @@ TEST_BASEDIR := /usr/local/eal4_testing # # targets # -.PHONY: verifyme verify distclean +.PHONY: verify distclean # base SELinux module targets include $(SELINUX_DEV_BASEDIR)/Makefile -verifyme: verify verify: @echo "Checking system for basic requirements" @echo -n " SELinux policy RPM version ($(SELINUX_POLICY_RPM)): "; \ -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:17
|
From: Miroslav Vadkerti <mva...@re...>
In some occassions the PASS can be on other line then the test
number. Grepping only PASS on the end should be quite safe in
rollup log.
Signed-off-by: Miroslav Vadkerti <mva...@re...>
---
audit-test/utils/run.bash | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/audit-test/utils/run.bash b/audit-test/utils/run.bash
index 451b5e6..aeba0a1 100755
--- a/audit-test/utils/run.bash
+++ b/audit-test/utils/run.bash
@@ -581,7 +581,7 @@ function rerun_test {
[ ! -f "$opt_logdir/rollup.log.$1" ] && return 0
# if test passed do not run
- grep -q "\[[0-9]\+\].*PASS[[:space:]]*$" $opt_logdir/rollup.log.$1 && return 1
+ grep -q ".*PASS[[:space:]]*$" $opt_logdir/rollup.log.$1 && return 1
return 0
}
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:20
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/envcheck | 13 +++++++------
audit-test/utils/run.bash | 3 +++
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/audit-test/utils/envcheck b/audit-test/utils/envcheck
index 7c0e490..a09b60f 100755
--- a/audit-test/utils/envcheck
+++ b/audit-test/utils/envcheck
@@ -60,6 +60,7 @@
# $3 = optional cmd text to show instead of $1
# returns the command's exit code
# and sets CHECK_FAILED var to nonempty value upon fail
+incolor() { [ -t 1 -a "$(tput colors)" -ge 8 ]; }
check()
{
[ $# -lt 1 ] && return 1
@@ -68,9 +69,9 @@ check()
# echo initial msg
if [ "$msg" ]; then
- echo -ne "\e[1m$msg\e[0m ..."
+ incolor && echo -ne "\e[1m$msg\e[0m ..." || echo -n "$msg ..."
else
- echo -ne "> \e[1m$1\e[0m ..."
+ incolor && echo -ne "> \e[1m$1\e[0m ..." || echo -n "> $1 ..."
fi
# run cmd, capture stderr
@@ -80,18 +81,18 @@ check()
ret=$?
if [ -z "$cmpret" ]; then
# ignored
- echo -e "\e[1;34mignored\e[0m"
+ incolor && echo -e "\e[1;34mignored\e[0m" || echo "ignored"
elif [ "$cmpret" -eq $ret ]; then
# pass
- echo -e "\e[1;32mpassed\e[0m"
+ incolor && echo -e "\e[1;32mpassed\e[0m" || echo "passed"
else
if [ "$WARNONLY" ]; then
# warn
- echo -e "\e[1;33mwarn\e[0m"
+ incolor && echo -e "\e[1;33mwarn\e[0m" || echo "warn"
[ "$out" ] && echo "$out"
else
# fail
- echo -e "\e[1;31mfailed\e[0m"
+ incolor && echo -e "\e[1;31mfailed\e[0m" || echo "failed"
[ "$out" ] && echo "$out"
CHECK_FAILED=1
fi
diff --git a/audit-test/utils/run.bash b/audit-test/utils/run.bash
index aeba0a1..c3a709f 100755
--- a/audit-test/utils/run.bash
+++ b/audit-test/utils/run.bash
@@ -421,6 +421,9 @@ function parse_cmdline {
true"
eval -- "$conf" || die "Error reading config file: $opt_config"
+ # Don't use color on non-tty devices or terminals without color support
+ [ -t 1 -a "$(tput colors)" -ge 8 ] || colorize() { monoize "$@"; }
+
if [[ -n $* ]]; then
# Additional cmdline indicates tests to run
dmsg "Filtering TESTS by cmdline"
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:23
|
Signed-off-by: Jiri Jaburek <jja...@re...> --- audit-test/kvm-iommu/pci_device.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/audit-test/kvm-iommu/pci_device.conf b/audit-test/kvm-iommu/pci_device.conf index 3c594ea..1f26593 100644 --- a/audit-test/kvm-iommu/pci_device.conf +++ b/audit-test/kvm-iommu/pci_device.conf @@ -12,5 +12,8 @@ # $ lspci # $ virsh nodedev-list --tree # $ virsh nodedev-dumpxml pci_0000_03_00_0 +# or +# $ ls /sys/bus/pci/devices +# $ ls -d /sys/bus/pci/devices/*/net/* # PCI NICs only # pci_device="XXXX:XX:XX.X" -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:27
|
From: Miroslav Vadkerti <mva...@re...> New allowed transition from qemu_t/svirt_t to prelink_mask_t had been added in RHEL6.6. This change is fine according to our SELinux developers. The added SELinux domain is limited and should not cause any issues. See BZ#1103674 for more info. Signed-off-by: Miroslav Vadkerti <mva...@re...> --- audit-test/kvm/test_selinux_trans_from_qemu.bash | 2 +- audit-test/kvm/test_selinux_trans_from_svirt.bash | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/audit-test/kvm/test_selinux_trans_from_qemu.bash b/audit-test/kvm/test_selinux_trans_from_qemu.bash index b9c8118..1802223 100755 --- a/audit-test/kvm/test_selinux_trans_from_qemu.bash +++ b/audit-test/kvm/test_selinux_trans_from_qemu.bash @@ -38,7 +38,7 @@ if [[ $allowed_count -eq 0 ]]; then fi for type in $allowed; do - if [[ ! "$type" =~ smbd_t|ptchown_t|abrt_helper_t|virt_bridgehelper_t ]]; then + if [[ ! "$type" =~ smbd_t|ptchown_t|abrt_helper_t|virt_bridgehelper_t|prelink_mask_t ]]; then exit_fail fi done diff --git a/audit-test/kvm/test_selinux_trans_from_svirt.bash b/audit-test/kvm/test_selinux_trans_from_svirt.bash index 7f82fbe..380ace8 100755 --- a/audit-test/kvm/test_selinux_trans_from_svirt.bash +++ b/audit-test/kvm/test_selinux_trans_from_svirt.bash @@ -38,7 +38,7 @@ if [[ $allowed_count -eq 0 ]]; then fi for type in $allowed; do - if [[ ! "$type" =~ ptchown_t|abrt_helper_t|virt_bridgehelper_t ]]; then + if [[ ! "$type" =~ ptchown_t|abrt_helper_t|virt_bridgehelper_t|prelink_mask_t ]]; then exit_fail fi done -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:33
|
From: Miroslav Vadkerti <mva...@re...> On systems with very low entropy and almost no real generation the test timeouts after 40 minutes. Use rngd to generate entropy while the test is running. Signed-off-by: Miroslav Vadkerti <mva...@re...> --- audit-test/crypto/tests/test_ssh_sym.bash | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/audit-test/crypto/tests/test_ssh_sym.bash b/audit-test/crypto/tests/test_ssh_sym.bash index 0e89b6f..c2c9847 100755 --- a/audit-test/crypto/tests/test_ssh_sym.bash +++ b/audit-test/crypto/tests/test_ssh_sym.bash @@ -56,6 +56,11 @@ backup $SSHDCONF backup $CCCONF ssh_remove_screen $MPROFILE +# generate a little entropy with rngd to PASS the tests on low entropy +# systems +rngd -r /dev/urandom +prepend_cleanup "killall rngd" + # restart sshd to get default state with SSH_USE_STRONG_RNG enabled ssh_restart_daemon -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 09:46:34
|
From: Miroslav Vadkerti <mva...@re...> For consistency restore whole selinux context of files, not just the type/security level. Signed-off-by: Miroslav Vadkerti <mva...@re...> --- audit-test/utils/selinux-policy/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/audit-test/utils/selinux-policy/Makefile b/audit-test/utils/selinux-policy/Makefile index c6969eb..5cbe842 100644 --- a/audit-test/utils/selinux-policy/Makefile +++ b/audit-test/utils/selinux-policy/Makefile @@ -78,7 +78,7 @@ verify: echo "not installed"; \ fi; @echo -n " Number of LSPP test files labeled incorrectly: "; \ - restorecon -rvn $(TEST_BASEDIR) | wc -l; + restorecon -Frvn $(TEST_BASEDIR) | wc -l; # During this install a role is added to an SELinux user which we use # as a positive test of semanage. If this did not work correctly the @@ -135,7 +135,7 @@ relabel: @echo "Resetting file ownership in $(TEST_BASEDIR)" @chown -R root:root $(TEST_BASEDIR) @echo "Relabeling LSPP tests in $(TEST_BASEDIR)" - @restorecon -r $(TEST_BASEDIR) + @restorecon -Fr $(TEST_BASEDIR) # remove only generated files distclean: -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 10:09:02
|
Signed-off-by: Jiri Jaburek <jja...@re...> --- audit-test/utils/bin/Makefile | 2 -- audit-test/utils/bin/do_loop.c | 50 ------------------------------------ audit-test/utils/bin/do_loop_clear.c | 43 ------------------------------- 3 files changed, 95 deletions(-) delete mode 100644 audit-test/utils/bin/do_loop.c delete mode 100644 audit-test/utils/bin/do_loop_clear.c diff --git a/audit-test/utils/bin/Makefile b/audit-test/utils/bin/Makefile index 0cc04c9..bbead88 100644 --- a/audit-test/utils/bin/Makefile +++ b/audit-test/utils/bin/Makefile @@ -134,8 +134,6 @@ ALL_EXE = $(CAPS_EXE) \ do_linkat \ do_listxattr \ do_llistxattr \ - do_loop \ - do_loop_clear \ do_lremovexattr \ do_lsetxattr \ do_mount \ diff --git a/audit-test/utils/bin/do_loop.c b/audit-test/utils/bin/do_loop.c deleted file mode 100644 index b7bdb8a..0000000 --- a/audit-test/utils/bin/do_loop.c +++ /dev/null @@ -1,50 +0,0 @@ -/* (c) Copyright Hewlett-Packard Development Company, L.P., 2007 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of version 2 the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "includes.h" -#include <linux/loop.h> -#include <sys/ioctl.h> - -int main(int argc, char **argv) -{ - int fd, loop_fd; - - if (argc != 3) { - fprintf(stderr, "Usage:\n%s <file> <loop device>\n", argv[0]); - return TEST_ERROR; - } - - fd = open(argv[1], O_RDWR); - if (fd == -1) { - perror("do_loop: open fd"); - return TEST_ERROR; - } - - loop_fd = open(argv[2], O_RDWR); - if (loop_fd == -1) { - perror("do_loop: open loop_fd"); - return TEST_ERROR; - } - - if (ioctl(loop_fd, LOOP_SET_FD, fd) == -1) { - perror("do_loop: ioctl loop_set_fd"); - return TEST_ERROR; - } - - close(fd); - close(loop_fd); - - return 0; -} diff --git a/audit-test/utils/bin/do_loop_clear.c b/audit-test/utils/bin/do_loop_clear.c deleted file mode 100644 index 1b783c4..0000000 --- a/audit-test/utils/bin/do_loop_clear.c +++ /dev/null @@ -1,43 +0,0 @@ -/* (c) Copyright Hewlett-Packard Development Company, L.P., 2007 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of version 2 the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "includes.h" -#include <linux/loop.h> -#include <sys/ioctl.h> - -int main(int argc, char **argv) -{ - int loop_fd; - - if (argc != 2) { - fprintf(stderr, "Usage:\n%s <loop device>\n", argv[0]); - return TEST_ERROR; - } - - loop_fd = open(argv[1], O_RDWR); - if (loop_fd == -1) { - perror("do_loop: open loop_fd"); - return TEST_ERROR; - } - - if (ioctl(loop_fd, LOOP_CLR_FD) == -1) { - perror("do_loop: ioctl loop_clr_fd"); - return TEST_ERROR; - } - - close(loop_fd); - - return 0; -} -- 1.8.3.1 |
|
From: Jiri J. <jja...@re...> - 2014-09-23 10:29:17
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/bin/do_mount.c | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/audit-test/utils/bin/do_mount.c b/audit-test/utils/bin/do_mount.c
index d8267e5..f66ab8a 100644
--- a/audit-test/utils/bin/do_mount.c
+++ b/audit-test/utils/bin/do_mount.c
@@ -20,19 +20,35 @@ int main(int argc, char **argv)
{
int exitval, result;
void *data = NULL;
+ unsigned long def_flags = MS_MGC_VAL;
+ unsigned long flags = def_flags;
if (argc < 4) {
fprintf(stderr,
- "Usage:\n%s <source> <target> <type> [[fs|def]context=context]\n",
- argv[0]);
+ "Usage:\n%s <source> <target> <type> [data]\n"
+ "%s <source> <target> <type> [flags] [data]\n",
+ argv[0], argv[0]);
return 1;
}
- if (argc == 5)
- data = argv[4];
+ if (argc > 4) {
+ if (strstr(argv[4], "MS_BIND"))
+ flags |= MS_BIND;
+
+ /* add more flags here */
+
+ /* if no flags were specified, use the string as data */
+ if (flags == def_flags)
+ data = argv[4];
+ }
+
+ /* if at least one flag matched and an additional arg was
+ * specified, use it as data */
+ if (argc > 5 && flags != def_flags)
+ data = argv[5];
errno = 0;
- exitval = mount(argv[1], argv[2], argv[3], MS_MGC_VAL, data);
+ exitval = mount(argv[1], argv[2], argv[3], flags, data);
result = exitval < 0;
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
--
1.8.3.1
|
|
From: Jiri J. <jja...@re...> - 2014-09-23 10:43:45
|
Signed-off-by: Jiri Jaburek <jja...@re...>
---
audit-test/utils/run.bash | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/audit-test/utils/run.bash b/audit-test/utils/run.bash
index 7106479..a258988 100755
--- a/audit-test/utils/run.bash
+++ b/audit-test/utils/run.bash
@@ -247,7 +247,7 @@ function startup {
killall -HUP auditd # reload config when auditd was already running
# Add the test user which is used for unprivileged tests
- killall -9 -u "$TEST_USER"
+ killall -9 -u "$TEST_USER" &>/dev/null
userdel -Z -rf "$TEST_USER" &>/dev/null
groupdel "$TEST_USER" &>/dev/null
dmsg "Adding group $TEST_USER"
@@ -258,7 +258,7 @@ function startup {
faillock --user "$TEST_USER" --reset
# Add the test user which is in sysadm_r
- killall -9 -u "$TEST_ADMIN"
+ killall -9 -u "$TEST_ADMIN" &>/dev/null
userdel -Z -rf "$TEST_ADMIN" &>/dev/null
groupdel "$TEST_ADMIN" &>/dev/null
dmsg "Adding group $TEST_ADMIN"
@@ -288,7 +288,7 @@ function cleanup {
for RUSER in $TEST_USER $TEST_ADMIN; do
# Kill all processes of the user
dmsg "Killing all processes for $RUSER"
- killall -9 -u "$RUSER"
+ killall -9 -u "$RUSER" &>/dev/null
# Remove the test user
dmsg "Removing user $RUSER"
userdel -Z -rf "$RUSER" &>/dev/null
--
1.8.3.1
|
|
From: Linda K. <lin...@hp...> - 2014-09-24 16:50:32
|
Hi Jiri, Just wanted to let you know that I will take a look at your patches but I just got back from traveling and I'm a little behind so it may take me another day or so to get to them. I'm sure they're fine but I'd like to look anyway. Thanks for all your work on this, -- ljk On 9/23/2014 5:43 AM, Jiri Jaburek wrote: > Hello all, > another batch of fixes and small improvements we've made during the > last 10 months (or so), all of them should be fully backwards > compatible. > > Brief description (with patch numbers): > > - forgotten augrok fix for recent upstream code (01) > - documentation improvements (02-04) > - stronger passwords for testing (05-08) > - various audit-* fixes for later rhel6+ releases (09-11) > - proper test user cleanup / suite resilience (12-14) > - various syscall wrapper improvements (15-34) > - make system related changes (35-40) > - other uncategorized fixes (41-46) > > As you can see, most of the patches are related to syscall wrapper > improvements - those are mostly scope-limited functionality > enhancements for existing wrappers. > > 2.4% audit-test/misc/tests/ > 2.3% audit-test/syscalls/ > 12.5% audit-test/trustedprograms/tests/ > 65.9% audit-test/utils/bin/ > 5.3% audit-test/utils/ > 10.2% audit-test/ > > The patches have been tested on RHEL6.5 without any major issues. > Attached via In-Reply-To/References to this mail. > > Thanks for the review, > Jiri > > ------------------------------------------------------------------------------ > Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer > Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports > Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper > Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer > http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk > _______________________________________________ > Audit-test-developer mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audit-test-developer > |
|
From: Jiri J. <jja...@re...> - 2014-10-06 13:57:11
|
On 09/24/2014 06:50 PM, Linda Knippers wrote: > Hi Jiri, > > Just wanted to let you know that I will take a look at your patches > but I just got back from traveling and I'm a little behind so it may > take me another day or so to get to them. I'm sure they're fine but > I'd like to look anyway. > Hi Linda, just want you to know that if you run into problems while testing the patchset (if you do such thing), please feel free to ask about possible problems. Thanks, Jiri |
|
From: Miroslav V. <mva...@re...> - 2014-10-20 12:35:44
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi everyone, As there were no comments on this patchset, we will push it to upstream after 7 days from now. The patchset is tested by RH and we already use it for testing. Thanks and best regards, /M On 09/23/2014 11:43 AM, Jiri Jaburek wrote: > Hello all, another batch of fixes and small improvements we've made during the last 10 months > (or so), all of them should be fully backwards compatible. > > Brief description (with patch numbers): > > - forgotten augrok fix for recent upstream code (01) - documentation improvements (02-04) - > stronger passwords for testing (05-08) - various audit-* fixes for later rhel6+ releases > (09-11) - proper test user cleanup / suite resilience (12-14) - various syscall wrapper > improvements (15-34) - make system related changes (35-40) - other uncategorized fixes (41-46) > > As you can see, most of the patches are related to syscall wrapper improvements - those are > mostly scope-limited functionality enhancements for existing wrappers. > > 2.4% audit-test/misc/tests/ 2.3% audit-test/syscalls/ 12.5% audit-test/trustedprograms/tests/ > 65.9% audit-test/utils/bin/ 5.3% audit-test/utils/ 10.2% audit-test/ > > The patches have been tested on RHEL6.5 without any major issues. Attached via > In-Reply-To/References to this mail. > > Thanks for the review, Jiri > > ------------------------------------------------------------------------------ Meet PCI DSS 3.0 > Compliance Requirements with EventLog Analyzer Achieve PCI DSS 3.0 Compliant Status with > Out-of-the-box PCI DSS Reports Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White > paper Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer > http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk > _______________________________________________ Audit-test-developer mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audit-test-developer > - -- Miroslav Vadkerti :: Senior Quality Assurance Engineer / RHCSS :: BaseOS QE - Security Phone +420 532 294 129 :: CR cell +420 776 864 252 :: SR cell +421 904 135 440 IRC mvadkert at #qe #urt #brno #rpmdiff :: GnuPG ID 0x25881087 at pgp.mit.edu Red Hat s.r.o, Purky?ova 99/71, 612 45, Brno, Czech Republic -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJURQGSAAoJEBliWhMliBCHDL8IAM6oV7Hox6binyBTyOjL/htv 3s993q0QABbkMe0A7vh/FecDQqmrHXjdar3wkCbrsMLqaIR+VyrpZ+eB0s408k3b A+jfKt2oLzqM0jAF3ukrdEq8R7EqGeFD1GVZ96H8hDjW1fT9qdJWel8m79gTRU1y 4CdjsLDcE6qhQhKmi4pl0n0BhATi3XZZKLat3tmu9ED6t3/cw7miX8B3qTwsvVUI aN5Wz0N6M0mhaKQSg8kxwWmCZ67Jn6BhPOCjHtUwRgDUUqcVOjSl1eaEnF09ysGL iNxksrgeY/xCYQpfTqkdJ1aNSXZ6ZhD10IFm1YS1Eo0MhgXDlq7/b5e0IfL43eA= =d6Hq -----END PGP SIGNATURE----- |