8001071: Add simple range check into VM implemenation of Unsafe access methods
authorkvn
Thu, 18 Oct 2012 07:06:31 -0700
changeset 14127 16ba0a8dfde2
parent 14126 afb8a3a86f1f
child 14128 8e2a2d167cd4
8001071: Add simple range check into VM implemenation of Unsafe access methods Summary: Add simple check in debug version of VM. Reviewed-by: twisti, johnc
hotspot/src/share/vm/prims/unsafe.cpp
--- a/hotspot/src/share/vm/prims/unsafe.cpp	Wed Oct 17 12:09:32 2012 -0700
+++ b/hotspot/src/share/vm/prims/unsafe.cpp	Thu Oct 18 07:06:31 2012 -0700
@@ -124,6 +124,8 @@
       assert((void*)p->obj_field_addr<oop>((jint)byte_offset) == ptr_plus_disp,
              "raw [ptr+disp] must be consistent with oop::field_base");
     }
+    jlong p_size = HeapWordSize * (jlong)(p->size());
+    assert(byte_offset < p_size, err_msg("Unsafe access: offset " INT64_FORMAT " > object's size " INT64_FORMAT, byte_offset, p_size));
   }
 #endif
   if (sizeof(char*) == sizeof(jint))    // (this constant folds!)