diff options
author | Ian Douglas Scott <idscott@system76.com> | 2022-07-12 09:12:33 -0700 |
---|---|---|
committer | Ian Douglas Scott <idscott@system76.com> | 2022-07-14 08:10:38 -0700 |
commit | 13b05c9ed1570765923a28b277ca385001c2b5c6 (patch) | |
tree | e24e90ad5257b49943c81fb8d5560742a0a8d44b /src | |
parent | 7cdc20cee6cb967c1975896cb60bcc9d1221819a (diff) | |
download | wayland-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.c | 2 | ||||
-rw-r--r-- | src/scanner.c | 3 |
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; |