aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/test/misc.c
diff options
context:
space:
mode:
authorMike DePaulo <mikedep333@gmail.com>2015-01-10 12:03:47 -0500
committerMike DePaulo <mikedep333@gmail.com>2015-01-10 12:03:47 -0500
commit0f3cca7b69ea6711c8f1963eb213ce8f1629091f (patch)
tree0df630c725acaa3516f27a36ec9c0194fbb132ad /xorg-server/test/misc.c
parent9380c3137260167265f1b528dd3687517cf9449a (diff)
downloadvcxsrv-0f3cca7b69ea6711c8f1963eb213ce8f1629091f.tar.gz
vcxsrv-0f3cca7b69ea6711c8f1963eb213ce8f1629091f.tar.bz2
vcxsrv-0f3cca7b69ea6711c8f1963eb213ce8f1629091f.zip
Fix CVE-2014-8091..8103. Patches were ported from Ubuntu 14.04 (xorg-server 1.15.1)
Diffstat (limited to 'xorg-server/test/misc.c')
-rw-r--r--xorg-server/test/misc.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/xorg-server/test/misc.c b/xorg-server/test/misc.c
index dd792e692..66330a140 100644
--- a/xorg-server/test/misc.c
+++ b/xorg-server/test/misc.c
@@ -28,6 +28,8 @@
#include <stdint.h>
#include "misc.h"
#include "scrnintstr.h"
+#include "dix.h"
+#include "dixstruct.h"
ScreenInfo screenInfo;
@@ -155,11 +157,46 @@ dix_update_desktop_dimensions(void)
assert_dimensions(-w2, -h2, w2, h2);
}
+static int
+dix_request_fixed_size_overflow(ClientRec *client)
+{
+ xReq req = { 0 };
+
+ client->req_len = req.length = 1;
+ REQUEST_FIXED_SIZE(req, SIZE_MAX);
+ return Success;
+}
+
+static int
+dix_request_fixed_size_match(ClientRec *client)
+{
+ xReq req = { 0 };
+
+ client->req_len = req.length = 9;
+ REQUEST_FIXED_SIZE(req, 30);
+ return Success;
+}
+
+static void
+dix_request_size_checks(void)
+{
+ ClientRec client = { 0 };
+ int rc;
+
+ rc = dix_request_fixed_size_overflow(&client);
+ assert(rc == BadLength);
+
+ rc = dix_request_fixed_size_match(&client);
+ assert(rc == Success);
+}
+
+
int
main(int argc, char **argv)
{
dix_version_compare();
dix_update_desktop_dimensions();
+ dix_request_size_checks();
return 0;
}