summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Douglas Scott <idscott@system76.com>2022-07-12 09:12:33 -0700
committerIan Douglas Scott <idscott@system76.com>2022-07-14 08:10:38 -0700
commit13b05c9ed1570765923a28b277ca385001c2b5c6 (patch)
treee24e90ad5257b49943c81fb8d5560742a0a8d44b /src
parent7cdc20cee6cb967c1975896cb60bcc9d1221819a (diff)
downloadwayland-13b05c9ed1570765923a28b277ca385001c2b5c6.tar.gz
Do not allow nullable arrays, which were not correctly implemented
Nullable arrays, which are not used anywhere, were marshalled the same way as an empty non-null array. The demarshalling logic did not recognize anything as a null array. Given this, it seems better to just explicitly not support it. Fixes https://gitlab.freedesktop.org/wayland/wayland/-/issues/306. Signed-off-by: Ian Douglas Scott <idscott@system76.com>
Diffstat (limited to 'src')
-rw-r--r--src/connection.c2
-rw-r--r--src/scanner.c3
2 files changed, 2 insertions, 3 deletions
diff --git a/src/connection.c b/src/connection.c
index bf97676..594f2e9 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -636,7 +636,7 @@ wl_closure_marshal(struct wl_object *sender, uint32_t opcode,
closure->args[i].n = object ? object->id : 0;
break;
case 'a':
- if (!arg.nullable && args[i].a == NULL)
+ if (args[i].a == NULL)
goto err_null;
break;
case 'h':
diff --git a/src/scanner.c b/src/scanner.c
index 6a95603..551d817 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -411,11 +411,10 @@ static bool
is_nullable_type(struct arg *arg)
{
switch (arg->type) {
- /* Strings, objects, and arrays are possibly nullable */
+ /* Strings and objects are possibly nullable */
case STRING:
case OBJECT:
case NEW_ID:
- case ARRAY:
return true;
default:
return false;