| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Fixes ArcticaProject/nx-libs#941
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
...
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
instead of sendSelectionNotifyEventToClient + setClientSelectionStage
|
|
|
|
|
| |
Moving the client check to sendSelectionNotifyEventToClient enables us
to drop notifyConvertFailure.
|
| |
|
| |
|
|
|
|
| |
and reset the lastClient variables when stage is set to None.
|
|
|
|
| |
resolve lastClientClientPtr to process id and process name
|
| |
|
| |
|
| |
|
|
|
|
| |
to make them all fit in the same naming scheme that better describes their purpose.
|
|
|
|
|
| |
drop the nxagent prefix to emphasize they are not called from the
outside. Also make them static and add prototypes, if missing.
|
| |
|
|
|
|
|
| |
For now deactivate nxagentResetSelectionOwner. Must do some research
before removing it completely.
|
|
|
|
|
|
|
|
|
| |
There were two location where the windowPtr was not cleared after
calling ClearSelectionOwner(). One was nxagentInitClipboard where it
was set to NULL before and the second one was nxagentClearSelection()
where it really should be reset.
So we can safely move this to where it really belongs.
|
| |
|
| |
|
| |
|
|
|
|
| |
and correctly print its value in debugging output
|
| |
|
| |
|
|
|
|
| |
ensure same order for internal and external Atoms
|
|
|
|
|
|
|
|
|
|
|
|
| |
this was harmless but not nice nevertheless.
Clipboard.c: In function ‘nxagentConvertSelection’:
Clipboard.c:1850:9: warning: declaration of ‘i’ shadows a previous local [-Wshadow=compatible-local]
int i = nxagentFindCurrentSelectionIndex(selection);
^
Clipboard.c:1736:7: note: shadowed declaration is here
int i = nxagentFindCurrentSelectionIndex(selection);
^
|
| |
|
| |
|
|
|
|
|
|
|
| |
Unfortunately we cannot rename NX_CUT_BUFFER_SERVER, too, without
breaking compatibility because this one is used to signal nomachine's
nxclient after the splash screen is gone (see Splash.c, Window.c and
ArticaProject/nx-libs#838)
|
|
|
|
|
|
| |
the MakeAtom call previously used is as good as using a variable but
with the variable it is a) easier to read/understand and b) consistent
with the other client* variables.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Using this macro makes the code more readable
|
|
|
|
| |
We do not need to loop over all selections. We have a helper for that.
|
| |
|
|
|
|
|
| |
It makes sense to measure time and set the initialized flag right at
the start.
|
|
|
|
|
|
| |
The new code effectively does the same the old one did. But if we
change the number of selections the new code will still work correctly
while the old one would not.
|
|
|
|
|
|
|
| |
On reconnect claim the selection ownership if one of nxagent's clients
is a selection owner. The code for this was already there but could
not work because the lastSelectionOwner array was always dropped at
the beginning of nxagentInitClipboard.
|
|
|
|
|
| |
Place the allocation directly before the check for success. Use the
same order for server and client atoms.
|