5 #ifndef _Included_org_cacert_natives_SetUID
6 #define _Included_org_cacert_natives_SetUID
11 static jobject getStatus(JNIEnv *env, int successCode, const char * message) {
12 jstring message_str = (*env)->NewStringUTF(env, message);
13 jboolean success = successCode;
14 jclass cls = (*env)->FindClass(env, "Lorg/cacert/gigi/natives/SetUID$Status;");
15 jmethodID constructor = (*env)->GetMethodID(env, cls, "<init>", "(ZLjava/lang/String;)V");
16 return (*env)->NewObject(env, cls, constructor, success, message_str);
19 JNIEXPORT jobject JNICALL Java_org_cacert_gigi_natives_SetUID_setUid
20 (JNIEnv *env, jobject obj, jint uid, jint gid) {
22 /* We don't need the reference for the object/class we are working on */
25 if(setgid((int)gid)) {
26 return (jobject)getStatus(env, 0, "Error while setting GID.");
29 if(setuid((int)uid)) {
30 return (jobject)getStatus(env, 0, "Error while setting UID.");
33 return (jobject)getStatus(env, 1, "Successfully set uid/gid.");