diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-06-11 20:58:21 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-06-11 20:58:21 +0000 |
commit | a1c542bfc5684d914cf2af2c3ec9d5432d0b01dc (patch) | |
tree | d9b4c2f7304ab104283cee33d80f280c8950b7d6 /nscd/cache.c | |
parent | 9be8ed9e947e91d83663739406bd04e351c0897e (diff) | |
download | glibc-a1c542bfc5684d914cf2af2c3ec9d5432d0b01dc.tar.gz glibc-a1c542bfc5684d914cf2af2c3ec9d5432d0b01dc.tar.xz glibc-a1c542bfc5684d914cf2af2c3ec9d5432d0b01dc.zip |
Update.
1999-06-11 Thorsten Kukuk <kukuk@suse.de> * nscd/nscd.c: Add -S options for separate caching of data for every user. So one user couldn't see the data another user has gotten with his credentials. * nscd/nscd.h: Add new prototypes. * nscd/cache.c: Compare owner of cache entry if in secure mode. * nscd/connections.c: Check on shutdown if caller really was root. In secure mode get uid of caller. * nscd/grpcache.c: Add support for new secure group mode. * nscd/hstcache.c: Add support for new secure hosts mode. * nscd/pwdcache.c: Add support for new secure passwd mode.
Diffstat (limited to 'nscd/cache.c')
-rw-r--r-- | nscd/cache.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/nscd/cache.c b/nscd/cache.c index e57c8686d2..0071c11524 100644 --- a/nscd/cache.c +++ b/nscd/cache.c @@ -38,7 +38,8 @@ This function must be called with the read-lock held. */ struct hashentry * -cache_search (int type, void *key, size_t len, struct database *table) +cache_search (int type, void *key, size_t len, struct database *table, + uid_t owner) { unsigned long int hash = __nis_hash (key, len) % table->module; struct hashentry *work; @@ -47,8 +48,8 @@ cache_search (int type, void *key, size_t len, struct database *table) while (work != NULL) { - if (type == work->type - && len == work->len && memcmp (key, work->key, len) == 0) + if (type == work->type && len == work->len + && memcmp (key, work->key, len) == 0 && work->owner == owner) { /* We found the entry. Increment the appropriate counter. */ if (work->data == (void *) -1) @@ -76,7 +77,7 @@ cache_search (int type, void *key, size_t len, struct database *table) the readlock reduces the chance of conflicts. */ void cache_add (int type, void *key, size_t len, const void *packet, size_t total, - void *data, int last, time_t t, struct database *table) + void *data, int last, time_t t, struct database *table, uid_t owner) { unsigned long int hash = __nis_hash (key, len) % table->module; struct hashentry *newp; @@ -88,6 +89,7 @@ cache_add (int type, void *key, size_t len, const void *packet, size_t total, newp->type = type; newp->len = len; newp->key = key; + newp->owner = owner; newp->data = data; newp->timeout = t; newp->packet = packet; |