fix potential hang for huge/corrupted directories (Miklos Szeredi, Szabolcs Szakacsits)

master
szaka 2008-06-11 20:33:02 +00:00
parent b8228df2a2
commit bf3b6d780d
1 changed files with 12 additions and 4 deletions

View File

@ -310,8 +310,12 @@ static char *add_name(char **buf, unsigned *bufsize, char *s, const char *name)
unsigned newbufsize = *bufsize;
char *newbuf;
while (newbufsize < pathlen + len + 1)
newbufsize *= 2;
while (newbufsize < pathlen + len + 1) {
if (newbufsize >= 0x80000000)
newbufsize = 0xffffffff;
else
newbufsize *= 2;
}
newbuf = realloc(*buf, newbufsize);
if (newbuf == NULL)
@ -1852,8 +1856,12 @@ static int extend_contents(struct fuse_dh *dh, unsigned minsize)
unsigned newsize = dh->size;
if (!newsize)
newsize = 1024;
while (newsize < minsize)
newsize *= 2;
while (newsize < minsize) {
if (newsize >= 0x80000000)
newsize = 0xffffffff;
else
newsize *= 2;
}
newptr = (char *) realloc(dh->contents, newsize);
if (!newptr) {