diff --git a/ChangeLog b/ChangeLog index 0f4453ec7f..1d19695a17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-01-24 Siddhesh Poyarekar + + [BZ #16474] + * nscd/netgroupcache.c (addgetnetgrentX): Adjust triplet + string pointers after reallocation. + 2014-01-24 Kaz Kojima * sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Use __SH4__ and diff --git a/NEWS b/NEWS index f4f22a8f3e..5601403ee8 100644 --- a/NEWS +++ b/NEWS @@ -25,7 +25,7 @@ Version 2.19 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245, 16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390, - 16394, 16400, 16407, 16408, 16414, 16430, 16431, 16453. + 16394, 16400, 16407, 16408, 16414, 16430, 16431, 16453, 16474. * Slovenian translations for glibc messages have been contributed by the Translation Project's Slovenian team of translators. diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c index 58234b1492..924567c3f3 100644 --- a/nscd/netgroupcache.c +++ b/nscd/netgroupcache.c @@ -241,7 +241,17 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, if (buflen - req->key_len - bufused < needed) { buflen += MAX (buflen, 2 * needed); - buffer = xrealloc (buffer, buflen); + char *newbuf = xrealloc (buffer, buflen); + /* Adjust the pointers in the new + buffer. */ + nhost = (nhost ? newbuf + (nhost - buffer) + : NULL); + nuser = (nuser ? newbuf + (nuser - buffer) + : NULL); + ndomain = (ndomain + ? newbuf + (ndomain - buffer) + : NULL); + buffer = newbuf; } nhost = memcpy (buffer + bufused,