Correctly update the end pointer when we expand the buffer.
From Robert Manner.
This commit is contained in:
@@ -50,13 +50,13 @@ sudo_getdelim(char **buf, size_t *bufsize, int delim, FILE *fp)
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
if (cp + 1 >= ep) {
|
if (cp + 1 >= ep) {
|
||||||
char *tmp = reallocarray(*buf, *bufsize, 2);
|
char *newbuf = reallocarray(*buf, *bufsize, 2);
|
||||||
if (tmp == NULL)
|
if (newbuf == NULL)
|
||||||
goto bad;
|
goto bad;
|
||||||
*bufsize *= 2;
|
*bufsize *= 2;
|
||||||
cp = tmp + (cp - *buf);
|
cp = newbuf + (cp - *buf);
|
||||||
ep = cp + *bufsize;
|
ep = newbuf + *bufsize;
|
||||||
*buf = tmp;
|
*buf = newbuf;
|
||||||
}
|
}
|
||||||
if ((ch = getc(fp)) == EOF) {
|
if ((ch = getc(fp)) == EOF) {
|
||||||
if (feof(fp))
|
if (feof(fp))
|
||||||
|
Reference in New Issue
Block a user