Listing 1
micah/util/UID.java
package micah.util;
public class UID {
public static final int
SUCCESS = 0;
public static final int
FAILURE = -1;
public static native int
setuid(int uid);
public static native int
seteuid(int uid);
public static native int
setgid(int gid);
public static native int
setegid(int gid);
static {
System.loadLibrary("uid");
}
}
Listing 2
micah/util/micah_util_UID.h
/* DO NOT EDIT THIS FILE - it is machine generated
*/
#include <jni.h>
/* Header for class micah_util_UID */
#ifndef _Included_micah_util_UID
#define _Included_micah_util_UID
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: micah_util_UID
* Method: setuid
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_micah_util_UID_setuid
(JNIEnv *, jclass, jint);
/*
* Class: micah_util_UID
* Method: seteuid
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_micah_util_UID_seteuid
(JNIEnv *, jclass, jint);
/*
* Class: micah_util_UID
* Method: setgid
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_micah_util_UID_setgid
(JNIEnv *, jclass, jint);
/*
* Class: micah_util_UID
* Method: setegid
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_micah_util_UID_setegid
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
Listing 3
micah/util/unix_uid.c
#include <jni.h>
#include "micah_util_UID.h"
#include <sys/types.h>
#include <unistd.h>
JNIEXPORT jint JNICALL
Java_micah_util_UID_setuid (JNIEnv * jnienv,
jclass j, jint uid)
{
return((jint)setuid((uid_t)uid));
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_seteuid (JNIEnv * jnienv,
jclass j, jint uid)
{
return((jint)seteuid((uid_t)uid));
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_setgid (JNIEnv * jnienv,
jclass j, jint gid)
{
return((jint)setgid((uid_t)gid));
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_setegid (JNIEnv * jnienv,
jclass j, jint gid)
{
return((jint)setegid((uid_t)gid));
}
Listing 4
micah/util/win_uid.c
#include <jni.h>
#include "micah_util_UID.h"
JNIEXPORT jint JNICALL
Java_micah_util_UID_setuid (JNIEnv * jn,
jclass j,
jint uid)
{
return(0);
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_seteuid (JNIEnv * jn,
jclass j,
jint uid)
{
return(0);
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_setgid (JNIEnv * jn,
jclass j,
jint gid)
{
return(0);
}
JNIEXPORT jint JNICALL
Java_micah_util_UID_setegid (JNIEnv * jn,
jclass j,
jint gid)
{
return(0);
}
Listing 5
testchUID.java
import java.io.*;
import micah.util.*;
class testchUID {
public static void main(String[] args)
{
try {
System.in.read();
}
catch (IOException ioe) {}
int result=UID.setuid(1010);
if (result == UID.SUCCESS) {
System.out.println("Success!");
}
else if (result == UID.FAILURE) {
System.out.println("Failure!");
}
try {
System.in.read();
}
catch (IOException ioe) {}
}
}