File: | src/Host.c |
Location: | line 97, column 2 |
Description: | Null pointer argument in call to memory copy function |
1 | /* | |||||
2 | ||||||
3 | Copyright 1986, 1998 The Open Group | |||||
4 | ||||||
5 | All rights reserved. | |||||
6 | ||||||
7 | Permission is hereby granted, free of charge, to any person obtaining a | |||||
8 | copy of this software and associated documentation files (the | |||||
9 | "Software"), to deal in the Software without restriction, including | |||||
10 | without limitation the rights to use, copy, modify, merge, publish, | |||||
11 | distribute, and/or sell copies of the Software, and to permit persons | |||||
12 | to whom the Software is furnished to do so, provided that the above | |||||
13 | copyright notice(s) and this permission notice appear in all copies of | |||||
14 | the Software and that both the above copyright notice(s) and this | |||||
15 | permission notice appear in supporting documentation. | |||||
16 | ||||||
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |||||
18 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||||
19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT | |||||
20 | OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |||||
21 | HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL | |||||
22 | INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING | |||||
23 | FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, | |||||
24 | NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION | |||||
25 | WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||||
26 | ||||||
27 | Except as contained in this notice, the name of a copyright holder | |||||
28 | shall not be used in advertising or otherwise to promote the sale, use | |||||
29 | or other dealings in this Software without prior written authorization | |||||
30 | of the copyright holder. | |||||
31 | ||||||
32 | X Window System is a trademark of The Open Group. | |||||
33 | ||||||
34 | */ | |||||
35 | ||||||
36 | /* | |||||
37 | * Copyright 2004 Oracle and/or its affiliates. All rights reserved. | |||||
38 | * | |||||
39 | * Permission is hereby granted, free of charge, to any person obtaining a | |||||
40 | * copy of this software and associated documentation files (the "Software"), | |||||
41 | * to deal in the Software without restriction, including without limitation | |||||
42 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | |||||
43 | * and/or sell copies of the Software, and to permit persons to whom the | |||||
44 | * Software is furnished to do so, subject to the following conditions: | |||||
45 | * | |||||
46 | * The above copyright notice and this permission notice (including the next | |||||
47 | * paragraph) shall be included in all copies or substantial portions of the | |||||
48 | * Software. | |||||
49 | * | |||||
50 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
51 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
52 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |||||
53 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
54 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||||
55 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||||
56 | * DEALINGS IN THE SOFTWARE. | |||||
57 | */ | |||||
58 | ||||||
59 | ||||||
60 | /* this might be rightly regarded an os dependent file */ | |||||
61 | ||||||
62 | #ifdef HAVE_CONFIG_H1 | |||||
63 | #include <config.h> | |||||
64 | #endif | |||||
65 | #include "Xlibint.h" | |||||
66 | ||||||
67 | static inline int | |||||
68 | changehost (Display *dpy, XHostAddress *host, BYTE mode) | |||||
69 | { | |||||
70 | xChangeHostsReq *req; | |||||
71 | int length; | |||||
72 | XServerInterpretedAddress *siAddr; | |||||
73 | int addrlen; | |||||
74 | ||||||
75 | siAddr = host->family == FamilyServerInterpreted5 ? | |||||
76 | (XServerInterpretedAddress *)host->address : NULL((void*)0); | |||||
77 | addrlen = siAddr ? | |||||
78 | siAddr->typelength + siAddr->valuelength + 1 : host->length; | |||||
79 | ||||||
80 | length = (addrlen + 3) & ~0x3; /* round up */ | |||||
81 | ||||||
82 | LockDisplay(dpy)if ((dpy)->lock_fns) (*(dpy)->lock_fns->lock_display )(dpy); | |||||
83 | GetReqExtra (ChangeHosts, length, req)req = (xChangeHostsReq *) _XGetRequest(dpy, 109, 8 + length); | |||||
84 | if (!req) { | |||||
85 | UnlockDisplay(dpy)if ((dpy)->lock_fns) (*(dpy)->lock_fns->unlock_display )(dpy); | |||||
86 | return 0; | |||||
87 | } | |||||
88 | req->mode = mode; | |||||
89 | req->hostFamily = host->family; | |||||
90 | req->hostLength = addrlen; | |||||
91 | if (siAddr) { | |||||
92 | char *dest = (char *) NEXTPTR(req,xChangeHostsReq)(((xChangeHostsReq *)(req)) + 1); | |||||
93 | memcpy(dest, siAddr->type, siAddr->typelength)__builtin___memcpy_chk (dest, siAddr->type, siAddr->typelength , __builtin_object_size (dest, 0)); | |||||
94 | dest[siAddr->typelength] = '\0'; | |||||
95 | memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength)__builtin___memcpy_chk (dest + siAddr->typelength + 1, siAddr ->value, siAddr->valuelength, __builtin_object_size (dest + siAddr->typelength + 1, 0)); | |||||
96 | } else { | |||||
97 | memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen)__builtin___memcpy_chk ((char *) (((xChangeHostsReq *)(req)) + 1), host->address, addrlen, __builtin_object_size ((char * ) (((xChangeHostsReq *)(req)) + 1), 0)); | |||||
| ||||||
98 | } | |||||
99 | UnlockDisplay(dpy)if ((dpy)->lock_fns) (*(dpy)->lock_fns->unlock_display )(dpy); | |||||
100 | SyncHandle()if (dpy->synchandler) (*dpy->synchandler)(dpy); | |||||
101 | return 1; | |||||
102 | } | |||||
103 | ||||||
104 | int | |||||
105 | XAddHost ( | |||||
106 | register Display *dpy, | |||||
107 | XHostAddress *host) | |||||
108 | { | |||||
109 | return changehost(dpy, host, HostInsert0); | |||||
110 | } | |||||
111 | ||||||
112 | int | |||||
113 | XRemoveHost ( | |||||
114 | register Display *dpy, | |||||
115 | XHostAddress *host) | |||||
116 | { | |||||
117 | return changehost(dpy, host, HostDelete1); | |||||
118 | } | |||||
119 | ||||||
120 | int | |||||
121 | XAddHosts ( | |||||
122 | register Display *dpy, | |||||
123 | XHostAddress *hosts, | |||||
124 | int n) | |||||
125 | { | |||||
126 | register int i; | |||||
127 | for (i = 0; i < n; i++) { | |||||
128 | (void) XAddHost(dpy, &hosts[i]); | |||||
129 | } | |||||
130 | return 1; | |||||
131 | } | |||||
132 | ||||||
133 | int | |||||
134 | XRemoveHosts ( | |||||
135 | register Display *dpy, | |||||
136 | XHostAddress *hosts, | |||||
137 | int n) | |||||
138 | { | |||||
139 | register int i; | |||||
140 | for (i = 0; i < n; i++) { | |||||
| ||||||
141 | (void) XRemoveHost(dpy, &hosts[i]); | |||||
142 | } | |||||
143 | return 1; | |||||
144 | } |