Mercurial > hg > icedtea7-forest > hotspot
changeset 3521:ed206bb84d16
7171703: JNI DefineClass crashes client VM when first parameter is NULL
Reviewed-by: acorn, kamg, sspitsyn, dholmes
author | fparain |
---|---|
date | Thu, 07 Jun 2012 05:18:09 -0700 |
parents | 2c04ea9341f9 |
children | 168536dbae60 |
files | src/share/vm/prims/jni.cpp |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/prims/jni.cpp Wed Jun 06 05:21:56 2012 +0200 +++ b/src/share/vm/prims/jni.cpp Thu Jun 07 05:18:09 2012 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -378,6 +378,7 @@ jclass cls = NULL; DT_RETURN_MARK(DefineClass, jclass, (const jclass&)cls); + TempNewSymbol class_name = NULL; // Since exceptions can be thrown, class initialization can take place // if name is NULL no check for class name in .class stream has to be made. if (name != NULL) { @@ -387,9 +388,8 @@ // into the constant pool. THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); } + class_name = SymbolTable::new_symbol(name, CHECK_NULL); } - TempNewSymbol class_name = SymbolTable::new_symbol(name, THREAD); - ResourceMark rm(THREAD); ClassFileStream st((u1*) buf, bufLen, NULL); Handle class_loader (THREAD, JNIHandles::resolve(loaderRef));