From fcb5e8a0e5f39351d66061ab4048edd6a5a58ea8 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 13 Dec 2016 01:56:57 +0100 Subject: Rootless.c: Fix wrongly negated comparisons --- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Rootless.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index 68c6890d8..34902456d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -965,7 +965,7 @@ void nxagentImportProperty(Window window, } } - if ((wmHints.flags & IconWindowHint) && (wmHints.icon_window =! None)) + if ((wmHints.flags & IconWindowHint) && (wmHints.icon_window != None)) { WindowPtr icon = nxagentWindowPtr(wmHints.icon_window); @@ -986,7 +986,7 @@ void nxagentImportProperty(Window window, } } - if ((wmHints.flags & IconMaskHint) && (wmHints.icon_mask =! None)) + if ((wmHints.flags & IconMaskHint) && (wmHints.icon_mask != None)) { PixmapPtr icon = nxagentPixmapPtr(wmHints.icon_mask); -- cgit v1.2.3 From 4e545710f9c4d14ed8188e4f89b8d9c2da7975ef Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 14 Dec 2016 11:49:40 +0100 Subject: Rootless.c: fix possible memleak --- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 1 + 1 file changed, 1 insertion(+) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Rootless.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index 34902456d..64ad83bba 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -334,6 +334,7 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) if (!ntoplevel) { + free(toplevel); return; } -- cgit v1.2.3 From a83022a4a97b12904cf5d79f399336fff2d30e43 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 14 Dec 2016 11:50:21 +0100 Subject: Rootless.c: improve malloc failure handling --- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 36 +++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Rootless.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index 64ad83bba..7862a5557 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -315,6 +315,13 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) Mask mask; toplevel = malloc(sizeof(WindowPtr) * nchildren); + + if (!toplevel) + { + /* FIXME: Is this too much and we and simply return here? */ + FatalError("nxagentRootlessRestack: malloc() failed."); + } + ntoplevel = 0; for(i = 0; i < nchildren; i++) @@ -497,6 +504,7 @@ int nxagentExportProperty(pWin, property, type, format, mode, nUnits, value) #ifdef _XSERVER64 else if (strcmp(typeS, "CARDINAL") == 0 || strcmp(typeS, "WM_SIZE_HINTS") == 0) { + /* FIXME: is it okay here to ignore malloc fails? */ unsigned long *buffer = malloc(nUnits * sizeof(*buffer)); int *input = value; int i; @@ -640,6 +648,14 @@ int nxagentExportProperty(pWin, property, type, format, mode, nUnits, value) int i; int j = 0; + if (!atoms) + { + #ifdef WARNING + fprintf(stderr, "nxagentExportProperty: WARNING! malloc() failed for '%s'- bailing out.\n", typeS); + #endif + return False; + } + freeMem = True; export = True; output = (char *) atoms; @@ -690,6 +706,14 @@ int nxagentExportProperty(pWin, property, type, format, mode, nUnits, value) WindowPtr pWindow; int i; + if (!wind) + { + #ifdef WARNING + fprintf(stderr, "nxagentExportProperty: WARNING! malloc() failed for '%s' - bailing out.\n", typeS); + #endif + return False; + } + freeMem = True; export = True; output = (char*) wind; @@ -1037,7 +1061,7 @@ void nxagentImportProperty(Window window, if (atoms == NULL) { #ifdef WARNING - fprintf(stderr, "nxagentImportProperty: WARNING! Malloc failed bailing out.\n"); + fprintf(stderr, "nxagentImportProperty: WARNING! malloc() failed for '%s' - bailing out.\n", typeS); #endif return; @@ -1067,6 +1091,14 @@ void nxagentImportProperty(Window window, WindowPtr pWindow; int i; + if (!wind) + { + #ifdef WARNING + fprintf(stderr, "nxagentImportProperty: WARNING! malloc() failed for '%s' - bailing out.\n", typeS); + #endif + + return; + } freeMem = True; import = True; output = (char*) wind; @@ -1185,7 +1217,7 @@ void nxagentAddPropertyToList(Atom property, WindowPtr pWin) if ((tmp = malloc(sizeof(struct nxagentPropertyRec))) == NULL) { - FatalError("nxagentAddPropertyToList: malloc failed."); + FatalError("nxagentAddPropertyToList: malloc() failed."); } #ifdef TEST -- cgit v1.2.3 From 2a6fcfc142d609339bdeb836b7e3be525967a5f8 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 14 Dec 2016 11:50:47 +0100 Subject: Rootless.c: improve debugging output --- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Rootless.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index 7862a5557..f42f9d99d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -351,14 +351,14 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) for (i = 0; i < ntoplevel; i++) { - fprintf(stderr, "[%p]\n", toplevel[i]); + fprintf(stderr, "nxagentRootlessRestack: [%p]\n", toplevel[i]); } fprintf(stderr, "nxagentRootlessRestack: Internal top level windows before restack:"); for (pWin = screenInfo.screens[0]->root -> firstChild; pWin != NULL; pWin = pWin -> nextSib) { - fprintf(stderr, "[%p]\n", pWin); + fprintf(stderr, "nxagentRootlessRestack: [%p]\n", pWin); } #endif @@ -394,14 +394,14 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) for (i = 0; i < ntoplevel; i++) { - fprintf(stderr, "[%p]\n", toplevel[i]); + fprintf(stderr, "nxagentRootlessRestack: [%p]\n", toplevel[i]); } fprintf(stderr, "nxagentRootlessRestack: Internal top level windows after restack:"); for (pWin = screenInfo.screens[0]->root -> firstChild; pWin != NULL; pWin = pWin -> nextSib) { - fprintf(stderr, "[%p]\n", pWin); + fprintf(stderr, "nxagentRootlessRestack: [%p]\n", pWin); } #endif -- cgit v1.2.3