to a memory-mapped file in the traced process's address space even if neither the traced process nor the tracing process had write access to that file. Security: CVE-2013-2171 Security: FreeBSD-SA-13:06.mmap Approved by: so
17 lines
559 B
Diff
17 lines
559 B
Diff
Index: sys/vm/vm_map.c
|
|
===================================================================
|
|
--- sys/vm/vm_map.c (revision 251636)
|
|
+++ sys/vm/vm_map.c (working copy)
|
|
@@ -3761,6 +3761,12 @@ RetryLookup:;
|
|
vm_map_unlock_read(map);
|
|
return (KERN_PROTECTION_FAILURE);
|
|
}
|
|
+ if ((fault_typea & VM_PROT_COPY) != 0 &&
|
|
+ (entry->max_protection & VM_PROT_WRITE) == 0 &&
|
|
+ (entry->eflags & MAP_ENTRY_COW) == 0) {
|
|
+ vm_map_unlock_read(map);
|
|
+ return (KERN_PROTECTION_FAILURE);
|
|
+ }
|
|
|
|
/*
|
|
* If this page is not pageable, we have to get it for all possible
|