DragonFlyBSD Kernel Audit
DF-0021 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/kern_slaballoc.c b/sys/kern/kern_slaballoc.c
--- a/sys/kern/kern_slaballoc.c
+++ b/sys/kern/kern_slaballoc.c
@@ -1199,7 +1199,7 @@
      */
     kup = btokup(ptr);
     if (*kup > 0) {
-	osize = *kup << PAGE_SHIFT;
+	osize = (size_t)*kup << PAGE_SHIFT;
 	if (osize == round_page(size))
 	    return(ptr);
 	if ((nptr = _kmalloc_debug(size, type, flags, file, line)) == NULL)
@@ -1258,7 +1258,7 @@
      */
     kup = btokup(ptr);
     if (*kup > 0) {
-	size = *kup << PAGE_SHIFT;
+	size = (size_t)*kup << PAGE_SHIFT;
 	return size;
     }
 
@@ -1429,7 +1429,7 @@
      */
     kup = btokup(ptr);
     if (*kup > 0) {
-	size = *kup << PAGE_SHIFT;
+	size = (size_t)*kup << PAGE_SHIFT;
 	*kup = 0;
 #ifdef INVARIANTS
 	if (use_weird_array) {