xkb: Prevent leaking of XKB geometry information on copy.
Currently shapes, sections and doodads may leak on copy. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Erkki Seppälä <erkki.seppala@vincit.fi> Signed-off-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
29d63ba175
commit
9c4aae2141
|
@ -1541,10 +1541,10 @@ _XkbCopyGeom(XkbDescPtr src, XkbDescPtr dst)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->geom->num_shapes) {
|
if (src->geom->num_shapes) {
|
||||||
tmp = calloc(src->geom->num_shapes, sizeof(XkbShapeRec));
|
/* Reallocate and clear all items. */
|
||||||
if (!tmp)
|
if (!XkbGeomRealloc((void **)&dst->geom->shapes, dst->geom->sz_shapes, src->geom->num_shapes,
|
||||||
|
sizeof(XkbShapeRec), XKB_GEOM_CLEAR_ALL))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
dst->geom->shapes = tmp;
|
|
||||||
|
|
||||||
for (i = 0, sshape = src->geom->shapes, dshape = dst->geom->shapes;
|
for (i = 0, sshape = src->geom->shapes, dshape = dst->geom->shapes;
|
||||||
i < src->geom->num_shapes;
|
i < src->geom->num_shapes;
|
||||||
|
@ -1661,7 +1661,6 @@ _XkbCopyGeom(XkbDescPtr src, XkbDescPtr dst)
|
||||||
}
|
}
|
||||||
|
|
||||||
dst->geom->num_sections = 0;
|
dst->geom->num_sections = 0;
|
||||||
dst->geom->sections = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->geom->num_sections) {
|
if (src->geom->num_sections) {
|
||||||
|
@ -1771,7 +1770,6 @@ _XkbCopyGeom(XkbDescPtr src, XkbDescPtr dst)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dst->geom->num_doodads = 0;
|
dst->geom->num_doodads = 0;
|
||||||
dst->geom->doodads = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->geom->num_doodads) {
|
if (src->geom->num_doodads) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user