Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xwayland for openSUSE:Factory checked in at 2021-12-22 20:17:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xwayland (Old) and /work/SRC/openSUSE:Factory/.xwayland.new.2520 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xwayland" Wed Dec 22 20:17:56 2021 rev:8 rq:941877 version:21.1.4 Changes: -------- --- /work/SRC/openSUSE:Factory/xwayland/xwayland.changes 2021-11-10 21:46:05.263802028 +0100 +++ /work/SRC/openSUSE:Factory/.xwayland.new.2520/xwayland.changes 2021-12-22 20:18:55.751871309 +0100 @@ -1,0 +2,13 @@ +Tue Dec 14 15:44:46 UTC 2021 - Stefan Dirsch <sndir...@suse.com> + +- Update to version 21.1.4 + * Fixes for multiple input validation failures in X server extensions: + + CVE-2021-4008/ZDI-CAN-14192 SProcRenderCompositeGlyphs out-of-bounds access (boo#1193030) + + CVE-2021-4009/ZDI-CAN 14950 SProcXFixesCreatePointerBarrier out-of-bounds access (boo#1190487) + + CVE-2021-4010/ZDI-CAN-14951 SProcScreenSaverSuspend out-of-bounds access (boo#1190488) + + CVE-2021-4011/ZDI-CAN-14952 SwapCreateRegister out-of-bounds access (boo#1190489) + * This release also includes other fixes such as: + + Store EGLcontext to avoid superfluous eglMakeCurrent() calls + + Prefer EGLStream with NVIDIA proprietary driver if both GBM and EGLstream are available + +------------------------------------------------------------------- Old: ---- xwayland-21.1.3.tar.xz xwayland-21.1.3.tar.xz.sig New: ---- xwayland-21.1.4.tar.xz xwayland-21.1.4.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xwayland.spec ++++++ --- /var/tmp/diff_new_pack.tBa6vW/_old 2021-12-22 20:18:56.187871513 +0100 +++ /var/tmp/diff_new_pack.tBa6vW/_new 2021-12-22 20:18:56.199871519 +0100 @@ -24,7 +24,7 @@ %endif Name: xwayland -Version: 21.1.3 +Version: 21.1.4 Release: 0 URL: http://xorg.freedesktop.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ xwayland-21.1.3.tar.xz -> xwayland-21.1.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/Xext/saver.c new/xwayland-21.1.4/Xext/saver.c --- old/xwayland-21.1.3/Xext/saver.c 2021-11-08 11:37:14.823922000 +0100 +++ new/xwayland-21.1.4/Xext/saver.c 2021-12-14 15:00:58.259255000 +0100 @@ -1351,8 +1351,8 @@ REQUEST(xScreenSaverSuspendReq); swaps(&stuff->length); - swapl(&stuff->suspend); REQUEST_SIZE_MATCH(xScreenSaverSuspendReq); + swapl(&stuff->suspend); return ProcScreenSaverSuspend(client); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/hw/xwayland/xwayland-glamor-eglstream.c new/xwayland-21.1.4/hw/xwayland/xwayland-glamor-eglstream.c --- old/xwayland-21.1.3/hw/xwayland/xwayland-glamor-eglstream.c 2021-11-08 11:37:14.863922600 +0100 +++ new/xwayland-21.1.4/hw/xwayland/xwayland-glamor-eglstream.c 2021-12-14 15:00:58.297255300 +0100 @@ -753,12 +753,14 @@ xwl_eglstream_get(xwl_screen); if (xwl_eglstream->display == NULL) { - ErrorF("glamor: 'wl_eglstream_display' not supported\n"); + LogMessageVerb(X_INFO, 3, + "glamor: 'wl_eglstream_display' not supported\n"); return FALSE; } if (xwl_eglstream->controller == NULL) { - ErrorF("glamor: 'wl_eglstream_controller' not supported\n"); + LogMessageVerb(X_INFO, 3, + "glamor: 'wl_eglstream_controller' not supported\n"); return FALSE; } @@ -1144,7 +1146,7 @@ free(devices); out: if (!device) - ErrorF("glamor: No eglstream capable devices found\n"); + LogMessageVerb(X_INFO, 3, "glamor: No eglstream capable devices found\n"); return device; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/hw/xwayland/xwayland-glamor-gbm.c new/xwayland-21.1.4/hw/xwayland/xwayland-glamor-gbm.c --- old/xwayland-21.1.3/hw/xwayland/xwayland-glamor-gbm.c 2021-11-08 11:37:14.863922600 +0100 +++ new/xwayland-21.1.4/hw/xwayland/xwayland-glamor-gbm.c 2021-12-14 15:00:58.297255300 +0100 @@ -835,7 +835,7 @@ struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen); if (xwl_gbm->drm == NULL) { - ErrorF("glamor: 'wl_drm' not supported\n"); + LogMessageVerb(X_INFO, 3, "glamor: 'wl_drm' not supported\n"); return FALSE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/hw/xwayland/xwayland-glamor.c new/xwayland-21.1.4/hw/xwayland/xwayland-glamor.c --- old/xwayland-21.1.3/hw/xwayland/xwayland-glamor.c 2021-11-08 11:37:14.863922600 +0100 +++ new/xwayland-21.1.4/hw/xwayland/xwayland-glamor.c 2021-12-14 15:00:58.298255400 +0100 @@ -58,10 +58,12 @@ void xwl_glamor_egl_make_current(struct xwl_screen *xwl_screen) { - if (lastGLContext == xwl_screen->glamor_ctx) + EGLContext ctx = xwl_screen->glamor_ctx->ctx; + + if (lastGLContext == ctx) return; - lastGLContext = xwl_screen->glamor_ctx; + lastGLContext = ctx; xwl_screen->glamor_ctx->make_current(xwl_screen->glamor_ctx); } @@ -407,10 +409,12 @@ if (xwl_screen->gbm_backend.is_available && xwl_glamor_has_wl_interfaces(xwl_screen, &xwl_screen->gbm_backend)) { xwl_screen->egl_backend = &xwl_screen->gbm_backend; + LogMessageVerb(X_INFO, 3, "glamor: Using GBM backend\n"); return TRUE; } else - ErrorF("Missing Wayland requirements for glamor GBM backend\n"); + LogMessageVerb(X_INFO, 3, + "Missing Wayland requirements for glamor GBM backend\n"); #endif return FALSE; @@ -423,10 +427,12 @@ if (xwl_screen->eglstream_backend.is_available && xwl_glamor_has_wl_interfaces(xwl_screen, &xwl_screen->eglstream_backend)) { xwl_screen->egl_backend = &xwl_screen->eglstream_backend; + LogMessageVerb(X_INFO, 3, "glamor: Using EGLStream backend\n"); return TRUE; } else - ErrorF("Missing Wayland requirements for glamor EGLStream backend\n"); + LogMessageVerb(X_INFO, 3, + "Missing Wayland requirements for glamor EGLStream backend\n"); #endif return FALSE; @@ -435,14 +441,10 @@ void xwl_glamor_select_backend(struct xwl_screen *xwl_screen, Bool use_eglstream) { - if (use_eglstream) { - if (!xwl_glamor_select_eglstream_backend(xwl_screen)) + if (!xwl_glamor_select_eglstream_backend(xwl_screen)) { + if (!use_eglstream) xwl_glamor_select_gbm_backend(xwl_screen); } - else { - if (!xwl_glamor_select_gbm_backend(xwl_screen)) - xwl_glamor_select_eglstream_backend(xwl_screen); - } } Bool diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/meson.build new/xwayland-21.1.4/meson.build --- old/xwayland-21.1.3/meson.build 2021-11-08 11:37:14.872922700 +0100 +++ new/xwayland-21.1.4/meson.build 2021-12-14 15:00:58.306255300 +0100 @@ -3,7 +3,7 @@ 'buildtype=debugoptimized', 'c_std=gnu99', ], - version: '21.1.3', + version: '21.1.4', meson_version: '>= 0.46.0', ) add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/record/record.c new/xwayland-21.1.4/record/record.c --- old/xwayland-21.1.3/record/record.c 2021-11-08 11:37:14.884922700 +0100 +++ new/xwayland-21.1.4/record/record.c 2021-12-14 15:00:58.317255500 +0100 @@ -2516,8 +2516,8 @@ swapl(pClientID); } if (stuff->nRanges > - client->req_len - bytes_to_int32(sz_xRecordRegisterClientsReq) - - stuff->nClients) + (client->req_len - bytes_to_int32(sz_xRecordRegisterClientsReq) + - stuff->nClients) / bytes_to_int32(sz_xRecordRange)) return BadLength; RecordSwapRanges((xRecordRange *) pClientID, stuff->nRanges); return Success; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/render/render.c new/xwayland-21.1.4/render/render.c --- old/xwayland-21.1.3/render/render.c 2021-11-08 11:37:14.886922800 +0100 +++ new/xwayland-21.1.4/render/render.c 2021-12-14 15:00:58.319255600 +0100 @@ -2309,6 +2309,9 @@ i = elt->len; if (i == 0xff) { + if (buffer + 4 > end) { + return BadLength; + } swapl((int *) buffer); buffer += 4; } @@ -2319,12 +2322,18 @@ buffer += i; break; case 2: + if (buffer + i * 2 > end) { + return BadLength; + } while (i--) { swaps((short *) buffer); buffer += 2; } break; case 4: + if (buffer + i * 4 > end) { + return BadLength; + } while (i--) { swapl((int *) buffer); buffer += 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xwayland-21.1.3/xfixes/cursor.c new/xwayland-21.1.4/xfixes/cursor.c --- old/xwayland-21.1.3/xfixes/cursor.c 2021-11-08 11:37:14.889922900 +0100 +++ new/xwayland-21.1.4/xfixes/cursor.c 2021-12-14 15:00:58.322255600 +0100 @@ -1010,7 +1010,8 @@ { REQUEST(xXFixesCreatePointerBarrierReq); - REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, pad_to_int32(stuff->num_devices)); + REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, + pad_to_int32(stuff->num_devices * sizeof(CARD16))); LEGAL_NEW_RESOURCE(stuff->barrier, client); return XICreatePointerBarrier(client, stuff); @@ -1027,7 +1028,8 @@ swaps(&stuff->length); swaps(&stuff->num_devices); - REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, pad_to_int32(stuff->num_devices)); + REQUEST_FIXED_SIZE(xXFixesCreatePointerBarrierReq, + pad_to_int32(stuff->num_devices * sizeof(CARD16))); swapl(&stuff->barrier); swapl(&stuff->window);