aboutsummaryrefslogtreecommitdiff
path: root/x11/nvidia-driver
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2012-05-10 11:22:00 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2012-05-10 11:22:00 +0000
commitdbacad32aebe2ff303e5f5e4553e4b4346727a96 (patch)
treee7b8f6ded5653119d9b5a80a97c9ebe5ee83c8dc /x11/nvidia-driver
parentfc40bb99c84394f7c6ab94609db63c83713f7ef9 (diff)
downloadports-dbacad32aebe2ff303e5f5e4553e4b4346727a96.tar.gz
ports-dbacad32aebe2ff303e5f5e4553e4b4346727a96.zip
Notes
Diffstat (limited to 'x11/nvidia-driver')
-rw-r--r--x11/nvidia-driver/Makefile4
-rw-r--r--x11/nvidia-driver/files/security-patch-CVE-2012-094628
2 files changed, 32 insertions, 0 deletions
diff --git a/x11/nvidia-driver/Makefile b/x11/nvidia-driver/Makefile
index e084ad371d0f..4fb0ec1b851e 100644
--- a/x11/nvidia-driver/Makefile
+++ b/x11/nvidia-driver/Makefile
@@ -61,6 +61,10 @@ MASTER_SITE_SUBDIR= freebsd/${DISTVERSION}
ONLY_FOR_ARCHS= i386
.endif
+.if ${NVVERSION} <= 1905300
+EXTRA_PATCHES= ${PATCHDIR}/security-patch-CVE-2012-0946
+.endif
+
OPTIONS= FREEBSD_AGP "Use FreeBSD AGP GART driver" off \
ACPI_PM "Enable support for ACPI Power Management" off \
LINUX "Build with support for Linux compatibility" on
diff --git a/x11/nvidia-driver/files/security-patch-CVE-2012-0946 b/x11/nvidia-driver/files/security-patch-CVE-2012-0946
new file mode 100644
index 000000000000..86e7dce9936b
--- /dev/null
+++ b/x11/nvidia-driver/files/security-patch-CVE-2012-0946
@@ -0,0 +1,28 @@
+--- src/nv.h.orig 2011-07-14 02:51:53.000000000 +0800
++++ src/nv.h 2012-05-10 18:15:51.000000000 +0800
+@@ -364,6 +364,14 @@
+ ((offset) >= (nv)->agp.address) && \
+ (((offset) + ((length)-1)) <= (nv)->agp.address + ((nv)->agp.size-1)))
+
++#define IS_REG_RANGE_WITHIN_MAPPING(nv, roffset, rlength, moffset, mlength) \
++ (((moffset) <= ((nv)->regs->address + ((roffset) + (rlength)-1))) &&\
++ (((moffset) + (mlength)-1) >= ((nv)->regs->address + (roffset))))
++
++#define IS_BLACKLISTED_REG_OFFSET(nv, offset, length) \
++ ((IS_REG_RANGE_WITHIN_MAPPING(nv, 0x1000, 0x1000, offset, length)) ||\
++ (IS_REG_RANGE_WITHIN_MAPPING(nv, 0x700000, 0x100000, offset, length)))
++
+ /* duplicated from nvos.h for external builds */
+ #ifndef NVOS_AGP_CONFIG_DISABLE_AGP
+ # define NVOS_AGP_CONFIG_DISABLE_AGP (0x00000000)
+--- src/nvidia_subr.c.orig 2012-05-10 18:09:01.000000000 +0800
++++ src/nvidia_subr.c 2012-05-10 18:13:41.000000000 +0800
+@@ -1464,6 +1464,8 @@
+ }
+
+ if (IS_REG_OFFSET(nv, offset, PAGE_SIZE)) {
++ if (IS_BLACKLISTED_REG_OFFSET(nv, offset, PAGE_SIZE))
++ return -1;
+ *physical = offset;
+ return 0;
+ }