提交 c93b789c 编写于 作者: S sgabdura

8016357: Update hotspot diagnostic class

Summary: Add security check to HotSpotDiagnostic.dumpHeap
Reviewed-by: fparain, sla, ahgross
上级 1f092314
......@@ -57,7 +57,7 @@ SUNWprivate_1.1 {
Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
Java_sun_management_GcInfoBuilder_getLastGcInfo0;
Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
Java_sun_management_HotSpotDiagnostic_dumpHeap;
Java_sun_management_HotSpotDiagnostic_dumpHeap0;
Java_sun_management_HotspotThread_getInternalThreadCount;
Java_sun_management_HotspotThread_getInternalThreadTimes0;
Java_sun_management_MemoryImpl_getMemoryManagers0;
......
......@@ -57,7 +57,7 @@ SUNWprivate_1.1 {
Java_sun_management_GcInfoBuilder_fillGcAttributeInfo;
Java_sun_management_GcInfoBuilder_getLastGcInfo0;
Java_sun_management_GcInfoBuilder_getNumGcExtAttributes;
Java_sun_management_HotSpotDiagnostic_dumpHeap;
Java_sun_management_HotSpotDiagnostic_dumpHeap0;
Java_sun_management_HotspotThread_getInternalThreadCount;
Java_sun_management_HotspotThread_getInternalThreadTimes0;
Java_sun_management_MemoryImpl_getMemoryManagers0;
......
......@@ -66,6 +66,11 @@ public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
* cannot be created, opened, or written to.
* @throws UnsupportedOperationException if this operation is not supported.
* @throws NullPointerException if <tt>outputFile</tt> is <tt>null</tt>.
* @throws SecurityException
* If a security manager exists and its {@link
* java.lang.SecurityManager#checkWrite(java.lang.String)}
* method denies write access to the named file
* or the caller does not have ManagmentPermission("control").
*/
public void dumpHeap(String outputFile, boolean live) throws java.io.IOException;
......
......@@ -40,7 +40,17 @@ public class HotSpotDiagnostic implements HotSpotDiagnosticMXBean {
public HotSpotDiagnostic() {
}
public native void dumpHeap(String outputFile, boolean live) throws IOException;
public void dumpHeap(String outputFile, boolean live) throws IOException {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(outputFile);
Util.checkControlAccess();
}
dumpHeap0(outputFile, live);
}
private native void dumpHeap0(String outputFile, boolean live) throws IOException;
public List<VMOption> getDiagnosticOptions() {
List<Flag> allFlags = Flag.getAllFlags();
......
......@@ -29,7 +29,7 @@
#include "sun_management_HotSpotDiagnostic.h"
JNIEXPORT void JNICALL
Java_sun_management_HotSpotDiagnostic_dumpHeap
Java_sun_management_HotSpotDiagnostic_dumpHeap0
(JNIEnv *env, jobject dummy, jstring outputfile, jboolean live)
{
jmm_interface->DumpHeap0(env, outputfile, live);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册