Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xwayland for openSUSE:Factory checked in at 2024-04-04 22:24:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xwayland (Old) and /work/SRC/openSUSE:Factory/.xwayland.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xwayland" Thu Apr 4 22:24:45 2024 rev:30 rq:1164509 version:23.2.5 Changes: -------- --- /work/SRC/openSUSE:Factory/xwayland/xwayland.changes 2024-02-23 16:41:35.943223622 +0100 +++ /work/SRC/openSUSE:Factory/.xwayland.new.1905/xwayland.changes 2024-04-04 22:25:25.265460854 +0200 @@ -1,0 +2,13 @@ +Thu Apr 4 08:07:32 UTC 2024 - Stefan Dirsch <sndir...@suse.com> + +- Security update 23.2.5 + This release contains the 3 security fixes that actually apply to + Xwayland reported in the security advisory of April 3rd 2024 + * CVE-2024-31080 + * CVE-2024-31081 + * CVE-2024-31083 + Additionally, it also contains a couple of other fixes, a copy/paste + error in the DeviceStateNotify event and a fix to enable buttons with + pointer gestures for backward compatibility with legacy X11 clients. + +------------------------------------------------------------------- Old: ---- xwayland-23.2.4.tar.xz xwayland-23.2.4.tar.xz.sig New: ---- xwayland-23.2.5.tar.xz xwayland-23.2.5.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xwayland.spec ++++++ --- /var/tmp/diff_new_pack.by7T5L/_old 2024-04-04 22:25:25.717477495 +0200 +++ /var/tmp/diff_new_pack.by7T5L/_new 2024-04-04 22:25:25.721477643 +0200 @@ -24,7 +24,7 @@ %endif Name: xwayland -Version: 23.2.4 +Version: 23.2.5 Release: 0 URL: http://xorg.freedesktop.org Summary: Xwayland Xserver ++++++ xwayland-23.2.4.tar.xz -> xwayland-23.2.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/Xi/xipassivegrab.c new/xwayland-23.2.5/Xi/xipassivegrab.c --- old/xwayland-23.2.4/Xi/xipassivegrab.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/Xi/xipassivegrab.c 2024-04-03 17:57:56.000000000 +0200 @@ -93,6 +93,7 @@ GrabParameters param; void *tmp; int mask_len; + uint32_t length; REQUEST(xXIPassiveGrabDeviceReq); REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq, @@ -247,9 +248,11 @@ } } + /* save the value before SRepXIPassiveGrabDevice swaps it */ + length = rep.length; WriteReplyToClient(client, sizeof(rep), &rep); if (rep.num_modifiers) - WriteToClient(client, rep.length * 4, modifiers_failed); + WriteToClient(client, length * 4, modifiers_failed); out: free(modifiers_failed); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/Xi/xiselectev.c new/xwayland-23.2.5/Xi/xiselectev.c --- old/xwayland-23.2.4/Xi/xiselectev.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/Xi/xiselectev.c 2024-04-03 17:57:56.000000000 +0200 @@ -349,6 +349,7 @@ InputClientsPtr others = NULL; xXIEventMask *evmask = NULL; DeviceIntPtr dev; + uint32_t length; REQUEST(xXIGetSelectedEventsReq); REQUEST_SIZE_MATCH(xXIGetSelectedEventsReq); @@ -418,10 +419,12 @@ } } + /* save the value before SRepXIGetSelectedEvents swaps it */ + length = reply.length; WriteReplyToClient(client, sizeof(xXIGetSelectedEventsReply), &reply); if (reply.num_masks) - WriteToClient(client, reply.length * 4, buffer); + WriteToClient(client, length * 4, buffer); free(buffer); return Success; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/dix/enterleave.c new/xwayland-23.2.5/dix/enterleave.c --- old/xwayland-23.2.4/dix/enterleave.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/dix/enterleave.c 2024-04-03 17:57:56.000000000 +0200 @@ -619,11 +619,11 @@ ev->first_valuator = first; switch (ev->num_valuators) { case 6: - ev->valuator2 = v->axisVal[first + 5]; + ev->valuator5 = v->axisVal[first + 5]; case 5: - ev->valuator2 = v->axisVal[first + 4]; + ev->valuator4 = v->axisVal[first + 4]; case 4: - ev->valuator2 = v->axisVal[first + 3]; + ev->valuator3 = v->axisVal[first + 3]; case 3: ev->valuator2 = v->axisVal[first + 2]; case 2: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/hw/xwayland/xwayland-input.c new/xwayland-23.2.5/hw/xwayland/xwayland-input.c --- old/xwayland-23.2.4/hw/xwayland/xwayland-input.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/hw/xwayland/xwayland-input.c 2024-04-03 17:57:56.000000000 +0200 @@ -313,6 +313,13 @@ axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X); axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y); + /* + * We'll never send buttons, but XGetPointerMapping might in certain + * situations make the client think we have no buttons. + */ + if (!init_pointer_buttons(device)) + return BadValue; + if (!InitValuatorClassDeviceStruct(device, NAXES, axes_labels, GetMotionHistorySize(), Relative)) return BadValue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/meson.build new/xwayland-23.2.5/meson.build --- old/xwayland-23.2.4/meson.build 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/meson.build 2024-04-03 17:57:56.000000000 +0200 @@ -3,10 +3,10 @@ 'buildtype=debugoptimized', 'c_std=gnu99', ], - version: '23.2.4', + version: '23.2.5', meson_version: '>= 0.52.0', ) -release_date = '2024-01-16' +release_date = '2024-04-03' add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc']) cc = meson.get_compiler('c') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/render/glyph.c new/xwayland-23.2.5/render/glyph.c --- old/xwayland-23.2.4/render/glyph.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/render/glyph.c 2024-04-03 17:57:56.000000000 +0200 @@ -245,10 +245,11 @@ } } -static void +void FreeGlyph(GlyphPtr glyph, int format) { CheckDuplicates(&globalGlyphs[format], "FreeGlyph"); + BUG_RETURN(glyph->refcnt == 0); if (--glyph->refcnt == 0) { GlyphRefPtr gr; int i; @@ -354,7 +355,7 @@ glyph = (GlyphPtr) malloc(size); if (!glyph) return 0; - glyph->refcnt = 0; + glyph->refcnt = 1; glyph->size = size + sizeof(xGlyphInfo); glyph->info = *gi; dixInitPrivates(glyph, (char *) glyph + head_size, PRIVATE_GLYPH); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/render/glyphstr.h new/xwayland-23.2.5/render/glyphstr.h --- old/xwayland-23.2.4/render/glyphstr.h 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/render/glyphstr.h 2024-04-03 17:57:56.000000000 +0200 @@ -102,6 +102,9 @@ extern void AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id); +extern void +FreeGlyph(GlyphPtr glyph, int format); + extern Bool DeleteGlyph(GlyphSetPtr glyphSet, Glyph id); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-23.2.4/render/render.c new/xwayland-23.2.5/render/render.c --- old/xwayland-23.2.4/render/render.c 2024-01-16 10:38:49.000000000 +0100 +++ new/xwayland-23.2.5/render/render.c 2024-04-03 17:57:56.000000000 +0200 @@ -1076,6 +1076,7 @@ if (glyph_new->glyph && glyph_new->glyph != DeletedGlyph) { glyph_new->found = TRUE; + ++glyph_new->glyph->refcnt; } else { GlyphPtr glyph; @@ -1168,8 +1169,10 @@ err = BadAlloc; goto bail; } - for (i = 0; i < nglyphs; i++) + for (i = 0; i < nglyphs; i++) { AddGlyph(glyphSet, glyphs[i].glyph, glyphs[i].id); + FreeGlyph(glyphs[i].glyph, glyphSet->fdepth); + } if (glyphsBase != glyphsLocal) free(glyphsBase); @@ -1179,9 +1182,13 @@ FreePicture((void *) pSrc, 0); if (pSrcPix) FreeScratchPixmapHeader(pSrcPix); - for (i = 0; i < nglyphs; i++) - if (glyphs[i].glyph && !glyphs[i].found) - free(glyphs[i].glyph); + for (i = 0; i < nglyphs; i++) { + if (glyphs[i].glyph) { + --glyphs[i].glyph->refcnt; + if (!glyphs[i].found) + free(glyphs[i].glyph); + } + } if (glyphsBase != glyphsLocal) free(glyphsBase); return err;