diff options
author | marha <marha@users.sourceforge.net> | 2010-12-10 19:06:59 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-12-10 19:06:59 +0000 |
commit | 3a20d23b48c1051e1f22295fd886cc7f643417f6 (patch) | |
tree | 5192dddd9ecf591de2e22504f7268c2935382d90 /xorg-server/dix/devices.c | |
parent | 531a0d974b98074978535f086a73b6b662fa0cea (diff) | |
download | vcxsrv-3a20d23b48c1051e1f22295fd886cc7f643417f6.tar.gz vcxsrv-3a20d23b48c1051e1f22295fd886cc7f643417f6.tar.bz2 vcxsrv-3a20d23b48c1051e1f22295fd886cc7f643417f6.zip |
xserver git update 10/12/2010
Diffstat (limited to 'xorg-server/dix/devices.c')
-rw-r--r-- | xorg-server/dix/devices.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index c1b04a8e6..08eb6c1cd 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -2524,9 +2524,11 @@ AllocDevicePair (ClientPtr client, char* name, if (!pointer)
return BadAlloc;
- pointer->name = calloc(strlen(name) + strlen(" pointer") + 1, sizeof(char));
- strcpy(pointer->name, name);
- strcat(pointer->name, " pointer");
+ if (asprintf(&pointer->name, "%s pointer", name) == -1) {
+ pointer->name = NULL;
+ RemoveDevice(pointer, FALSE);
+ return BadAlloc;
+ }
pointer->public.processInputProc = ProcessOtherEvent;
pointer->public.realInputProc = ProcessOtherEvent;
@@ -2547,9 +2549,12 @@ AllocDevicePair (ClientPtr client, char* name, return BadAlloc;
}
- keyboard->name = calloc(strlen(name) + strlen(" keyboard") + 1, sizeof(char));
- strcpy(keyboard->name, name);
- strcat(keyboard->name, " keyboard");
+ if (asprintf(&keyboard->name, "%s keyboard", name) == -1) {
+ keyboard->name = NULL;
+ RemoveDevice(keyboard, FALSE);
+ RemoveDevice(pointer, FALSE);
+ return BadAlloc;
+ }
keyboard->public.processInputProc = ProcessOtherEvent;
keyboard->public.realInputProc = ProcessOtherEvent;
|