XQuartz: Add more sanity checking around string manipulation for xmodmap

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
Jeremy Huddleston 2010-06-08 13:01:10 -07:00
parent 0be81f9a16
commit 5e1ef1f4dd

View File

@ -427,20 +427,28 @@ void DarwinKeyboardReloadHandler(void) {
} }
} pthread_mutex_unlock(&keyInfo_mutex); } pthread_mutex_unlock(&keyInfo_mutex);
/* Check for system .Xmodmap */ /* Modify with xmodmap */
if (access(xmodmap, F_OK) == 0) { if (access(xmodmap, F_OK) == 0) {
/* Check for system .Xmodmap */
if (access(sysmodmap, F_OK) == 0) { if (access(sysmodmap, F_OK) == 0) {
snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, sysmodmap); if(snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, sysmodmap) < sizeof(cmd)) {
X11ApplicationLaunchClient(cmd); X11ApplicationLaunchClient(cmd);
} else {
ErrorF("X11.app: Unable to create / execute xmodmap command line");
}
} }
}
/* Check for user's local .Xmodmap */
/* Check for user's local .Xmodmap */ if ((homedir != NULL) && (snprintf (usermodmap, sizeof(usermodmap), "%s/.Xmodmap", homedir) < sizeof(usermodmap))) {
if (homedir != NULL) { if (access(usermodmap, F_OK) == 0) {
snprintf (usermodmap, sizeof(usermodmap), "%s/.Xmodmap", homedir); if(snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, usermodmap) < sizeof(cmd)) {
if (access(usermodmap, F_OK) == 0) { X11ApplicationLaunchClient(cmd);
snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, usermodmap); } else {
X11ApplicationLaunchClient(cmd); ErrorF("X11.app: Unable to create / execute xmodmap command line");
}
}
} else {
ErrorF("X11.app: Unable to determine path to user's .Xmodmap");
} }
} }
} }