[PATCH 0/1] MR3149: widl: Don't crash if an interface is missing an uuid
From: Fabian Maurer <dark.shadow4(a)web.de> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55123 --- tools/widl/client.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/widl/client.c b/tools/widl/client.c index 704be91cb78..db17d07787b 100644 --- a/tools/widl/client.c +++ b/tools/widl/client.c @@ -440,6 +440,9 @@ static void write_clientinterfacedecl(type_t *iface) const struct uuid *uuid = get_attrp(iface->attrs, ATTR_UUID); const str_list_t *endpoints = get_attrp(iface->attrs, ATTR_ENDPOINT); + if (!uuid) + error_at( &iface->where, "cannot write client interface, no uuid found for interface %s.\n", iface->name ); + if (endpoints) write_endpoints( client, iface->name, endpoints ); print_client("static const RPC_CLIENT_INTERFACE %s___RpcClientInterface =\n", iface->name ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3149
Rémi Bernon (@rbernon) commented about tools/widl/client.c:
const struct uuid *uuid = get_attrp(iface->attrs, ATTR_UUID); const str_list_t *endpoints = get_attrp(iface->attrs, ATTR_ENDPOINT);
+ if (!uuid) + error_at( &iface->where, "cannot write client interface, no uuid found for interface %s.\n", iface->name );
I think it'd be better to do that in parser.y `check_functions`. You'd there check that either the `[local]` or `[uuid]` attributes are set, because local interfaces are apparently allowed to not have one. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3149#note_36755
participants (3)
-
Fabian Maurer -
Fabian Maurer (@DarkShadow44) -
Rémi Bernon