From fe3d7a957895a12f666a3ad4fb6c190ab6d0cdde Mon Sep 17 00:00:00 2001 From: Thibault Godouet Date: Sun, 10 Apr 2011 14:57:17 +0100 Subject: [PATCH] Added test programs -- some could later be used as basis for unit-tests --- .gitignore | 4 ++++ tests/test-open | Bin 0 -> 8336 bytes tests/test-open.c | 13 ++++++++++ tests/test-types | Bin 0 -> 8305 bytes tests/test-types.c | 15 ++++++++++++ tests/test-uidgid | Bin 0 -> 8569 bytes tests/test-uidgid.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 89 insertions(+) create mode 100755 tests/test-open create mode 100644 tests/test-open.c create mode 100755 tests/test-types create mode 100644 tests/test-types.c create mode 100755 tests/test-uidgid create mode 100644 tests/test-uidgid.c diff --git a/.gitignore b/.gitignore index 93a7e3a..241d8c8 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ doc/fr/HTML/* doc/fr/man/* doc/fr/txt/* configure +tests/test-open* +tests/test-types* +tests/test-uidgid* + diff --git a/tests/test-open b/tests/test-open new file mode 100755 index 0000000000000000000000000000000000000000..d134d2a8be211911d75ee5b8840bb6b9cc23e93f GIT binary patch literal 8336 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 S*me{7^vhOkLddINmGj>p1<>XI literal 0 HcmV?d00001 diff --git a/tests/test-open.c b/tests/test-open.c new file mode 100644 index 0000000..349d0a9 --- /dev/null +++ b/tests/test-open.c @@ -0,0 +1,13 @@ +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + int fd; + if ( (fd = open("/tmp/test", O_RDWR | O_CREAT, (mode_t) 0)) < 0 ) + perror("open()"); + + return 0; +} diff --git a/tests/test-types b/tests/test-types new file mode 100755 index 0000000000000000000000000000000000000000..85b70d835982eb4112602cc0b8ced3c3c19c1b30 GIT binary patch literal 8305 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 IEW1hk8-Z{B&j0`b literal 0 HcmV?d00001 diff --git a/tests/test-types.c b/tests/test-types.c new file mode 100644 index 0000000..c3802cd --- /dev/null +++ b/tests/test-types.c @@ -0,0 +1,15 @@ +#include +#include +#include +#include + + +int main(int argc, char **argv) { + + long a = LONG_MAX-10; + unsigned long b = a; + long c = b; + + printf("a=%ld %lu %lx b=%ld %lu %lx c=%ld %lu %lx LONG_MAX=%ld %lu %lx ULONG_MAX=%ld %lu %lx\n", a,a,a,b,b,b,c,c,c,LONG_MAX,LONG_MAX,LONG_MAX,ULONG_MAX,ULONG_MAX,ULONG_MAX); + +} diff --git a/tests/test-uidgid b/tests/test-uidgid new file mode 100755 index 0000000000000000000000000000000000000000..1c9e27932663ff5725fbafcb4be4dbdb6cc47817 GIT binary patch literal 8569 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 HxzYX$Vv7=9 literal 0 HcmV?d00001 diff --git a/tests/test-uidgid.c b/tests/test-uidgid.c new file mode 100644 index 0000000..56d1d1a --- /dev/null +++ b/tests/test-uidgid.c @@ -0,0 +1,57 @@ +#include +#include +#include + +// if run as user and suid fcron sgid fcron: can set(e)uid() from/to user/fcron back and forth +// if run as root and suid fcron sgid fcron: can seteuid() from/to root/fcron back and forth BUT CANNOT setuid back to root +// if run as user and suid root sgid root: can seteuid() from/to root/fcron back and forth BUT CANNOT setuid back to root +// if run as root and suid root sgid root: can set(e)uid() from/to user/fcron back and forth (i.e. always stay uid/euid 0!) + + +int main(int argc, char *argv[]) { + uid_t uid = getuid(); + uid_t euid = geteuid(); + gid_t gid = getgid(); + gid_t egid = getegid(); + + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("seteuid(uid)\n"); + if ( seteuid(uid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("seteuid(euid)\n"); + if ( seteuid(euid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("seteuid(uid)\n"); + if ( seteuid(uid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("seteuid(euid)\n"); + if ( seteuid(euid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("setuid(uid)\n"); + if ( setuid(uid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("setuid(euid)\n"); + if ( setuid(euid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("setuid(uid)\n"); + if ( setuid(uid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + printf("setuid(euid)\n"); + if ( setuid(euid) < 0 ) return 1; + printf("=== uid=%d gid=%d euid=%d egid=%d\n", getuid(), getgid(), geteuid(), getegid()); + + + printf("=== DONE\n"); + + return 0; + +} + -- 2.50.1