mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-09 20:30:15 +01:00
xwayland: Check for duplicate output names
Even though the name provided by either xdg-output or wl_output are
guaranteed to be unique, that might not be the case with output names
between different protocols, such as the one offered for DRM lease.
To avoid running into name conflicts, check that no other existing
output of the same name exists prior to changing the output name.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
(cherry picked from commit d36f66f15d)
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1494>
This commit is contained in:
parent
158246a0af
commit
aa17d7eba6
1 changed files with 21 additions and 0 deletions
|
|
@ -685,6 +685,9 @@ void
|
|||
xwl_output_set_name(struct xwl_output *xwl_output, const char *name)
|
||||
{
|
||||
struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
|
||||
rrScrPrivPtr pScrPriv;
|
||||
RRLeasePtr lease;
|
||||
int i;
|
||||
|
||||
if (xwl_output->randr_output == NULL)
|
||||
return; /* rootful */
|
||||
|
|
@ -695,6 +698,24 @@ xwl_output_set_name(struct xwl_output *xwl_output, const char *name)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Check for duplicate names to be safe */
|
||||
pScrPriv = rrGetScrPriv(xwl_screen->screen);
|
||||
for (i = 0; i < pScrPriv->numOutputs; i++) {
|
||||
if (!strcmp(name, pScrPriv->outputs[i]->name)) {
|
||||
ErrorF("An output named '%s' already exists", name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* And leases' names as well */
|
||||
xorg_list_for_each_entry(lease, &pScrPriv->leases, list) {
|
||||
for (i = 0; i < lease->numOutputs; i++) {
|
||||
if (!strcmp(name, pScrPriv->outputs[i]->name)) {
|
||||
ErrorF("A lease output named '%s' already exists", name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(xwl_output->randr_output->name, MAX_OUTPUT_NAME, "%s", name);
|
||||
xwl_output->randr_output->nameLength = strlen(xwl_output->randr_output->name);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue