aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
Commit message (Collapse)AuthorAgeFilesLines
* nxagent: make nxagentXFixesInfo.Initialized a BooleanUlrich Sibiller2021-01-151-2/+2
|
* nxagent: treat all Traps as Booleans everywhereUlrich Sibiller2021-01-151-1/+1
|
* Clipboard.c: fix bug in special optimization for nested settingsUlrich Sibiller2020-11-041-2/+3
| | | | Fixes ArcticaProject/nx-libs#941
* Clipboard.c: add missing ifdefsUlrich Sibiller2020-11-031-0/+6
|
* Clipboard.c: fix missing )Ulrich Sibiller2020-11-031-1/+1
|
* nxagent: fix stack smashingUlrich Sibiller2020-10-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 ...
* Clipboard.c: small code improvementUlrich Sibiller2020-05-311-8/+7
|
* Clipboard.c: add description/warning for nxagentClearClipboardUlrich Sibiller2020-05-311-0/+6
|
* Clipboard.c: improve some more debugging messagesUlrich Sibiller2020-05-311-19/+20
|
* Clipboard.c: use nxagentClientInfoString for debug outputUlrich Sibiller2020-05-311-58/+38
|
* Clipboard.c: add elapsed time for lastClient to stats output if availableUlrich Sibiller2020-05-311-2/+8
|
* Clipboard.c: call endTransfer()Ulrich Sibiller2020-05-311-4/+1
| | | | instead of sendSelectionNotifyEventToClient + setClientSelectionStage
* Clipboard.c: drop notifyConvertFailureUlrich Sibiller2020-05-311-24/+15
| | | | | Moving the client check to sendSelectionNotifyEventToClient enables us to drop notifyConvertFailure.
* Clipboard.c: drop unused return code of sendSelectionNotifyEventToClientUlrich Sibiller2020-05-311-8/+8
|
* Clipboard.c: Fix: always reset selectionStage in endTransferUlrich Sibiller2020-05-311-15/+16
|
* Clipboard.c: make setClientSelectionStage a functionUlrich Sibiller2020-05-311-26/+42
| | | | and reset the lastClient variables when stage is set to None.
* Clipboard.c: improve Clipboard statsUlrich Sibiller2020-05-311-1/+11
| | | | resolve lastClientClientPtr to process id and process name
* nxagent: Add keystroke for dumping the current clipboard stateUlrich Sibiller2020-05-311-25/+9
|
* Clipboard.c: fix typoUlrich Sibiller2020-05-071-1/+1
|
* Improve clipboard/xfixes related debug outputUlrich Sibiller2020-05-071-1/+1
|
* Clipboard.c: rename some exported functionsUlrich Sibiller2020-05-071-7/+9
| | | | to make them all fit in the same naming scheme that better describes their purpose.
* Clipboard.c: rename static helpers and macrosUlrich Sibiller2020-05-071-93/+108
| | | | | drop the nxagent prefix to emphasize they are not called from the outside. Also make them static and add prototypes, if missing.
* Clipboard.{c,h}: cleanup prototypesUlrich Sibiller2020-05-071-12/+10
|
* Clipboard.c: deactivate unused codeUlrich Sibiller2020-05-071-0/+5
| | | | | For now deactivate nxagentResetSelectionOwner. Must do some research before removing it completely.
* Clipboard.c: clear windowPtr in ClearSelectionOwnerUlrich Sibiller2020-05-071-4/+1
| | | | | | | | | 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.
* Clipboard.c: print if selection owner is inside nagent in debugging outputUlrich Sibiller2020-05-071-0/+1
|
* Clipboard.c: fix some format specifiersUlrich Sibiller2020-05-071-16/+16
|
* Clipboard.c: fix/improve debugging outputUlrich Sibiller2020-05-071-12/+5
|
* Clipboard.c: rename nxagentLastRequestedSelectionUlrich Sibiller2020-05-071-4/+5
| | | | and correctly print its value in debugging output
* Clipboard.c: fix compilation with DEBUGUlrich Sibiller2020-05-071-0/+2
|
* Clipboard.c: use validateString in debugging outputUlrich Sibiller2020-05-071-8/+8
|
* Clipboard.c: rearrange Atoms in debugging outputUlrich Sibiller2020-05-071-3/+2
| | | | ensure same order for internal and external Atoms
* Clipboard.c: fix shadowed variableUlrich Sibiller2020-01-091-6/+8
| | | | | | | | | | | | 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); ^
* Clipboard.c: cleanup parenthesesUlrich Sibiller2020-01-051-15/+17
|
* Clipboard.c: extend/reformat some commentsUlrich Sibiller2020-01-051-8/+12
|
* Clipboard.c: rename variables/atoms to better reflect their meaningUlrich Sibiller2020-01-051-34/+34
| | | | | | | 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)
* Clipboard.c: add clientCLIPBOARD variableUlrich Sibiller2020-01-051-3/+7
| | | | | | 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.
* Clipboard.c: change order of if clause to better match the comment above itUlrich Sibiller2020-01-051-6/+8
|
* Clipboard.c: CLINDEX and GetXErrorString are only used for debuggingUlrich Sibiller2020-01-051-2/+2
|
* Clipboard.c: flush more often to ensure a smooth clipboard experienceUlrich Sibiller2020-01-051-3/+1
|
* Clipboard.c: fix handling of clipboard=none/client/server/both optionUlrich Sibiller2020-01-051-3/+4
|
* Clipboard.c: Use Find*Index helpers at more locationsUlrich Sibiller2020-01-051-16/+15
|
* Clipboard.c: cosmetics/typo fix/untabifyUlrich Sibiller2020-01-051-43/+41
|
* Clipboard.c: introduce helper macro IS_INTERNAL_OWNERUlrich Sibiller2020-01-051-9/+11
| | | | Using this macro makes the code more readable
* Clipboard.c: simplify nxagentSetSelectionOwnerUlrich Sibiller2020-01-051-33/+26
| | | | We do not need to loop over all selections. We have a helper for that.
* Clipboard.c: describe nxagentFind*IndexUlrich Sibiller2020-01-051-0/+8
|
* Clipboard.c: reorder nxagentInitClipboardUlrich Sibiller2020-01-051-10/+11
| | | | | It makes sense to measure time and set the initialized flag right at the start.
* Clipboard.c: clear all selections in nxagentInitClipboardUlrich Sibiller2020-01-051-2/+4
| | | | | | 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.
* Clipboard.c: Fix: re-claim selection on reconnectUlrich Sibiller2020-01-051-20/+28
| | | | | | | 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.
* Clipboard.c: reorder atom allocation codeUlrich Sibiller2020-01-051-10/+10
| | | | | Place the allocation directly before the check for success. Use the same order for server and client atoms.