Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: Running o32 code on n32 (Part 2, fancier programs)



> there's an infinite loop in readdir(3).  what i guess is happening is
> that each run through the loop dp->d_reclen is 0, so that the value
> of dirp->dd_loc always remains 0.  so, something is wrong here, but
> i don't see it in a simple test case (i haven't gotten pkgsrc on my
> gxemul system yet.)

can you see what happens with this patch?  thanks.  i don't think
we should commit this, but figure out why it's happening, but it
will at least confirm the problem i'm guessing.


.mrg.


Index: gen/readdir.c
===================================================================
RCS file: /cvsroot/src/lib/libc/gen/readdir.c,v
retrieving revision 1.26
diff -p -u -r1.26 readdir.c
--- gen/readdir.c	25 Jun 2012 22:32:43 -0000	1.26
+++ gen/readdir.c	10 Oct 2016 17:39:59 -0000
@@ -78,6 +78,8 @@ _readdir_unlocked(DIR *dirp, int skipdel
 		/* d_reclen is unsigned; no need to compare it <= 0 */
 		if (dp->d_reclen > dirp->dd_len + 1 - dirp->dd_loc)
 			return (NULL);
+		if (dp->d_reclen == 0)
+			return (NULL);
 		dirp->dd_loc += dp->d_reclen;
 		if (dp->d_ino == 0 && skipdeleted)
 			continue;


Home | Main Index | Thread Index | Old Index