diff options
Diffstat (limited to 'libjava/java/lang/natClass.cc')
-rw-r--r-- | libjava/java/lang/natClass.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 2ca7960..e7f9a35 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -34,6 +34,7 @@ details. */ #include <java/lang/ExceptionInInitializerError.h> #include <java/lang/IllegalAccessException.h> #include <java/lang/IllegalAccessError.h> +#include <java/lang/IllegalArgumentException.h> #include <java/lang/IncompatibleClassChangeError.h> #include <java/lang/InstantiationException.h> #include <java/lang/NoClassDefFoundError.h> @@ -75,10 +76,11 @@ java::lang::Class::forName (jstring className, jboolean initialize, char buffer[length]; _Jv_GetStringUTFRegion (className, 0, length, buffer); - // FIXME: should check syntax of CLASSNAME and throw - // IllegalArgumentException on failure. _Jv_Utf8Const *name = _Jv_makeUtf8Const (buffer, length); + if (! _Jv_VerifyClassName (name)) + throw new java::lang::ClassNotFoundException (className); + // FIXME: should use bootstrap class loader if loader is null. jclass klass = (buffer[0] == '[' ? _Jv_FindClassFromSignature (name->data, loader) |