static void fail_userinfo(CuTest *tc) { apr_uid_t uid; apr_gid_t gid; apr_status_t rv; char *tmp; errno = 0; gid = uid = 9999999; tmp = NULL; rv = apr_uid_name_get(&tmp, uid, p); CuAssert(tc, "apr_uid_name_get should fail or " "return a user name", rv != APR_SUCCESS || tmp != NULL); errno = 0; tmp = NULL; rv = apr_gid_name_get(&tmp, gid, p); CuAssert(tc, "apr_gid_name_get should fail or " "return a group name", rv != APR_SUCCESS || tmp != NULL); gid = 424242; errno = 0; rv = apr_gid_get(&gid, "I_AM_NOT_A_GROUP", p); CuAssert(tc, "apr_gid_get should fail or " "set a group number", rv != APR_SUCCESS || gid == 424242); gid = uid = 424242; errno = 0; rv = apr_uid_get(&uid, &gid, "I_AM_NOT_A_USER", p); CuAssert(tc, "apr_gid_get should fail or " "set a user and group number", rv != APR_SUCCESS || uid == 424242 || gid == 4242442); errno = 0; tmp = NULL; rv = apr_uid_homepath_get(&tmp, "I_AM_NOT_A_USER", p); CuAssert(tc, "apr_uid_homepath_get should fail or " "set a path name", rv != APR_SUCCESS || tmp != NULL); }
static void groupname(CuTest *tc) { apr_uid_t uid; apr_gid_t gid; apr_gid_t retreived_gid; apr_status_t rv; char *gname = NULL; rv = apr_uid_current(&uid, &gid, p); CuAssertIntEquals(tc, APR_SUCCESS, rv); rv = apr_gid_name_get(&gname, gid, p); CuAssertIntEquals(tc, APR_SUCCESS, rv); CuAssertPtrNotNull(tc, gname); rv = apr_gid_get(&retreived_gid, gname, p); CuAssertIntEquals(tc, APR_SUCCESS, rv); CuAssertIntEquals(tc, APR_SUCCESS, apr_gid_compare(gid, retreived_gid)); }
/* translates groupname to groupid */ MVMint64 MVM_proc_nametogid(MVMThreadContext *tc, MVMString *name) { apr_status_t rv; apr_gid_t groupid; char *namestring = MVM_string_utf8_encode_C_string(tc, name); apr_pool_t *tmp_pool; /* need a temporary pool */ if ((rv = apr_pool_create(&tmp_pool, POOL(tc))) != APR_SUCCESS) { free(namestring); MVM_exception_throw_apr_error(tc, rv, "Failed to get gid from group name: "); } if ((rv = apr_gid_get(&groupid, (const char *)namestring, tmp_pool)) != APR_SUCCESS) { apr_pool_destroy(tmp_pool); free(namestring); MVM_exception_throw_apr_error(tc, rv, "Failed to get gid from group name: "); } apr_pool_destroy(tmp_pool); free(namestring); return (MVMint64)groupid; }
APR_DECLARE(apr_status_t) apr_get_groupid(apr_gid_t *groupid, const char *groupname, apr_pool_t *p) { return apr_gid_get(groupid, groupname, p); }