src/java.base/share/native/libjava/Class.c
changeset 58481 48a73ec3a817
parent 58056 db92a157dd70
child 58679 9c3209ff7550
child 58920 d67ebc838ab8
equal deleted inserted replaced
58480:8ca46e186a63 58481:48a73ec3a817
    33 #include <stdlib.h>
    33 #include <stdlib.h>
    34 
    34 
    35 #include "jni.h"
    35 #include "jni.h"
    36 #include "jni_util.h"
    36 #include "jni_util.h"
    37 #include "jvm.h"
    37 #include "jvm.h"
       
    38 #include "check_classname.h"
    38 #include "java_lang_Class.h"
    39 #include "java_lang_Class.h"
    39 
       
    40 /* defined in libverify.so/verify.dll (src file common/check_format.c) */
       
    41 extern jboolean VerifyClassname(char *utf_name, jboolean arrayAllowed);
       
    42 extern jboolean VerifyFixClassname(char *utf_name);
       
    43 
    40 
    44 #define OBJ "Ljava/lang/Object;"
    41 #define OBJ "Ljava/lang/Object;"
    45 #define CLS "Ljava/lang/Class;"
    42 #define CLS "Ljava/lang/Class;"
    46 #define CPL "Ljdk/internal/reflect/ConstantPool;"
    43 #define CPL "Ljdk/internal/reflect/ConstantPool;"
    47 #define STR "Ljava/lang/String;"
    44 #define STR "Ljava/lang/String;"
   121     } else {
   118     } else {
   122         clname = buf;
   119         clname = buf;
   123     }
   120     }
   124     (*env)->GetStringUTFRegion(env, classname, 0, unicode_len, clname);
   121     (*env)->GetStringUTFRegion(env, classname, 0, unicode_len, clname);
   125 
   122 
   126     if (VerifyFixClassname(clname) == JNI_TRUE) {
   123     if (verifyFixClassname(clname) == JNI_TRUE) {
   127         /* slashes present in clname, use name b4 translation for exception */
   124         /* slashes present in clname, use name b4 translation for exception */
   128         (*env)->GetStringUTFRegion(env, classname, 0, unicode_len, clname);
   125         (*env)->GetStringUTFRegion(env, classname, 0, unicode_len, clname);
   129         JNU_ThrowClassNotFoundException(env, clname);
   126         JNU_ThrowClassNotFoundException(env, clname);
   130         goto done;
   127         goto done;
   131     }
   128     }
   132 
   129 
   133     if (!VerifyClassname(clname, JNI_TRUE)) {  /* expects slashed name */
   130     if (!verifyClassname(clname, JNI_TRUE)) {  /* expects slashed name */
   134         JNU_ThrowClassNotFoundException(env, clname);
   131         JNU_ThrowClassNotFoundException(env, clname);
   135         goto done;
   132         goto done;
   136     }
   133     }
   137 
   134 
   138     cls = JVM_FindClassFromCaller(env, clname, initialize, loader, caller);
   135     cls = JVM_FindClassFromCaller(env, clname, initialize, loader, caller);