~ubuntu-branches/ubuntu/trusty/libxi/trusty-security

« back to all changes in this revision

Viewing changes to src/XIQueryDevice.c

  • Committer: Package Import Robot
  • Author(s): Christopher James Halse Rogers
  • Date: 2012-01-18 11:44:39 UTC
  • mfrom: (1.1.8) (4.1.4 experimental)
  • Revision ID: package-import@ubuntu.com-20120118114439-bm7qksg514zh51do
Tags: 2:1.5.99.2-0ubuntu3
Bump build depends on x11proto-input-dev to 2.1.99.5.  Our 2.1.99.4 package
is really 2.0.2, so 2.1.99.5 is the first version with MT support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 *
23
23
 */
24
24
 
 
25
#if HAVE_CONFIG_H
 
26
#include <config.h>
 
27
#endif
 
28
 
25
29
#include <stdint.h>
26
30
#include <X11/Xlibint.h>
27
31
#include <X11/extensions/XI2proto.h>
29
33
#include <X11/extensions/extutil.h>
30
34
#include "XIint.h"
31
35
 
32
 
extern int copy_classes(XIDeviceInfo* to, xXIAnyInfo* from, int nclasses);
 
36
extern int copy_classes(XIDeviceInfo* to, xXIAnyInfo* from, int *nclasses);
33
37
extern int size_classes(xXIAnyInfo* from, int nclasses);
34
38
 
35
39
XIDeviceInfo*
70
74
 
71
75
    for (i = 0; i < reply.num_devices; i++)
72
76
    {
 
77
        int             nclasses;
 
78
        size_t          sz;
73
79
        XIDeviceInfo    *lib = &info[i];
74
80
        xXIDeviceInfo   *wire = (xXIDeviceInfo*)ptr;
75
81
 
77
83
        lib->use         = wire->use;
78
84
        lib->attachment  = wire->attachment;
79
85
        lib->enabled     = wire->enabled;
80
 
        lib->num_classes = wire->num_classes;
81
 
        lib->classes     = (XIAnyClassInfo**)&lib[1];
 
86
        nclasses         = wire->num_classes;
82
87
 
83
88
        ptr += sizeof(xXIDeviceInfo);
84
89
 
86
91
        strncpy(lib->name, ptr, wire->name_len);
87
92
        ptr += ((wire->name_len + 3)/4) * 4;
88
93
 
89
 
        lib->classes = Xmalloc(size_classes((xXIAnyInfo*)ptr, lib->num_classes));
90
 
        ptr += copy_classes(lib, (xXIAnyInfo*)ptr, lib->num_classes);
 
94
        sz = size_classes((xXIAnyInfo*)ptr, nclasses);
 
95
        lib->classes = Xmalloc(sz);
 
96
        ptr += copy_classes(lib, (xXIAnyInfo*)ptr, &nclasses);
 
97
        /* We skip over unused classes */
 
98
        lib->num_classes = nclasses;
91
99
    }
92
100
 
93
101
    Xfree(buf);