[PATCHv2] xkb: replace xstrdup with strdup in Win32System

Mikhail Gusarov dottedmag at dottedmag.net
Sun Jun 6 13:24:32 PDT 2010


The only caller of Win32System is XkbDDXCompileKeymapByNames. Add allocation
check there to avoid passing NULL pointers to various functions down the code.

Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
---

In new version of patch NULL return value of Xprintf is explicitly guarded and
dealt with.

 xkb/ddxLoad.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index b1d6294..f7bd667 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -103,7 +103,7 @@ Win32System(const char *cmdline)
     STARTUPINFO si;
     PROCESS_INFORMATION pi;
     DWORD dwExitCode;
-    char *cmd = xstrdup(cmdline);
+    char *cmd = strdup(cmdline);
 
     ZeroMemory( &si, sizeof(si) );
     si.cb = sizeof(si);
@@ -235,6 +235,11 @@ XkbDDXCompileKeymapByNames(	XkbDescPtr		xkb,
 		  xkm_output_dir, keymap);
 
     free(xkbbasedirflag);
+
+    if (!buf) {
+        LogMessage(X_Error, "XKB: Could not invoke xkbcomp: not enough memory\n");
+        return FALSE;
+    }
     
 #ifndef WIN32
     out= Popen(buf,"w");
-- 
1.7.1



More information about the xorg-devel mailing list