costin 02/05/23 16:45:08 Modified: jk/native2/jni jk_jni_aprImpl.c Log: Add support for setuid() - to change the user if run as root. Revision Changes Path 1.22 +46 -2 jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c Index: jk_jni_aprImpl.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/jni/jk_jni_aprImpl.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- jk_jni_aprImpl.c 15 May 2002 19:46:46 -0000 1.21 +++ jk_jni_aprImpl.c 23 May 2002 23:45:07 -0000 1.22 @@ -78,6 +78,10 @@ #include "jk_map.h" #include "jk_pool.h" +#ifndef WIN32 +#include <unistd.h> +#include <pwd.h> +#endif #if APR_HAVE_SYS_TYPES_H #include <sys/types.h> @@ -107,7 +111,6 @@ if( jk_env_globalEnv == NULL ) { jk_pool_t *globalPool; - jk_bean_t *jkb; if( jniAprPool==NULL ) { return 0; @@ -212,10 +215,51 @@ /* -------------------- User related functions -------------------- */ JNIEXPORT jlong JNICALL -Java_org_apache_jk_apr_AprImpl_userId(JNIEnv *jniEnv, jobject _jthis, jlong pool) +Java_org_apache_jk_apr_AprImpl_userId(JNIEnv *jniEnv, jobject _jthis) { return 0; +} + +JNIEXPORT jlong JNICALL +Java_org_apache_jk_apr_AprImpl_getPid(JNIEnv *jniEnv, jobject _jthis) +{ + return (jlong) getpid(); +} + + +JNIEXPORT jlong JNICALL +Java_org_apache_jk_apr_AprImpl_setUser(JNIEnv *jniEnv, jobject _jthis, + jstring userJ, jstring groupJ) +{ + int rc=0; +#ifndef WIN32 + const char *user; + char *group; + struct passwd *passwd; + int uid; + int gid; + + user = (*jniEnv)->GetStringUTFChars(jniEnv, userJ, 0); + + passwd = getpwnam(user); + + (*jniEnv)->ReleaseStringUTFChars(jniEnv, userJ, user); + + if (passwd == NULL ) { + return -1; + } + uid = passwd->pw_uid; + gid = passwd->pw_gid; + + if (uid < 0 || gid < 0 ) + return -2; + + rc = setuid(uid); + +#endif + + return rc; } /* -------------------- interprocess mutexes -------------------- */
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>