• Ulrich Sibiller's avatar
    nxagent: fix stack smashing · ae037701
    Ulrich Sibiller authored
    In compext Atom has the size of XlibAtom. Therefore calling functions
    of Compext.c requires to use/pass XlibAtom. Same for Window/XlibWindow.
    
    ==15438==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffffffcdc0 at pc 0x5555556a81b5 bp 0x7fffffffcd10 sp 0x7fffffffcd08
    WRITE of size 8 at 0x7fffffffcdc0 thread T0
        #0 0x5555556a81b4 in NXGetCollectedProperty nx-X11/programs/Xserver/hw/nxagent/compext/Compext.c:4124
        #1 0x5555557d0488 in nxagentCollectPropertyEvent nx-X11/programs/Xserver/hw/nxagent/Clipboard.c:1202
        #2 0x555555723340 in nxagentHandleCollectPropertyEvent nx-X11/programs/Xserver/hw/nxagent/Events.c:3923
        #3 0x55555571d4db in nxagentHandleProxyEvent nx-X11/programs/Xserver/hw/nxagent/Events.c:3007
        #4 0x55555571bb92 in nxagentHandleClientMessageEvent nx-X11/programs/Xserver/hw/nxagent/Events.c:2595
        #5 0x555555717dfc in nxagentDispatchEvents nx-X11/programs/Xserver/hw/nxagent/Events.c:1827
        #6 0x555555750813 in nxagentBlockHandler nx-X11/programs/Xserver/hw/nxagent/Handlers.c:437
        #7 0x5555556c1b5d in BlockHandler nx-X11/programs/Xserver/dix/dixutils.c:403
        #8 0x5555556d47ff in WaitForSomething nx-X11/programs/Xserver/os/WaitFor.c:232
        #9 0x555555665b22 in Dispatch nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c:365
        #10 0x5555555ed760 in main nx-X11/programs/Xserver/dix/main.c:350
        #11 0x7ffff604909a in __libc_start_main ../csu/libc-start.c:308
        #12 0x5555555edc09 in _start (nx-X11/programs/Xserver/nxagent+0x99c09)
    
    Address 0x7fffffffcdc0 is located in stack of thread T0 at offset 32 in frame
        #0 0x5555557d0324 in nxagentCollectPropertyEvent nx-X11/programs/Xserver/hw/nxagent/Clipboard.c:1190
    
      This frame has 5 object(s):
        [32, 36) 'atomReturnType' <== Memory access at offset 32 partially overflows this variable
        [96, 100) 'resultFormat'
        [160, 168) 'ulReturnItems'
        [224, 232) 'ulReturnBytesLeft'
        [288, 296) 'pszReturnData'
    HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
          (longjmp and C++ exceptions *are* supported)
    SUMMARY: AddressSanitizer: stack-buffer-overflow nx-X11/programs/Xserver/hw/nxagent/compext/Compext.c:4124 in NXGetCollectedProperty
    ...
    ae037701
Events.c 122 KB