forked from pool/glibc
35b77f97b8
Copy from Base:System/glibc based on submit request 24314 from user pbaudis OBS-URL: https://build.opensuse.org/request/show/24314 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/glibc?expand=0&rev=13
142 lines
5.0 KiB
Diff
142 lines
5.0 KiB
Diff
2009-08-18 Anders Johansson <ajohansson@novell.com>
|
|
|
|
* nscd/aicache.c: Fix mixing up dataset and dataset->resp
|
|
offsets and record sizes in assert()s and response sending.
|
|
* nscd/grpcache.c: Likewise.
|
|
* nscd/hstcache.c: Likewise.
|
|
* nscd/initgrcache.c: Likewise.
|
|
* nscd/pwdcache.c: Likewise.
|
|
|
|
Index: nscd/aicache.c
|
|
===================================================================
|
|
--- nscd/aicache.c.orig
|
|
+++ nscd/aicache.c
|
|
@@ -453,13 +453,13 @@ addhstaiX (struct database_dyn *db, int
|
|
{
|
|
assert (db->wr_fd != -1);
|
|
assert ((char *) &dataset->resp > (char *) db->data);
|
|
- assert ((char *) &dataset->resp - (char *) db->head + total
|
|
+ assert ((char *) dataset - (char *) db->head + total
|
|
<= (sizeof (struct database_pers_head)
|
|
+ db->head->module * sizeof (ref_t)
|
|
+ db->head->data_size));
|
|
ssize_t written;
|
|
written = sendfileall (fd, db->wr_fd, (char *) &dataset->resp
|
|
- - (char *) db->head, total);
|
|
+ - (char *) db->head, dataset->head.recsize);
|
|
# ifndef __ASSUME_SENDFILE
|
|
if (written == -1 && errno == ENOSYS)
|
|
goto use_write;
|
|
@@ -470,7 +470,7 @@ addhstaiX (struct database_dyn *db, int
|
|
use_write:
|
|
# endif
|
|
#endif
|
|
- writeall (fd, &dataset->resp, total);
|
|
+ writeall (fd, &dataset->resp, dataset->head.recsize);
|
|
}
|
|
|
|
goto out;
|
|
Index: nscd/grpcache.c
|
|
===================================================================
|
|
--- nscd/grpcache.c.orig
|
|
+++ nscd/grpcache.c
|
|
@@ -299,14 +299,14 @@ cache_addgr (struct database_dyn *db, in
|
|
{
|
|
assert (db->wr_fd != -1);
|
|
assert ((char *) &dataset->resp > (char *) db->data);
|
|
- assert ((char *) &dataset->resp - (char *) db->head
|
|
+ assert ((char *) dataset - (char *) db->head
|
|
+ total
|
|
<= (sizeof (struct database_pers_head)
|
|
+ db->head->module * sizeof (ref_t)
|
|
+ db->head->data_size));
|
|
written = sendfileall (fd, db->wr_fd,
|
|
(char *) &dataset->resp
|
|
- - (char *) db->head, total);
|
|
+ - (char *) db->head, dataset->head.recsize);
|
|
# ifndef __ASSUME_SENDFILE
|
|
if (written == -1 && errno == ENOSYS)
|
|
goto use_write;
|
|
@@ -317,7 +317,7 @@ cache_addgr (struct database_dyn *db, in
|
|
use_write:
|
|
# endif
|
|
#endif
|
|
- written = writeall (fd, &dataset->resp, total);
|
|
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
|
|
}
|
|
|
|
/* Add the record to the database. But only if it has not been
|
|
Index: nscd/hstcache.c
|
|
===================================================================
|
|
--- nscd/hstcache.c.orig
|
|
+++ nscd/hstcache.c
|
|
@@ -341,7 +341,7 @@ cache_addhst (struct database_dyn *db, i
|
|
{
|
|
assert (db->wr_fd != -1);
|
|
assert ((char *) &dataset->resp > (char *) db->data);
|
|
- assert ((char *) &dataset->resp - (char *) db->head
|
|
+ assert ((char *) dataset - (char *) db->head
|
|
+ total
|
|
<= (sizeof (struct database_pers_head)
|
|
+ db->head->module * sizeof (ref_t)
|
|
Index: nscd/initgrcache.c
|
|
===================================================================
|
|
--- nscd/initgrcache.c.orig
|
|
+++ nscd/initgrcache.c
|
|
@@ -354,14 +354,14 @@ addinitgroupsX (struct database_dyn *db,
|
|
{
|
|
assert (db->wr_fd != -1);
|
|
assert ((char *) &dataset->resp > (char *) db->data);
|
|
- assert ((char *) &dataset->resp - (char *) db->head
|
|
+ assert ((char *) dataset - (char *) db->head
|
|
+ total
|
|
<= (sizeof (struct database_pers_head)
|
|
+ db->head->module * sizeof (ref_t)
|
|
+ db->head->data_size));
|
|
written = sendfileall (fd, db->wr_fd,
|
|
(char *) &dataset->resp
|
|
- - (char *) db->head, total);
|
|
+ - (char *) db->head, dataset->head.recsize);
|
|
# ifndef __ASSUME_SENDFILE
|
|
if (written == -1 && errno == ENOSYS)
|
|
goto use_write;
|
|
@@ -372,7 +372,7 @@ addinitgroupsX (struct database_dyn *db,
|
|
use_write:
|
|
# endif
|
|
#endif
|
|
- written = writeall (fd, &dataset->resp, total);
|
|
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
|
|
}
|
|
|
|
|
|
Index: nscd/pwdcache.c
|
|
===================================================================
|
|
--- nscd/pwdcache.c.orig
|
|
+++ nscd/pwdcache.c
|
|
@@ -294,14 +294,14 @@ cache_addpw (struct database_dyn *db, in
|
|
{
|
|
assert (db->wr_fd != -1);
|
|
assert ((char *) &dataset->resp > (char *) db->data);
|
|
- assert ((char *) &dataset->resp - (char *) db->head
|
|
+ assert ((char *) dataset - (char *) db->head
|
|
+ total
|
|
<= (sizeof (struct database_pers_head)
|
|
+ db->head->module * sizeof (ref_t)
|
|
+ db->head->data_size));
|
|
written = sendfileall (fd, db->wr_fd,
|
|
(char *) &dataset->resp
|
|
- - (char *) db->head, total);
|
|
+ - (char *) db->head, dataset->head.recsize );
|
|
# ifndef __ASSUME_SENDFILE
|
|
if (written == -1 && errno == ENOSYS)
|
|
goto use_write;
|
|
@@ -312,7 +312,7 @@ cache_addpw (struct database_dyn *db, in
|
|
use_write:
|
|
# endif
|
|
#endif
|
|
- written = writeall (fd, &dataset->resp, total);
|
|
+ written = writeall (fd, &dataset->resp, dataset->head.recsize);
|
|
}
|
|
|
|
|