aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Douglas Scott <idscott@system76.com>2022-07-14 08:36:21 -0700
committerIan Douglas Scott <idscott@system76.com>2022-07-14 08:38:49 -0700
commit971f8e4ace3d4080340f43574043c31f46db312f (patch)
tree4d543a3ac6c83d899ec1c3d6878b0c5f39fb20e3
parentDo not allow nullable arrays, which were not correctly implemented (diff)
downloadwayland-971f8e4ace3d4080340f43574043c31f46db312f.tar
wayland-971f8e4ace3d4080340f43574043c31f46db312f.tar.gz
wayland-971f8e4ace3d4080340f43574043c31f46db312f.tar.bz2
wayland-971f8e4ace3d4080340f43574043c31f46db312f.tar.lz
wayland-971f8e4ace3d4080340f43574043c31f46db312f.tar.xz
wayland-971f8e4ace3d4080340f43574043c31f46db312f.tar.zst
wayland-971f8e4ace3d4080340f43574043c31f46db312f.zip
Do not allow nullable `new_id`
The usefulness of this is limited, and `libwayland-client` doesn't provide a way to pass a null `new_id` since the id is generated by the library and given to the caller as the return value. Signed-off-by: Ian Douglas Scott <idscott@system76.com>
-rw-r--r--src/connection.c4
-rw-r--r--src/scanner.c1
-rw-r--r--tests/connection-test.c3
-rw-r--r--tests/message-test.c4
4 files changed, 4 insertions, 8 deletions
diff --git a/src/connection.c b/src/connection.c
index 594f2e9..ceaeac1 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -630,7 +630,7 @@ wl_closure_marshal(struct wl_object *sender, uint32_t opcode,
break;
case 'n':
object = args[i].o;
- if (!arg.nullable && object == NULL)
+ if (object == NULL)
goto err_null;
closure->args[i].n = object ? object->id : 0;
@@ -799,7 +799,7 @@ wl_connection_demarshal(struct wl_connection *connection,
id = *p++;
closure->args[i].n = id;
- if (id == 0 && !arg.nullable) {
+ if (id == 0) {
wl_log("NULL new ID received on non-nullable "
"type, message %s(%s)\n", message->name,
message->signature);
diff --git a/src/scanner.c b/src/scanner.c
index 551d817..da8adea 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -414,7 +414,6 @@ is_nullable_type(struct arg *arg)
/* Strings and objects are possibly nullable */
case STRING:
case OBJECT:
- case NEW_ID:
return true;
default:
return false;
diff --git a/tests/connection-test.c b/tests/connection-test.c
index 592e27e..9762e0d 100644
--- a/tests/connection-test.c
+++ b/tests/connection-test.c
@@ -245,9 +245,6 @@ TEST(connection_marshal)
marshal(&data, "n", 12, &object);
assert(data.buffer[2] == object.id);
- marshal(&data, "?n", 12, NULL);
- assert(data.buffer[2] == 0);
-
array.data = (void *) text;
array.size = sizeof text;
marshal(&data, "a", 20, &array);
diff --git a/tests/message-test.c b/tests/message-test.c
index 40293a9..86f387a 100644
--- a/tests/message-test.c
+++ b/tests/message-test.c
@@ -63,8 +63,8 @@ TEST(message_count_arrays)
{ "middle", "iufasonh", NULL },
{ "multiple", "aaiufaasonhaa", NULL },
{ "leading_version", "2aaiufaasonhaa", NULL },
- { "among_nullables", "iufsa?oa?nah", NULL },
- { "all_mixed", "2aiufas?oa?na", NULL },
+ { "among_nullables", "iufsa?oa?sah", NULL },
+ { "all_mixed", "2aiufas?oa?sa", NULL },
};
const struct {
const struct wl_message *message;