mturk 2005/01/16 23:56:13 Modified: jni/java/org/apache/tomcat/jni Procattr.java jni/native/src proc.c Log: Added user_set and group_set that are new to APR 1.1.0 for setting uid/gid of newly created processes. Revision Changes Path 1.3 +19 -1 jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Procattr.java Index: Procattr.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/java/org/apache/tomcat/jni/Procattr.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Procattr.java 14 Jan 2005 14:42:37 -0000 1.2 +++ Procattr.java 17 Jan 2005 07:56:13 -0000 1.3 @@ -150,4 +150,22 @@ */ public static native void errfnSet(long attr, long pool, Object o); + /** + * Set the username used for running process + * @param attr The procattr we care about. + * @param username The username used + * @param password User password if needed. Password is needed on WIN32 + * or any other platform having + * APR_PROCATTR_USER_SET_REQUIRES_PASSWORD set. + */ + public static native int userSet(long attr, String username, String password); + + /** + * Set the group used for running process + * @param attr The procattr we care about. + * @param groupname The group name used + */ + public static native int groupSet(long attr, String groupname); + + } 1.2 +57 -0 jakarta-tomcat-connectors/jni/native/src/proc.c Index: proc.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jni/native/src/proc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- proc.c 14 Jan 2005 13:47:58 -0000 1.1 +++ proc.c 17 Jan 2005 07:56:13 -0000 1.2 @@ -16,6 +16,7 @@ #include "apr.h" #include "apr_pools.h" #include "apr_thread_proc.h" +#include "apr_version.h" #include "tcn.h" @@ -375,3 +376,59 @@ } +TCN_IMPLEMENT_CALL(jint, Procattr, userSet)(TCN_STDARGS, + jlong attr, + jstring username, + jstring password) +{ + +#if ((APR_MAJOR_VERSION >= 1) && (APR_MINOR_VERSION >= 1)) + apr_status_t rv; + apr_procattr_t *a = J2P(attr, apr_procattr_t *); + TCN_ALLOC_CSTRING(username); +#if APR_PROCATTR_USER_SET_REQUIRES_PASSWORD + TCN_ALLOC_CSTRING(password); +#else + const char *cpassword = NULL; +#endif + UNREFERENCED(o); + + rv = apr_procattr_user_set(a, J2S(username), J2S(password)); + TCN_FREE_CSTRING(username); +#if APR_PROCATTR_USER_SET_REQUIRES_PASSWORD + TCN_FREE_CSTRING(password); +#endif + return (jint) rv; +#else + UNREFERENCED_STDARGS; + UNREFERENCED(attr); + UNREFERENCED(username); + UNREFERENCED(password); + + return APR_ENOTIMPL; +#endif +} + +TCN_IMPLEMENT_CALL(jint, Procattr, groupSet)(TCN_STDARGS, + jlong attr, + jstring group) +{ + +#if ((APR_MAJOR_VERSION >= 1) && (APR_MINOR_VERSION >= 1)) + apr_status_t rv; + apr_procattr_t *a = J2P(attr, apr_procattr_t *); + TCN_ALLOC_CSTRING(group); + + UNREFERENCED(o); + + rv = apr_procattr_group_set(a, J2S(group)); + TCN_FREE_CSTRING(group); + return (jint) rv; +#else + UNREFERENCED_STDARGS; + UNREFERENCED(attr); + UNREFERENCED(group); + + return APR_ENOTIMPL; +#endif +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]