* tests/ipc_shm.c: Additional checks for shmget syscall decoding. --- tests/ipc_shm.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/tests/ipc_shm.c b/tests/ipc_shm.c index 54723e2..80a8f0f 100644 --- a/tests/ipc_shm.c +++ b/tests/ipc_shm.c @@ -27,11 +27,15 @@ */ #include "tests.h" +#include <assert.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <sys/shm.h> +#include "xlat.h" +#include "xlat/shm_resource_flags.h" + static int id = -1; static void @@ -45,9 +49,25 @@ cleanup(void) int main(void) { + static const key_t bogus_key = (key_t)0xeca86420fdb97531LLU; + static const size_t bogus_size = 0xdec0ded1dec0ded2LLU; + static const int bogus_flags = 0xface1e55; + int rc; struct shmid_ds ds; + assert(shmget(bogus_key, bogus_size, bogus_flags) == -1); + printf("shmget\\(%#lx, %lu, %s%s%s%#x\\|%#04o\\) += %s\n", + (unsigned long)((sizeof(key_t) == sizeof(int)) ? + (unsigned)bogus_key : (unsigned long)bogus_key), + bogus_size, + IPC_CREAT & bogus_flags ? "IPC_CREAT\\|" : "", + IPC_EXCL & bogus_flags ? "IPC_EXCL\\|" : "", + SHM_HUGETLB & bogus_flags ? "SHM_HUGETLB\\|" : "", + bogus_flags & ~(0777 | IPC_CREAT | IPC_EXCL | SHM_HUGETLB), + bogus_flags & 0777, + sprintrc_grep(-1)); + id = shmget(IPC_PRIVATE, 1, 0600); if (id < 0) perror_msg_and_skip("shmget"); -- 1.7.10.4 ------------------------------------------------------------------------------ _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel