|
|
deef8a |
From b702ddfd448794f3ac5033c897a07da3de8f5fc7 Mon Sep 17 00:00:00 2001
|
|
|
deef8a |
From: "Dmitry V. Levin" <ldv@altlinux.org>
|
|
|
deef8a |
Date: Sun, 6 Dec 2020 08:00:00 +0000
|
|
|
deef8a |
Subject: [PATCH 159/162] tests: disable tests for invalid msgctl commands on
|
|
|
deef8a |
glibc >= 2.32
|
|
|
deef8a |
|
|
|
deef8a |
Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2,
|
|
|
deef8a |
glibc skips msgctl syscall invocations and returns EINVAL
|
|
|
deef8a |
for invalid msgctl commands.
|
|
|
deef8a |
|
|
|
deef8a |
* tests/ipc_msg.c [GLIBC_PREREQ_GE(2, 32)] (TEST_MSGCTL_BOGUS_CMD):
|
|
|
deef8a |
Define to 0.
|
|
|
deef8a |
[!TEST_MSGCTL_BOGUS_CMD] (TEST_MSGCTL_BOGUS_CMD): Define to 1.
|
|
|
deef8a |
(main) [!TEST_MSGCTL_BOGUS_CMD] (bogus_cmd): Do not define and do not
|
|
|
deef8a |
use.
|
|
|
deef8a |
---
|
|
|
deef8a |
tests/ipc_msg.c | 21 ++++++++++++++++++++-
|
|
|
deef8a |
1 file changed, 20 insertions(+), 1 deletion(-)
|
|
|
deef8a |
|
|
|
deef8a |
diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c
|
|
|
deef8a |
index f7c36cd..6a96a5f 100644
|
|
|
deef8a |
--- a/tests/ipc_msg.c
|
|
|
deef8a |
+++ b/tests/ipc_msg.c
|
|
|
deef8a |
@@ -21,6 +21,7 @@
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
#undef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
+#undef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
|
|
|
deef8a |
/*
|
|
|
deef8a |
* Starting with commit glibc-2.32~83, on every 32-bit architecture
|
|
|
deef8a |
@@ -50,9 +51,21 @@
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 0
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
+/*
|
|
|
deef8a |
+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2,
|
|
|
deef8a |
+ * glibc skips msgctl syscall invocations and returns EINVAL
|
|
|
deef8a |
+ * for invalid msgctl commands.
|
|
|
deef8a |
+ */
|
|
|
deef8a |
+#if GLIBC_PREREQ_GE(2, 32)
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 0
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+
|
|
|
deef8a |
#ifndef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 1
|
|
|
deef8a |
#endif
|
|
|
deef8a |
+#ifndef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 1
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if XLAT_RAW
|
|
|
deef8a |
# define str_ipc_excl_nowait "0xface1c00"
|
|
|
deef8a |
@@ -107,12 +120,16 @@ main(void)
|
|
|
deef8a |
static const key_t private_key =
|
|
|
deef8a |
(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
|
|
|
deef8a |
static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL;
|
|
|
deef8a |
+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static const int bogus_msgid = 0xfdb97531;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
static const int bogus_cmd = 0xdeadbeef;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static void * const bogus_addr = (void *) -1L;
|
|
|
deef8a |
#endif
|
|
|
deef8a |
- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
|
|
|
deef8a |
int rc;
|
|
|
deef8a |
struct msqid_ds ds;
|
|
|
deef8a |
@@ -129,9 +146,11 @@ main(void)
|
|
|
deef8a |
printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id);
|
|
|
deef8a |
atexit(cleanup);
|
|
|
deef8a |
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
rc = msgctl(bogus_msgid, bogus_cmd, NULL);
|
|
|
deef8a |
printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
|
|
|
deef8a |
bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
rc = msgctl(bogus_msgid, IPC_SET, bogus_addr);
|
|
|
deef8a |
diff --git a/tests-m32/ipc_msg.c b/tests-m32/ipc_msg.c
|
|
|
deef8a |
index f7c36cd..6a96a5f 100644
|
|
|
deef8a |
--- a/tests-m32/ipc_msg.c
|
|
|
deef8a |
+++ b/tests-m32/ipc_msg.c
|
|
|
deef8a |
@@ -21,6 +21,7 @@
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
#undef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
+#undef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
|
|
|
deef8a |
/*
|
|
|
deef8a |
* Starting with commit glibc-2.32~83, on every 32-bit architecture
|
|
|
deef8a |
@@ -50,9 +51,21 @@
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 0
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
+/*
|
|
|
deef8a |
+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2,
|
|
|
deef8a |
+ * glibc skips msgctl syscall invocations and returns EINVAL
|
|
|
deef8a |
+ * for invalid msgctl commands.
|
|
|
deef8a |
+ */
|
|
|
deef8a |
+#if GLIBC_PREREQ_GE(2, 32)
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 0
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+
|
|
|
deef8a |
#ifndef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 1
|
|
|
deef8a |
#endif
|
|
|
deef8a |
+#ifndef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 1
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if XLAT_RAW
|
|
|
deef8a |
# define str_ipc_excl_nowait "0xface1c00"
|
|
|
deef8a |
@@ -107,12 +120,16 @@ main(void)
|
|
|
deef8a |
static const key_t private_key =
|
|
|
deef8a |
(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
|
|
|
deef8a |
static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL;
|
|
|
deef8a |
+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static const int bogus_msgid = 0xfdb97531;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
static const int bogus_cmd = 0xdeadbeef;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static void * const bogus_addr = (void *) -1L;
|
|
|
deef8a |
#endif
|
|
|
deef8a |
- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
|
|
|
deef8a |
int rc;
|
|
|
deef8a |
struct msqid_ds ds;
|
|
|
deef8a |
@@ -129,9 +146,11 @@ main(void)
|
|
|
deef8a |
printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id);
|
|
|
deef8a |
atexit(cleanup);
|
|
|
deef8a |
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
rc = msgctl(bogus_msgid, bogus_cmd, NULL);
|
|
|
deef8a |
printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
|
|
|
deef8a |
bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
rc = msgctl(bogus_msgid, IPC_SET, bogus_addr);
|
|
|
deef8a |
diff --git a/tests-mx32/ipc_msg.c b/tests-mx32/ipc_msg.c
|
|
|
deef8a |
index f7c36cd..6a96a5f 100644
|
|
|
deef8a |
--- a/tests-mx32/ipc_msg.c
|
|
|
deef8a |
+++ b/tests-mx32/ipc_msg.c
|
|
|
deef8a |
@@ -21,6 +21,7 @@
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
#undef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
+#undef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
|
|
|
deef8a |
/*
|
|
|
deef8a |
* Starting with commit glibc-2.32~83, on every 32-bit architecture
|
|
|
deef8a |
@@ -50,9 +51,21 @@
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 0
|
|
|
deef8a |
#endif
|
|
|
deef8a |
|
|
|
deef8a |
+/*
|
|
|
deef8a |
+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2,
|
|
|
deef8a |
+ * glibc skips msgctl syscall invocations and returns EINVAL
|
|
|
deef8a |
+ * for invalid msgctl commands.
|
|
|
deef8a |
+ */
|
|
|
deef8a |
+#if GLIBC_PREREQ_GE(2, 32)
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 0
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+
|
|
|
deef8a |
#ifndef TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
# define TEST_MSGCTL_BOGUS_ADDR 1
|
|
|
deef8a |
#endif
|
|
|
deef8a |
+#ifndef TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
+# define TEST_MSGCTL_BOGUS_CMD 1
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if XLAT_RAW
|
|
|
deef8a |
# define str_ipc_excl_nowait "0xface1c00"
|
|
|
deef8a |
@@ -107,12 +120,16 @@ main(void)
|
|
|
deef8a |
static const key_t private_key =
|
|
|
deef8a |
(key_t) (0xffffffff00000000ULL | IPC_PRIVATE);
|
|
|
deef8a |
static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL;
|
|
|
deef8a |
+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static const int bogus_msgid = 0xfdb97531;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
static const int bogus_cmd = 0xdeadbeef;
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
static void * const bogus_addr = (void *) -1L;
|
|
|
deef8a |
#endif
|
|
|
deef8a |
- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
|
|
|
deef8a |
|
|
|
deef8a |
int rc;
|
|
|
deef8a |
struct msqid_ds ds;
|
|
|
deef8a |
@@ -129,9 +146,11 @@ main(void)
|
|
|
deef8a |
printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id);
|
|
|
deef8a |
atexit(cleanup);
|
|
|
deef8a |
|
|
|
deef8a |
+#if TEST_MSGCTL_BOGUS_CMD
|
|
|
deef8a |
rc = msgctl(bogus_msgid, bogus_cmd, NULL);
|
|
|
deef8a |
printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
|
|
|
deef8a |
bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
|
|
|
deef8a |
+#endif
|
|
|
deef8a |
|
|
|
deef8a |
#if TEST_MSGCTL_BOGUS_ADDR
|
|
|
deef8a |
rc = msgctl(bogus_msgid, IPC_SET, bogus_addr);
|
|
|
deef8a |
--
|
|
|
deef8a |
2.1.4
|
|
|
deef8a |
|