diff options
Diffstat (limited to 'nss/group.c')
-rw-r--r-- | nss/group.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/nss/group.c b/nss/group.c new file mode 100644 index 0000000..e7a79f6 --- /dev/null +++ b/nss/group.c @@ -0,0 +1,56 @@ +/* +enum nss_status +_nss_rainbow_initgroups_dyn(const char *user, gid_t gid, long int *start, long int *size, gid_t **groupsp, long int limit, int *errnop) { + openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); + PERROR("Hallo!"); + return NSS_STATUS_SUCCESS; +} + + if (uid < 10000) + return NSS_STATUS_NOTFOUND; + + int pathlen = 1024; + char pathdata[1024], *pathbuf = pathdata; + + + result->pw_dir = buf; + CHK(format_buf(&pathbuf, &pathlen, "/home/olpc/isolation/1/uid_to_home_dir/%d", uid) == 0, + "Unable to calculate home dir.", out_error_errno); + + struct stat st; + CHK(stat(result->pw_dir, &st) == -1, + "Stat failed for homebuf.", out_error_errno); + result->pw_uid = uid; + result->pw_gid = st.st_gid; + + (*groupsp)[*start] = +} + +enum nss_status _nss_rainbow_setgrent(void) { + openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); + PERROR("Hallo!"); + return NSS_STATUS_SUCCESS; } +enum nss_status _nss_rainbow_endgrent(void) { + openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); + PERROR("Hallo!"); + return NSS_STATUS_SUCCESS; } + +enum nss_status +_nss_rainbow_getgrent_r(struct group *result, char *buf, size_t buflen, int *errnop) { + openlog("nss-rainbow", LOG_PID, LOG_LOCAL0); + PERROR("Hallo!"); + return NSS_STATUS_NOTFOUND; + //Do we really need grent/grid/grnam? +} + + +enum nss_status +_nss_rainbow_getgrgid_r(gid_t gid, struct group *gbuf, char *buf, size_t buflen, int *errnop) { + return NSS_STATUS_NOTFOUND; +} + +enum nss_status +_nss_rainbow_getgrnam_r(const char* name, struct group *gbuf, char *buf, size_t buflen, int *errnop) { + return NSS_STATUS_NOTFOUND; +} +*/ |