* file.c [_LFS64_LARGEFILE] (sys_getdents64): Do the same
d_reclen check as in sys_getdents: warn if d_reclen is 0 rather
than looping forever.
[FREEBSD] (sys_getdirentries): Likewise.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2008-04-19 Dmitry V. Levin <ldv@altlinux.org>
+ * file.c [_LFS64_LARGEFILE] (sys_getdents64): Do the same
+ d_reclen check as in sys_getdents: warn if d_reclen is 0 rather
+ than looping forever.
+ [FREEBSD] (sys_getdirentries): Likewise.
+ Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
* file.c [LINUXSPARC] (printstatsol): Fix sprinttime()
invocation. The sprinttime() function takes a time_t argument,
but timestruct_t argument was given.
#endif
int
-sys_getdents(tcp)
-struct tcb *tcp;
+sys_getdents(struct tcb *tcp)
{
int i, len, dents = 0;
char *buf;
#if _LFS64_LARGEFILE
int
-sys_getdents64(tcp)
-struct tcb *tcp;
+sys_getdents64(struct tcb *tcp)
{
int i, len, dents = 0;
char *buf;
d->d_namlen, d->d_namlen, d->d_name);
}
#endif /* SUNOS4 */
+ if (!d->d_reclen) {
+ tprintf("/* d_reclen == 0, problem here */");
+ break;
+ }
i += d->d_reclen;
dents++;
}
#ifdef FREEBSD
int
-sys_getdirentries(tcp)
-struct tcb * tcp;
+sys_getdirentries(struct tcb *tcp)
{
int i, len, dents = 0;
long basep;
tprintf(", d_namlen=%u, d_name=\"%.*s\"}",
d->d_namlen, d->d_namlen, d->d_name);
}
+ if (!d->d_reclen) {
+ tprintf("/* d_reclen == 0, problem here */");
+ break;
+ }
i += d->d_reclen;
dents++;
}