ODROID-U3 xorg-server debian package fork :
[deb_xorg-server.git] / debian / patches / CVE-2014-8xxx / 0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch
CommitLineData
7217e0ca
ML
1From 362ea7ec75543b694ebc8ab7268a2402e80a10bd Mon Sep 17 00:00:00 2001
2From: Alan Coopersmith <alan.coopersmith@oracle.com>
3Date: Sun, 26 Jan 2014 19:23:17 -0800
4Subject: [PATCH 10/33] Xv: unvalidated lengths in XVideo extension swapped
5 procs [CVE-2014-8099]
6
7Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
8Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
9---
10 Xext/xvdisp.c | 20 ++++++++++++++++++++
11 1 file changed, 20 insertions(+)
12
4db25562
JB
13--- a/Xext/xvdisp.c
14+++ b/Xext/xvdisp.c
15@@ -1207,6 +1207,7 @@ static int
7217e0ca
ML
16 SProcXvQueryExtension(ClientPtr client)
17 {
18 REQUEST(xvQueryExtensionReq);
19+ REQUEST_SIZE_MATCH(xvQueryExtensionReq);
20 swaps(&stuff->length);
21 return XvProcVector[xv_QueryExtension] (client);
22 }
4db25562 23@@ -1215,6 +1216,7 @@ static int
7217e0ca
ML
24 SProcXvQueryAdaptors(ClientPtr client)
25 {
26 REQUEST(xvQueryAdaptorsReq);
27+ REQUEST_SIZE_MATCH(xvQueryAdaptorsReq);
28 swaps(&stuff->length);
29 swapl(&stuff->window);
30 return XvProcVector[xv_QueryAdaptors] (client);
4db25562 31@@ -1224,6 +1226,7 @@ static int
7217e0ca
ML
32 SProcXvQueryEncodings(ClientPtr client)
33 {
34 REQUEST(xvQueryEncodingsReq);
35+ REQUEST_SIZE_MATCH(xvQueryEncodingsReq);
36 swaps(&stuff->length);
37 swapl(&stuff->port);
38 return XvProcVector[xv_QueryEncodings] (client);
4db25562 39@@ -1233,6 +1236,7 @@ static int
7217e0ca
ML
40 SProcXvGrabPort(ClientPtr client)
41 {
42 REQUEST(xvGrabPortReq);
43+ REQUEST_SIZE_MATCH(xvGrabPortReq);
44 swaps(&stuff->length);
45 swapl(&stuff->port);
46 swapl(&stuff->time);
4db25562 47@@ -1243,6 +1247,7 @@ static int
7217e0ca
ML
48 SProcXvUngrabPort(ClientPtr client)
49 {
50 REQUEST(xvUngrabPortReq);
51+ REQUEST_SIZE_MATCH(xvUngrabPortReq);
52 swaps(&stuff->length);
53 swapl(&stuff->port);
54 swapl(&stuff->time);
4db25562 55@@ -1253,6 +1258,7 @@ static int
7217e0ca
ML
56 SProcXvPutVideo(ClientPtr client)
57 {
58 REQUEST(xvPutVideoReq);
59+ REQUEST_SIZE_MATCH(xvPutVideoReq);
60 swaps(&stuff->length);
61 swapl(&stuff->port);
62 swapl(&stuff->drawable);
4db25562 63@@ -1272,6 +1278,7 @@ static int
7217e0ca
ML
64 SProcXvPutStill(ClientPtr client)
65 {
66 REQUEST(xvPutStillReq);
67+ REQUEST_SIZE_MATCH(xvPutStillReq);
68 swaps(&stuff->length);
69 swapl(&stuff->port);
70 swapl(&stuff->drawable);
4db25562 71@@ -1291,6 +1298,7 @@ static int
7217e0ca
ML
72 SProcXvGetVideo(ClientPtr client)
73 {
74 REQUEST(xvGetVideoReq);
75+ REQUEST_SIZE_MATCH(xvGetVideoReq);
76 swaps(&stuff->length);
77 swapl(&stuff->port);
78 swapl(&stuff->drawable);
4db25562 79@@ -1310,6 +1318,7 @@ static int
7217e0ca
ML
80 SProcXvGetStill(ClientPtr client)
81 {
82 REQUEST(xvGetStillReq);
83+ REQUEST_SIZE_MATCH(xvGetStillReq);
84 swaps(&stuff->length);
85 swapl(&stuff->port);
86 swapl(&stuff->drawable);
4db25562 87@@ -1329,6 +1338,7 @@ static int
7217e0ca
ML
88 SProcXvPutImage(ClientPtr client)
89 {
90 REQUEST(xvPutImageReq);
91+ REQUEST_AT_LEAST_SIZE(xvPutImageReq);
92 swaps(&stuff->length);
93 swapl(&stuff->port);
94 swapl(&stuff->drawable);
4db25562 95@@ -1352,6 +1362,7 @@ static int
7217e0ca
ML
96 SProcXvShmPutImage(ClientPtr client)
97 {
98 REQUEST(xvShmPutImageReq);
99+ REQUEST_SIZE_MATCH(xvShmPutImageReq);
100 swaps(&stuff->length);
101 swapl(&stuff->port);
102 swapl(&stuff->drawable);
4db25562 103@@ -1379,6 +1390,7 @@ static int
7217e0ca
ML
104 SProcXvSelectVideoNotify(ClientPtr client)
105 {
106 REQUEST(xvSelectVideoNotifyReq);
107+ REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq);
108 swaps(&stuff->length);
109 swapl(&stuff->drawable);
110 return XvProcVector[xv_SelectVideoNotify] (client);
4db25562 111@@ -1388,6 +1400,7 @@ static int
7217e0ca
ML
112 SProcXvSelectPortNotify(ClientPtr client)
113 {
114 REQUEST(xvSelectPortNotifyReq);
115+ REQUEST_SIZE_MATCH(xvSelectPortNotifyReq);
116 swaps(&stuff->length);
117 swapl(&stuff->port);
118 return XvProcVector[xv_SelectPortNotify] (client);
4db25562 119@@ -1397,6 +1410,7 @@ static int
7217e0ca
ML
120 SProcXvStopVideo(ClientPtr client)
121 {
122 REQUEST(xvStopVideoReq);
123+ REQUEST_SIZE_MATCH(xvStopVideoReq);
124 swaps(&stuff->length);
125 swapl(&stuff->port);
126 swapl(&stuff->drawable);
4db25562 127@@ -1407,6 +1421,7 @@ static int
7217e0ca
ML
128 SProcXvSetPortAttribute(ClientPtr client)
129 {
130 REQUEST(xvSetPortAttributeReq);
131+ REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
132 swaps(&stuff->length);
133 swapl(&stuff->port);
134 swapl(&stuff->attribute);
4db25562 135@@ -1418,6 +1433,7 @@ static int
7217e0ca
ML
136 SProcXvGetPortAttribute(ClientPtr client)
137 {
138 REQUEST(xvGetPortAttributeReq);
139+ REQUEST_SIZE_MATCH(xvGetPortAttributeReq);
140 swaps(&stuff->length);
141 swapl(&stuff->port);
142 swapl(&stuff->attribute);
4db25562 143@@ -1428,6 +1444,7 @@ static int
7217e0ca
ML
144 SProcXvQueryBestSize(ClientPtr client)
145 {
146 REQUEST(xvQueryBestSizeReq);
147+ REQUEST_SIZE_MATCH(xvQueryBestSizeReq);
148 swaps(&stuff->length);
149 swapl(&stuff->port);
150 swaps(&stuff->vid_w);
4db25562 151@@ -1441,6 +1458,7 @@ static int
7217e0ca
ML
152 SProcXvQueryPortAttributes(ClientPtr client)
153 {
154 REQUEST(xvQueryPortAttributesReq);
155+ REQUEST_SIZE_MATCH(xvQueryPortAttributesReq);
156 swaps(&stuff->length);
157 swapl(&stuff->port);
158 return XvProcVector[xv_QueryPortAttributes] (client);
4db25562 159@@ -1450,6 +1468,7 @@ static int
7217e0ca
ML
160 SProcXvQueryImageAttributes(ClientPtr client)
161 {
162 REQUEST(xvQueryImageAttributesReq);
163+ REQUEST_SIZE_MATCH(xvQueryImageAttributesReq);
164 swaps(&stuff->length);
165 swapl(&stuff->port);
166 swapl(&stuff->id);
4db25562 167@@ -1462,6 +1481,7 @@ static int
7217e0ca
ML
168 SProcXvListImageFormats(ClientPtr client)
169 {
170 REQUEST(xvListImageFormatsReq);
171+ REQUEST_SIZE_MATCH(xvListImageFormatsReq);
172 swaps(&stuff->length);
173 swapl(&stuff->port);
174 return XvProcVector[xv_ListImageFormats] (client);