diff --git a/CASA/CASA.changes b/CASA/CASA.changes index 85b5302d..5424c66a 100644 --- a/CASA/CASA.changes +++ b/CASA/CASA.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Jan 2 12:33:19 MST 2007 - jnorman@novell.com + +- Bug 231331. Pass correct parameter from JNI to native code. + ------------------------------------------------------------------- Tue Dec 5 22:12:04 US/Mountain 2006 - cmashayekhi@novell.com diff --git a/CASA/jwrapper/jnsscs/jmicasa.c b/CASA/jwrapper/jnsscs/jmicasa.c index b6d3ad52..3ab9bd01 100644 --- a/CASA/jwrapper/jnsscs/jmicasa.c +++ b/CASA/jwrapper/jnsscs/jmicasa.c @@ -20,235 +20,233 @@ * ***********************************************************************/ -#include "com_novell_casa_MiCasa.h" - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -JNIEXPORT jint JNICALL -Java_com_novell_casa_MiCasa_jmiCASASetCredential - (JNIEnv *env, jobject notused, - jint ssFlags, - jstring jsAppSecretID, - jstring jsSharedSecretID, - jint jUsernameType, - jstring jsUsername, - jstring jsPassword - ) -{ - int rcode = 0; - SSCS_SECRET_ID_T appSecretId = {0}; - SSCS_SECRET_ID_T sharedSecretId = {0}; - SSCS_BASIC_CREDENTIAL credential = {0}; - - const char* utf_string; - jboolean isCopy; - utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); - - sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); - appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; - - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env,jsAppSecretID, utf_string); - - // handle sharedsecretid - if (jsSharedSecretID) - { - utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); - sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); - sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; - - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); - } - - // setup credential - utf_string = (*env)->GetStringUTFChars(env, jsUsername, &isCopy); - sscs_Utf8Strcpy((char*)credential.username, utf_string); - credential.unLen = sscs_Utf8Strlen(utf_string)+1; - credential.unFlags = jUsernameType; - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsUsername, utf_string); - - // password - utf_string = (*env)->GetStringUTFChars(env, jsPassword, &isCopy); - sscs_Utf8Strcpy((char*)credential.password, utf_string); - credential.pwordLen = sscs_Utf8Strlen(utf_string)+1; - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsPassword, utf_string); - - - // make the call - if (jsSharedSecretID) - rcode = miCASASetCredential( - ssFlags, - &appSecretId, - &sharedSecretId, - SSCS_CRED_TYPE_BASIC_F, - &credential, - NULL - ); - else - rcode = miCASASetCredential( - ssFlags, - &appSecretId, - NULL, - SSCS_CRED_TYPE_BASIC_F, - &credential, - NULL - ); - - return rcode; -} - -/* - * Class: com_novell_casa_micasa_SecretStore - * Method: jmiCASAGetCredential - * Signature: (I[B[BILcom/novell/casa/micasa/Secret;)I - */ -JNIEXPORT jint JNICALL -Java_com_novell_casa_MiCasa_jmiCASAGetCredential - (JNIEnv *env, jobject unused, - jint ssFlags, - jstring jsAppSecretID, - jstring jsSharedSecretID, - jint jUsernameType, - jobject jcred) -{ - int rcode = 0; - int iCredType = SSCS_CRED_TYPE_BASIC_F; - SSCS_SECRET_ID_T appSecretId = {0}; - SSCS_SECRET_ID_T sharedSecretId = {0}; - SSCS_BASIC_CREDENTIAL credential = {0}; - - const char* utf_string; - jboolean isCopy; - int unType = jUsernameType; - - utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); - sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); - appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsAppSecretID, utf_string); - - // handle sharedsecretid - if (jsSharedSecretID) - { - utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); - sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); - sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; - - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); - } - - // make the call - if (jsSharedSecretID) - rcode = miCASAGetCredential( - ssFlags, - &appSecretId, - &sharedSecretId, - &iCredType, - &credential, - NULL - ); - else - rcode = miCASAGetCredential( - ssFlags, - &appSecretId, - NULL, - &iCredType, - &credential, - NULL - ); - - - if (rcode == 0) - { - // we have a credential - jclass theclazz; - jmethodID mid; - - theclazz = (*env)->GetObjectClass(env, jcred); - mid = (*env)->GetMethodID(env, theclazz, "setUsername", "(Ljava/lang/String;)V"); - if (mid != NULL) - { - //printf("The Username: %s\r\n", credential.username); - jstring jusername = (*env)->NewStringUTF(env, (char *)credential.username); - (*env)->CallObjectMethod(env, jcred, mid, jusername); - } - - mid = (*env)->GetMethodID(env, theclazz, "setPassword", "(Ljava/lang/String;)V"); - { - jstring jpassword = (*env)->NewStringUTF(env, (char *)credential.password); - (*env)->CallObjectMethod(env, jcred, mid, jpassword); - } - } - return rcode; -} - - -/* - * Class: com_novell_casa_micasa_SecretStore - * Method: jmiCASARemoveCredential - * Signature: (I[B[B)I - */ -JNIEXPORT jint JNICALL -Java_com_novell_casa_MiCasa_jmiCASARemoveCredential - (JNIEnv *env, jobject unused, - jint ssFlags, - jstring jsAppSecretID, - jstring jsSharedSecretID) -{ - int rcode = 0; - SSCS_SECRET_ID_T appSecretId = {0}; - SSCS_SECRET_ID_T sharedSecretId = {0}; - - const char* utf_string; - jboolean isCopy; - - utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); - sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); - appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsAppSecretID, utf_string); - - // handle sharedsecretid - if (jsSharedSecretID) - { - utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); - sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); - sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; - - if (isCopy == JNI_TRUE) - (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); - } - - // make the call - if (jsSharedSecretID) - rcode = miCASARemoveCredential( - ssFlags, - &appSecretId, - &sharedSecretId, - NULL); - - else - rcode = miCASARemoveCredential( - ssFlags, - &appSecretId, - NULL, - NULL); - - return rcode; -} - - -#ifdef __cplusplus -} -#endif +#include "com_novell_casa_MiCasa.h" + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +JNIEXPORT jint JNICALL +Java_com_novell_casa_MiCasa_jmiCASASetCredential + (JNIEnv *env, jobject notused, + jint ssFlags, + jstring jsAppSecretID, + jstring jsSharedSecretID, + jint jUsernameType, + jstring jsUsername, + jstring jsPassword + ) +{ + int rcode = 0; + SSCS_SECRET_ID_T appSecretId = {0}; + SSCS_SECRET_ID_T sharedSecretId = {0}; + SSCS_BASIC_CREDENTIAL credential = {0}; + + const char* utf_string; + jboolean isCopy; + utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); + + sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); + appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; + + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env,jsAppSecretID, utf_string); + + // handle sharedsecretid + if (jsSharedSecretID) + { + utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); + sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); + sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; + + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); + } + + // setup credential + utf_string = (*env)->GetStringUTFChars(env, jsUsername, &isCopy); + sscs_Utf8Strcpy((char*)credential.username, utf_string); + credential.unLen = sscs_Utf8Strlen(utf_string)+1; + credential.unFlags = jUsernameType; + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsUsername, utf_string); + + // password + utf_string = (*env)->GetStringUTFChars(env, jsPassword, &isCopy); + sscs_Utf8Strcpy((char*)credential.password, utf_string); + credential.pwordLen = sscs_Utf8Strlen(utf_string)+1; + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsPassword, utf_string); + + + // make the call + if (jsSharedSecretID) + rcode = miCASASetCredential( + ssFlags, + &appSecretId, + &sharedSecretId, + SSCS_CRED_TYPE_BASIC_F, + &credential, + NULL + ); + else + rcode = miCASASetCredential( + ssFlags, + &appSecretId, + NULL, + SSCS_CRED_TYPE_BASIC_F, + &credential, + NULL + ); + + return rcode; +} + +/* + * Class: com_novell_casa_micasa_SecretStore + * Method: jmiCASAGetCredential + * Signature: (I[B[BILcom/novell/casa/micasa/Secret;)I + */ +JNIEXPORT jint JNICALL +Java_com_novell_casa_MiCasa_jmiCASAGetCredential + (JNIEnv *env, jobject unused, + jint ssFlags, + jstring jsAppSecretID, + jstring jsSharedSecretID, + jint jUsernameType, + jobject jcred) +{ + int rcode = 0; + uint32_t iCredType = SSCS_CRED_TYPE_BASIC_F; + SSCS_SECRET_ID_T appSecretId = {0}; + SSCS_SECRET_ID_T sharedSecretId = {0}; + SSCS_BASIC_CREDENTIAL credential = {0}; + + const char* utf_string; + jboolean isCopy; + + utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); + sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); + appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsAppSecretID, utf_string); + + // handle sharedsecretid + if (jsSharedSecretID) + { + utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); + sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); + sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; + + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); + } + + // make the call + if (jsSharedSecretID) + rcode = miCASAGetCredential( + ssFlags, + &appSecretId, + &sharedSecretId, + &iCredType, + &credential, + NULL + ); + else + rcode = miCASAGetCredential( + ssFlags, + &appSecretId, + NULL, + &iCredType, + &credential, + NULL + ); + + + if (rcode == 0) + { + // we have a credential + jclass theclazz; + jmethodID mid; + + theclazz = (*env)->GetObjectClass(env, jcred); + mid = (*env)->GetMethodID(env, theclazz, "setUsername", "(Ljava/lang/String;)V"); + if (mid != NULL) + { + //printf("The Username: %s\r\n", credential.username); + jstring jusername = (*env)->NewStringUTF(env, (char *)credential.username); + (*env)->CallObjectMethod(env, jcred, mid, jusername); + } + + mid = (*env)->GetMethodID(env, theclazz, "setPassword", "(Ljava/lang/String;)V"); + { + jstring jpassword = (*env)->NewStringUTF(env, (char *)credential.password); + (*env)->CallObjectMethod(env, jcred, mid, jpassword); + } + } + return rcode; +} + + +/* + * Class: com_novell_casa_micasa_SecretStore + * Method: jmiCASARemoveCredential + * Signature: (I[B[B)I + */ +JNIEXPORT jint JNICALL +Java_com_novell_casa_MiCasa_jmiCASARemoveCredential + (JNIEnv *env, jobject unused, + jint ssFlags, + jstring jsAppSecretID, + jstring jsSharedSecretID) +{ + int rcode = 0; + SSCS_SECRET_ID_T appSecretId = {0}; + SSCS_SECRET_ID_T sharedSecretId = {0}; + + const char* utf_string; + jboolean isCopy; + + utf_string = (*env)->GetStringUTFChars(env, jsAppSecretID, &isCopy); + sscs_Utf8Strcpy((char*)appSecretId.id, utf_string); + appSecretId.len = sscs_Utf8Strlen(utf_string) + 1; + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsAppSecretID, utf_string); + + // handle sharedsecretid + if (jsSharedSecretID) + { + utf_string = (*env)->GetStringUTFChars(env, jsSharedSecretID, &isCopy); + sscs_Utf8Strcpy((char*)sharedSecretId.id, utf_string); + sharedSecretId.len = sscs_Utf8Strlen(utf_string)+1; + + if (isCopy == JNI_TRUE) + (*env)->ReleaseStringUTFChars(env, jsSharedSecretID, utf_string); + } + + // make the call + if (jsSharedSecretID) + rcode = miCASARemoveCredential( + ssFlags, + &appSecretId, + &sharedSecretId, + NULL); + + else + rcode = miCASARemoveCredential( + ssFlags, + &appSecretId, + NULL, + NULL); + + return rcode; +} + + +#ifdef __cplusplus +} +#endif