From 1cd894173ee7fa3d1a78d330c12453ea53e7b908 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Wed, 19 Nov 2008 13:44:26 -0800 Subject: [PATCH] Always use server-.xkm to avoid races when multiple servers start Previously each server starting ran xkbcomp with the output set to .xkm, read it, then deleted it - which led to races if two servers were starting at the same time with the same keymap. Sun bug #6773816 Xorg uses the same xkm output file for compiled keymap file --- xkb/ddxLoad.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c index fc49d998b..80da96317 100644 --- a/xkb/ddxLoad.c +++ b/xkb/ddxLoad.c @@ -192,16 +192,8 @@ char *buf = NULL, keymap[PATH_MAX],xkm_output_dir[PATH_MAX]; #ifdef WIN32 char tmpname[PATH_MAX]; #endif - if ((names->keymap==NULL)||(names->keymap[0]=='\0')) { - sprintf(keymap,"server-%s",display); - } - else { - if (strlen(names->keymap) > PATH_MAX - 1) { - ErrorF("[xkb] name of keymap (%s) exceeds max length\n", names->keymap); - return False; - } - strcpy(keymap,names->keymap); - } + + snprintf(keymap, sizeof(keymap), "server-%s", display); XkbEnsureSafeMapName(keymap); OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));