projects
/
libnss-afs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
release v1.01, include support for old Linux 2.4-style PAGs
[libnss-afs.git]
/
nss_afs.c
diff --git
a/nss_afs.c
b/nss_afs.c
index
6004e74
..
e315421
100644
(file)
--- a/
nss_afs.c
+++ b/
nss_afs.c
@@
-54,6
+54,8
@@
#define AFS_MAGIC_ANONYMOUS_USERID 32766
#define MIN_PAG_GID 0x41000000L
#define MAX_PAG_GID 0x41FFFFFFL
#define AFS_MAGIC_ANONYMOUS_USERID 32766
#define MIN_PAG_GID 0x41000000L
#define MAX_PAG_GID 0x41FFFFFFL
+#define MIN_OLDPAG_GID 0x3f00
+#define MAX_OLDPAG_GID 0xff00
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
@@
-293,7
+295,12
@@
int get_shell(char *name, char **buffer, size_t *buflen) {
enum nss_status _nss_afs_getgrgid_r (gid_t gid, struct group *result,
char *buffer, size_t buflen, int *errnop) {
int length;
enum nss_status _nss_afs_getgrgid_r (gid_t gid, struct group *result,
char *buffer, size_t buflen, int *errnop) {
int length;
- if ( gid < MIN_PAG_GID || gid > MAX_PAG_GID) {
+ int showgid = 0;
+ if (gid >= MIN_PAG_GID && gid <= MAX_PAG_GID) {
+ showgid = gid-MIN_PAG_GID;
+ } else if (gid >= MIN_OLDPAG_GID && gid <= MAX_OLDPAG_GID) {
+ showgid = gid-MIN_OLDPAG_GID;
+ } else {
*errnop=ENOENT;
return NSS_STATUS_NOTFOUND;
}
*errnop=ENOENT;
return NSS_STATUS_NOTFOUND;
}
@@
-301,7
+308,7
@@
enum nss_status _nss_afs_getgrgid_r (gid_t gid, struct group *result,
result->gr_gid=gid;
result->gr_name=buffer;
result->gr_gid=gid;
result->gr_name=buffer;
- length=snprintf(buffer,buflen,"AfsPag-%x",gid-MIN_PAG_GID);
+ length=snprintf(buffer,buflen,"AfsPag-%x",showgid);
if (length < 0) break;
length += 1;
if (length < 0) break;
length += 1;