os: Use strtok instead of xstrtokenize in ComputeLocalClient

Fixes leaking the memory pointed to by the members of the array returned
by xstrtokenize.

Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Michel Dänzer 2016-03-30 18:23:04 +09:00 committed by Michel Dänzer
parent 5ff75da317
commit e156c0ccb5

View File

@ -1131,19 +1131,20 @@ ComputeLocalClient(ClientPtr client)
* is forwarded from another host via SSH * is forwarded from another host via SSH
*/ */
if (cmdname) { if (cmdname) {
char **cmd; char *cmd = strdup(cmdname);
Bool ret; Bool ret;
/* Cut off any colon and whatever comes after it, see /* Cut off any colon and whatever comes after it, see
* https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html * https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html
*/ */
cmd = xstrtokenize(cmdname, ":"); cmd = strtok(cmd, ":");
#if !defined(WIN32) || defined(__CYGWIN__) #if !defined(WIN32) || defined(__CYGWIN__)
cmd[0] = basename(cmd[0]); ret = strcmp(basename(cmd), "ssh") != 0;
#else
ret = strcmp(cmd, "ssh") != 0;
#endif #endif
ret = strcmp(cmd[0], "ssh") != 0;
free(cmd); free(cmd);
return ret; return ret;