8016357: Update hotspot diagnostic class

Add security check to HotSpotDiagnostic.dumpHeap

Reviewed-by: fparain, sla, ahgross
This commit is contained in:
Sergey Gabdurakhmanov 2013-07-23 09:30:58 +04:00
parent bd41c425d2
commit ff1d4ae905
5 changed files with 19 additions and 4 deletions
jdk
make/java/management
makefiles/mapfiles/libmanagement
src/share
classes
native/sun/management

@ -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);