From: Thibault Godouet Date: Sun, 10 Apr 2011 13:57:17 +0000 (+0100) Subject: Added test programs -- some could later be used as basis for unit-tests X-Git-Tag: ver3_1_0~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fe3d7a957895a12f666a3ad4fb6c190ab6d0cdde;p=fcron Added test programs -- some could later be used as basis for unit-tests --- 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 0000000..d134d2a Binary files /dev/null and b/tests/test-open differ 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 0000000..85b70d8 Binary files /dev/null and b/tests/test-types differ 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 0000000..1c9e279 Binary files /dev/null and b/tests/test-uidgid differ 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; + +} +