[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Git][xorg-team/xserver/xorg-server][upstream-unstable] 11 commits: xquartz: Remove unused macro (X11LIBDIR)



Title: GitLab

Timo Aaltonen pushed to branch upstream-unstable at X Strike Force / xserver / xorg-server

Commits:

  • 5d302c37
    by Jeremy Huddleston Sequoia at 2022-11-24T11:34:22-08:00
    xquartz: Remove unused macro (X11LIBDIR)
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
    (cherry picked from commit 3dbd809c0e2d8da4191dd4a3fd4abdd14be0d838)
    
  • 3dee0aac
    by Jeremy Huddleston Sequoia at 2022-11-24T11:38:42-08:00
    xquartz: Move default applications list outside of the main executable
    
    This will allow side-wide customization.
    
    Fixes: https://github.com/XQuartz/XQuartz/issues/274
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
    (cherry picked from commit e654de80ed560c480efc072d876808b1d78da052)
    
  • 5f2d6523
    by Jeremy Huddleston Sequoia at 2022-11-27T15:15:21-08:00
    meson: Don't build COMPOSITE for XQuartz
    
    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
    (cherry picked from commit 9c0373366988cc0b909ba31e61c43cc46e054b40)
    
  • 936d34bd
    by Peter Hutterer at 2022-12-14T11:24:37+10:00
    Xtest: disallow GenericEvents in XTestSwapFakeInput
    
    XTestSwapFakeInput assumes all events in this request are
    sizeof(xEvent) and iterates through these in 32-byte increments.
    However, a GenericEvent may be of arbitrary length longer than 32 bytes,
    so any GenericEvent in this list would result in subsequent events to be
    misparsed.
    
    Additional, the swapped event is written into a stack-allocated struct
    xEvent (size 32 bytes). For any GenericEvent longer than 32 bytes,
    swapping the event may thus smash the stack like an avocado on toast.
    
    Catch this case early and return BadValue for any GenericEvent.
    Which is what would happen in unswapped setups anyway since XTest
    doesn't support GenericEvent.
    
    CVE-2022-46340, ZDI-CAN 19265
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit b320ca0ffe4c0c872eeb3a93d9bde21f765c7c63)
    
  • a6c0d7b1
    by Peter Hutterer at 2022-12-14T11:24:39+10:00
    Xi: disallow passive grabs with a detail > 255
    
    The XKB protocol effectively prevents us from ever using keycodes above
    255. For buttons it's theoretically possible but realistically too niche
    to worry about. For all other passive grabs, the detail must be zero
    anyway.
    
    This fixes an OOB write:
    
    ProcXIPassiveUngrabDevice() calls DeletePassiveGrabFromList with a
    temporary grab struct which contains tempGrab->detail.exact = stuff->detail.
    For matching existing grabs, DeleteDetailFromMask is called with the
    stuff->detail value. This function creates a new mask with the one bit
    representing stuff->detail cleared.
    
    However, the array size for the new mask is 8 * sizeof(CARD32) bits,
    thus any detail above 255 results in an OOB array write.
    
    CVE-2022-46341, ZDI-CAN 19381
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit 51eb63b0ee1509c6c6b8922b0e4aa037faa6f78b)
    
  • 67927cc4
    by Peter Hutterer at 2022-12-14T11:24:41+10:00
    Xext: free the XvRTVideoNotify when turning off from the same client
    
    This fixes a use-after-free bug:
    
    When a client first calls XvdiSelectVideoNotify() on a drawable with a
    TRUE onoff argument, a struct XvVideoNotifyRec is allocated. This struct
    is added twice to the resources:
      - as the drawable's XvRTVideoNotifyList. This happens only once per
        drawable, subsequent calls append to this list.
      - as the client's XvRTVideoNotify. This happens for every client.
    
    The struct keeps the ClientPtr around once it has been added for a
    client. The idea, presumably, is that if the client disconnects we can remove
    all structs from the drawable's list that match the client (by resetting
    the ClientPtr to NULL), but if the drawable is destroyed we can remove
    and free the whole list.
    
    However, if the same client then calls XvdiSelectVideoNotify() on the
    same drawable with a FALSE onoff argument, only the ClientPtr on the
    existing struct was set to NULL. The struct itself remained in the
    client's resources.
    
    If the drawable is now destroyed, the resource system invokes
    XvdiDestroyVideoNotifyList which frees the whole list for this drawable
    - including our struct. This function however does not free the resource
    for the client since our ClientPtr is NULL.
    
    Later, when the client is destroyed and the resource system invokes
    XvdiDestroyVideoNotify, we unconditionally set the ClientPtr to NULL. On
    a struct that has been freed previously. This is generally frowned upon.
    
    Fix this by calling FreeResource() on the second call instead of merely
    setting the ClientPtr to NULL. This removes the struct from the client
    resources (but not from the list), ensuring that it won't be accessed
    again when the client quits.
    
    Note that the assignment tpn->client = NULL; is superfluous since the
    XvdiDestroyVideoNotify function will do this anyway. But it's left for
    clarity and to match a similar invocation in XvdiSelectPortNotify.
    
    CVE-2022-46342, ZDI-CAN 19400
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit b79f32b57cc0c1186b2899bce7cf89f7b325161b)
    
  • d6c7de9e
    by Peter Hutterer at 2022-12-14T11:24:43+10:00
    Xext: free the screen saver resource when replacing it
    
    This fixes a use-after-free bug:
    
    When a client first calls ScreenSaverSetAttributes(), a struct
    ScreenSaverAttrRec is allocated and added to the client's
    resources.
    
    When the same client calls ScreenSaverSetAttributes() again, a new
    struct ScreenSaverAttrRec is allocated, replacing the old struct. The
    old struct was freed but not removed from the clients resources.
    
    Later, when the client is destroyed the resource system invokes
    ScreenSaverFreeAttr and attempts to clean up the already freed struct.
    
    Fix this by letting the resource system free the old attrs instead.
    
    CVE-2022-46343, ZDI-CAN 19404
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit 842ca3ccef100ce010d1d8f5f6d6cc1915055900)
    
  • 40f431de
    by Peter Hutterer at 2022-12-14T11:24:44+10:00
    Xi: return an error from XI property changes if verification failed
    
    Both ProcXChangeDeviceProperty and ProcXIChangeProperty checked the
    property for validity but didn't actually return the potential error.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit b8a84cb0f2807b07ab70ca9915fcdee21301b8ca)
    
  • 8a1fa008
    by Peter Hutterer at 2022-12-14T11:24:46+10:00
    Xi: avoid integer truncation in length check of ProcXIChangeProperty
    
    This fixes an OOB read and the resulting information disclosure.
    
    Length calculation for the request was clipped to a 32-bit integer. With
    the correct stuff->num_items value the expected request size was
    truncated, passing the REQUEST_FIXED_SIZE check.
    
    The server then proceeded with reading at least stuff->num_items bytes
    (depending on stuff->format) from the request and stuffing whatever it
    finds into the property. In the process it would also allocate at least
    stuff->num_items bytes, i.e. 4GB.
    
    The same bug exists in ProcChangeProperty and ProcXChangeDeviceProperty,
    so let's fix that too.
    
    CVE-2022-46344, ZDI-CAN 19405
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit 8f454b793e1f13c99872c15f0eed1d7f3b823fe8)
    
  • e860bbce
    by Peter Hutterer at 2022-12-14T11:24:47+10:00
    xkb: reset the radio_groups pointer to NULL after freeing it
    
    Unlike other elements of the keymap, this pointer was freed but not
    reset. On a subsequent XkbGetKbdByName request, the server may access
    already freed memory.
    
    CVE-2022-4283, ZDI-CAN-19530
    
    This vulnerability was discovered by:
    Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Acked-by: Olivier Fourdan <ofourdan@redhat.com>
    (cherry picked from commit ccdd431cd8f1cabae9d744f0514b6533c438908c)
    
  • f292fbfa
    by Peter Hutterer at 2022-12-14T11:35:12+10:00
    xserver 21.1.5
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    

16 changed files:

Changes:

  • Xext/saver.c
    ... ... @@ -1051,7 +1051,7 @@ ScreenSaverSetAttributes(ClientPtr client)
    1051 1051
             pVlist++;
    
    1052 1052
         }
    
    1053 1053
         if (pPriv->attr)
    
    1054
    -        FreeScreenAttr(pPriv->attr);
    
    1054
    +        FreeResource(pPriv->attr->resource, AttrType);
    
    1055 1055
         pPriv->attr = pAttr;
    
    1056 1056
         pAttr->resource = FakeClientID(client->index);
    
    1057 1057
         if (!AddResource(pAttr->resource, AttrType, (void *) pAttr))
    

  • Xext/xtest.c
    ... ... @@ -502,10 +502,11 @@ XTestSwapFakeInput(ClientPtr client, xReq * req)
    502 502
     
    
    503 503
         nev = ((req->length << 2) - sizeof(xReq)) / sizeof(xEvent);
    
    504 504
         for (ev = (xEvent *) &req[1]; --nev >= 0; ev++) {
    
    505
    +        int evtype = ev->u.u.type & 0x177;
    
    505 506
             /* Swap event */
    
    506
    -        proc = EventSwapVector[ev->u.u.type & 0177];
    
    507
    +        proc = EventSwapVector[evtype];
    
    507 508
             /* no swapping proc; invalid event type? */
    
    508
    -        if (!proc || proc == NotImplemented) {
    
    509
    +        if (!proc || proc == NotImplemented || evtype == GenericEvent) {
    
    509 510
                 client->errorValue = ev->u.u.type;
    
    510 511
                 return BadValue;
    
    511 512
             }
    

  • Xext/xvmain.c
    ... ... @@ -811,8 +811,10 @@ XvdiSelectVideoNotify(ClientPtr client, DrawablePtr pDraw, BOOL onoff)
    811 811
             tpn = pn;
    
    812 812
             while (tpn) {
    
    813 813
                 if (tpn->client == client) {
    
    814
    -                if (!onoff)
    
    814
    +                if (!onoff) {
    
    815 815
                         tpn->client = NULL;
    
    816
    +                    FreeResource(tpn->id, XvRTVideoNotify);
    
    817
    +                }
    
    816 818
                     return Success;
    
    817 819
                 }
    
    818 820
                 if (!tpn->client)
    

  • Xi/xipassivegrab.c
    ... ... @@ -137,6 +137,12 @@ ProcXIPassiveGrabDevice(ClientPtr client)
    137 137
             return BadValue;
    
    138 138
         }
    
    139 139
     
    
    140
    +    /* XI2 allows 32-bit keycodes but thanks to XKB we can never
    
    141
    +     * implement this. Just return an error for all keycodes that
    
    142
    +     * cannot work anyway, same for buttons > 255. */
    
    143
    +    if (stuff->detail > 255)
    
    144
    +        return XIAlreadyGrabbed;
    
    145
    +
    
    140 146
         if (XICheckInvalidMaskBits(client, (unsigned char *) &stuff[1],
    
    141 147
                                    stuff->mask_len * 4) != Success)
    
    142 148
             return BadValue;
    
    ... ... @@ -207,14 +213,8 @@ ProcXIPassiveGrabDevice(ClientPtr client)
    207 213
                                     &param, XI2, &mask);
    
    208 214
                 break;
    
    209 215
             case XIGrabtypeKeycode:
    
    210
    -            /* XI2 allows 32-bit keycodes but thanks to XKB we can never
    
    211
    -             * implement this. Just return an error for all keycodes that
    
    212
    -             * cannot work anyway */
    
    213
    -            if (stuff->detail > 255)
    
    214
    -                status = XIAlreadyGrabbed;
    
    215
    -            else
    
    216
    -                status = GrabKey(client, dev, mod_dev, stuff->detail,
    
    217
    -                                 &param, XI2, &mask);
    
    216
    +            status = GrabKey(client, dev, mod_dev, stuff->detail,
    
    217
    +                             &param, XI2, &mask);
    
    218 218
                 break;
    
    219 219
             case XIGrabtypeEnter:
    
    220 220
             case XIGrabtypeFocusIn:
    
    ... ... @@ -334,6 +334,12 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
    334 334
             return BadValue;
    
    335 335
         }
    
    336 336
     
    
    337
    +    /* We don't allow passive grabs for details > 255 anyway */
    
    338
    +    if (stuff->detail > 255) {
    
    339
    +        client->errorValue = stuff->detail;
    
    340
    +        return BadValue;
    
    341
    +    }
    
    342
    +
    
    337 343
         rc = dixLookupWindow(&win, stuff->grab_window, client, DixSetAttrAccess);
    
    338 344
         if (rc != Success)
    
    339 345
             return rc;
    

  • Xi/xiproperty.c
    ... ... @@ -890,7 +890,7 @@ ProcXChangeDeviceProperty(ClientPtr client)
    890 890
         REQUEST(xChangeDevicePropertyReq);
    
    891 891
         DeviceIntPtr dev;
    
    892 892
         unsigned long len;
    
    893
    -    int totalSize;
    
    893
    +    uint64_t totalSize;
    
    894 894
         int rc;
    
    895 895
     
    
    896 896
         REQUEST_AT_LEAST_SIZE(xChangeDevicePropertyReq);
    
    ... ... @@ -902,6 +902,8 @@ ProcXChangeDeviceProperty(ClientPtr client)
    902 902
     
    
    903 903
         rc = check_change_property(client, stuff->property, stuff->type,
    
    904 904
                                    stuff->format, stuff->mode, stuff->nUnits);
    
    905
    +    if (rc != Success)
    
    906
    +        return rc;
    
    905 907
     
    
    906 908
         len = stuff->nUnits;
    
    907 909
         if (len > (bytes_to_int32(0xffffffff - sizeof(xChangeDevicePropertyReq))))
    
    ... ... @@ -1128,7 +1130,7 @@ ProcXIChangeProperty(ClientPtr client)
    1128 1130
     {
    
    1129 1131
         int rc;
    
    1130 1132
         DeviceIntPtr dev;
    
    1131
    -    int totalSize;
    
    1133
    +    uint64_t totalSize;
    
    1132 1134
         unsigned long len;
    
    1133 1135
     
    
    1134 1136
         REQUEST(xXIChangePropertyReq);
    
    ... ... @@ -1141,6 +1143,9 @@ ProcXIChangeProperty(ClientPtr client)
    1141 1143
     
    
    1142 1144
         rc = check_change_property(client, stuff->property, stuff->type,
    
    1143 1145
                                    stuff->format, stuff->mode, stuff->num_items);
    
    1146
    +    if (rc != Success)
    
    1147
    +        return rc;
    
    1148
    +
    
    1144 1149
         len = stuff->num_items;
    
    1145 1150
         if (len > bytes_to_int32(0xffffffff - sizeof(xXIChangePropertyReq)))
    
    1146 1151
             return BadLength;
    

  • configure.ac
    ... ... @@ -26,8 +26,8 @@ dnl
    26 26
     dnl Process this file with autoconf to create configure.
    
    27 27
     
    
    28 28
     AC_PREREQ(2.60)
    
    29
    -AC_INIT([xorg-server], 21.1.4, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
    
    30
    -RELEASE_DATE="2022-07-12"
    
    29
    +AC_INIT([xorg-server], 21.1.5, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
    
    30
    +RELEASE_DATE="2022-12-14"
    
    31 31
     RELEASE_NAME="Caramel Ice Cream"
    
    32 32
     AC_CONFIG_SRCDIR([Makefile.am])
    
    33 33
     AC_CONFIG_MACRO_DIR([m4])
    

  • dix/property.c
    ... ... @@ -205,7 +205,8 @@ ProcChangeProperty(ClientPtr client)
    205 205
         WindowPtr pWin;
    
    206 206
         char format, mode;
    
    207 207
         unsigned long len;
    
    208
    -    int sizeInBytes, totalSize, err;
    
    208
    +    int sizeInBytes, err;
    
    209
    +    uint64_t totalSize;
    
    209 210
     
    
    210 211
         REQUEST(xChangePropertyReq);
    
    211 212
     
    

  • hw/xquartz/Makefile.am
    ... ... @@ -2,14 +2,14 @@ noinst_LTLIBRARIES = libXquartz.la
    2 2
     AM_CFLAGS = $(DIX_CFLAGS)
    
    3 3
     AM_OBJCFLAGS = $(DIX_CFLAGS)
    
    4 4
     AM_CPPFLAGS = \
    
    5
    +	-DXQUARTZ_DATA_DIR=\"$(datadir)/X11/XQuartz\" \
    
    5 6
     	-DXSERVER_VERSION=\"$(VERSION)\" \
    
    6 7
     	-DBUNDLE_ID_PREFIX=\"$(BUNDLE_ID_PREFIX)\" \
    
    7 8
     	-DUSE_NEW_CLUT \
    
    8 9
     	-DXFree86Server \
    
    9 10
     	-I$(top_srcdir)/miext/rootless \
    
    10 11
     	-I$(top_builddir)/pseudoramiX \
    
    11
    -	-I$(top_builddir) \
    
    12
    -	-DX11LIBDIR=\"$(libdir)\"
    
    12
    +	-I$(top_builddir)"
    
    13 13
     
    
    14 14
     if GLX
    
    15 15
     GL_DIR = GL
    
    ... ... @@ -45,6 +45,7 @@ EXTRA_DIST = \
    45 45
     	darwin.h \
    
    46 46
     	darwinfb.h \
    
    47 47
     	darwinEvents.h \
    
    48
    +	defaults.plist \
    
    48 49
     	keysym2ucs.h \
    
    49 50
     	quartz.h \
    
    50 51
     	quartzKeyboard.h \
    

  • hw/xquartz/NSUserDefaults+XQuartzDefaults.m
    ... ... @@ -96,10 +96,6 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
    96 96
                 defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain];
    
    97 97
             }
    
    98 98
     
    
    99
    -        NSArray * const defaultAppsMenu = @[
    
    100
    -            @[NSLocalizedString(@"Terminal", @"Terminal"), @"xterm", @"n"],
    
    101
    -        ];
    
    102
    -
    
    103 99
             NSString *defaultWindowItemModifiers = @"command";
    
    104 100
             NSString * const defaultWindowItemModifiersLocalized = NSLocalizedString(@"window item modifiers", @"window item modifiers");
    
    105 101
             if (![defaultWindowItemModifiersLocalized isEqualToString:@"window item modifiers"]) {
    
    ... ... @@ -107,7 +103,6 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
    107 103
             }
    
    108 104
     
    
    109 105
             NSDictionary<NSString *, id> * const defaultDefaultsDict = @{
    
    110
    -            XQuartzPrefKeyAppsMenu : defaultAppsMenu,
    
    111 106
                 XQuartzPrefKeyFakeButtons : @(NO),
    
    112 107
                 // XQuartzPrefKeyFakeButton2 nil default
    
    113 108
                 // XQuartzPrefKeyFakeButton3 nil default
    
    ... ... @@ -141,6 +136,10 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
    141 136
             };
    
    142 137
     
    
    143 138
             [defaults registerDefaults:defaultDefaultsDict];
    
    139
    +
    
    140
    +        NSString * const systemDefaultsPlistPath = [@(XQUARTZ_DATA_DIR) stringByAppendingPathComponent:@"defaults.plist"];
    
    141
    +        NSDictionary <NSString *, id> * const systemDefaultsDict = [NSDictionary dictionaryWithContentsOfFile:systemDefaultsPlistPath];
    
    142
    +        [defaults registerDefaults:systemDefaultsDict];
    
    144 143
         });
    
    145 144
     
    
    146 145
         return defaults;
    

  • hw/xquartz/defaults.plist
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    
    3
    +
    
    4
    +<!-- This file contains system-wide defaults for XQuartz -->
    
    5
    +
    
    6
    +<plist version="1.0">
    
    7
    +<dict>
    
    8
    +	<key>apps_menu</key>
    
    9
    +	<array>
    
    10
    +		<array>
    
    11
    +			<string>Terminal</string>
    
    12
    +			<string>xterm</string>
    
    13
    +			<string>n</string>
    
    14
    +		</array>
    
    15
    +	</array>
    
    16
    +</dict>
    
    17
    +</plist>

  • hw/xquartz/meson.build
    ... ... @@ -23,6 +23,7 @@ endif
    23 23
     bundle_id_def = '-DBUNDLE_ID_PREFIX="@0@"'.format(bundle_id_prefix)
    
    24 24
     
    
    25 25
     bundle_root = join_paths(apple_applications_dir, apple_application_name + '.app')
    
    26
    +xquartz_data_dir = join_paths(get_option('prefix'), get_option('datadir'),'X11', 'XQuartz')
    
    26 27
     
    
    27 28
     # using sparkle update framework?
    
    28 29
     build_sparkle = xquartz_sparkle_feed_url != '' and xquartz_sparkle_public_edkey != ''
    
    ... ... @@ -58,10 +59,9 @@ srcs_libxquartz = [
    58 59
     
    
    59 60
     libxquartz_defs = [
    
    60 61
         '-DUSE_NEW_CLUT',
    
    61
    -    '-DX11LIBDIR="@0@"'.format(join_paths(get_option('prefix'),
    
    62
    -                               get_option('libdir'))),
    
    63 62
         '-DXFree86Server',
    
    64 63
         '-DXQUARTZ',
    
    64
    +    '-DXQUARTZ_DATA_DIR="@0@"'.format(xquartz_data_dir),
    
    65 65
         '-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
    
    66 66
         bundle_id_def,
    
    67 67
         sparkle_defs,
    
    ... ... @@ -95,3 +95,7 @@ xquartz_man = configure_file(
    95 95
         configuration: manpage_config,
    
    96 96
     )
    
    97 97
     install_man(xquartz_man)
    
    98
    +
    
    99
    +install_data('defaults.plist',
    
    100
    +    install_dir: xquartz_data_dir,
    
    101
    +    install_mode: 'rw-r--r--')

  • hw/xquartz/pbproxy/Makefile.am
    1
    -AM_CPPFLAGS=-I..
    
    1
    +AM_CPPFLAGS=-I.. -DXQUARTZ_DATA_DIR=\"$(datadir)/X11/XQuartz\"
    
    2 2
     
    
    3 3
     AM_CFLAGS=$(XPBPROXY_CFLAGS)
    
    4 4
     AM_OBJCFLAGS=$(XPBPROXY_CFLAGS)
    

  • hw/xquartz/pbproxy/meson.build
    1 1
     build_standalone_pbproxy = get_option('xpbproxy')
    
    2 2
     
    
    3
    -pbproxy_defs = [bundle_id_def]
    
    3
    +pbproxy_defs = [
    
    4
    +    '-DXQUARTZ_DATA_DIR="@0@"'.format(xquartz_data_dir),
    
    5
    +    bundle_id_def
    
    6
    +]
    
    4 7
     if build_standalone_pbproxy
    
    5 8
         pbproxy_defs += ['-DSTANDALONE_XPBPROXY']
    
    6 9
     endif
    

  • include/meson.build
    ... ... @@ -201,7 +201,9 @@ conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false)
    201 201
     conf_data.set('IPv6', build_ipv6 ? '1' : false)
    
    202 202
     
    
    203 203
     conf_data.set('BIGREQS', '1')
    
    204
    -conf_data.set('COMPOSITE', '1')
    
    204
    +if build_composite
    
    205
    +    conf_data.set('COMPOSITE', '1')
    
    206
    +endif
    
    205 207
     conf_data.set('DAMAGE', '1')
    
    206 208
     conf_data.set('DBE', '1')
    
    207 209
     conf_data.set('DGA', build_dga ? '1' : false)
    

  • meson.build
    ... ... @@ -3,10 +3,10 @@ project('xserver', 'c',
    3 3
                 'buildtype=debugoptimized',
    
    4 4
                 'c_std=gnu99',
    
    5 5
             ],
    
    6
    -        version: '21.1.4',
    
    6
    +        version: '21.1.5',
    
    7 7
             meson_version: '>= 0.47.0',
    
    8 8
     )
    
    9
    -release_date = '2022-07-12'
    
    9
    +release_date = '2022-12-14'
    
    10 10
     
    
    11 11
     add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc'])
    
    12 12
     cc = meson.get_compiler('c')
    
    ... ... @@ -235,8 +235,10 @@ else
    235 235
         build_xquartz = get_option('xquartz') == 'true'
    
    236 236
     endif
    
    237 237
     
    
    238
    +build_composite = true
    
    238 239
     build_rootless = false
    
    239 240
     if build_xquartz
    
    241
    +    build_composite = false
    
    240 242
         build_rootless = true
    
    241 243
     endif
    
    242 244
     
    
    ... ... @@ -697,7 +699,9 @@ subdir('fb')
    697 699
     subdir('mi')
    
    698 700
     subdir('os')
    
    699 701
     # X extensions
    
    700
    -subdir('composite')
    
    702
    +if build_composite
    
    703
    +    subdir('composite')
    
    704
    +endif
    
    701 705
     subdir('damageext')
    
    702 706
     subdir('dbe')
    
    703 707
     subdir('miext/damage')
    
    ... ... @@ -731,7 +735,6 @@ libxserver = [
    731 735
         libxserver_mi,
    
    732 736
         libxserver_dix,
    
    733 737
     
    
    734
    -    libxserver_composite,
    
    735 738
         libxserver_damageext,
    
    736 739
         libxserver_dbe,
    
    737 740
         libxserver_randr,
    
    ... ... @@ -748,6 +751,10 @@ libxserver = [
    748 751
         libxserver_os,
    
    749 752
     ]
    
    750 753
     
    
    754
    +if build_composite
    
    755
    +    libxserver += libxserver_composite
    
    756
    +endif
    
    757
    +
    
    751 758
     libxserver += libxserver_dri3
    
    752 759
     
    
    753 760
     subdir('hw')
    

  • xkb/xkbUtils.c
    ... ... @@ -1327,6 +1327,7 @@ _XkbCopyNames(XkbDescPtr src, XkbDescPtr dst)
    1327 1327
             }
    
    1328 1328
             else {
    
    1329 1329
                 free(dst->names->radio_groups);
    
    1330
    +            dst->names->radio_groups = NULL;
    
    1330 1331
             }
    
    1331 1332
             dst->names->num_rg = src->names->num_rg;
    
    1332 1333
     
    


  • Reply to: