[Toybox] Sigh. Anybody spot the bug?

Rob Landley rob at landley.net
Sun Jul 7 16:43:18 PDT 2013


On 07/03/2013 01:56:46 PM, Felix Janda wrote:
> Rob Landley wrote:
> > Tail has a double free somewhere. (Aboriginal's more/buildall.sh is
> > complaining, that uses toybox in host-tools.) Haven't had time to  
> track
> > it down yet, wondering if anybody else could spot it.
> >
> >  From the behavior it's looking like it's on file close...
> [...]
> 
> It seems reproducible when using tail on non-seekable files which are  
> bigger
> than count*sizeof(toybuf) and contain no newlines.

Count is initialized in a for loop and starts at 0 on line 164 so I  
dunno what this means...

~/toybox tail -f /dev/zero

Ok, that shouldn't return immediately.

Ah, cat the android sdk | ./toybox tail -f does indeed segfault.  
Reproducible!

> The following seems to fix it. I don't really understand the code  
> though.

It started life as an external submission meaning I could easily have  
missed something while cleaning it up.

In fact this command has todo items in it (comments at the end of  
tail_main() and do_tail() about -f support). Apparently I was in the  
middle of working on it and lost track under the flood of new commands  
I don't get to write because I'm cleaning up submissions.

> diff -r f8db1f6ec4ab toys/posix/tail.c
> --- a/toys/posix/tail.c	Tue Jul 02 00:16:16 2013 -0500
> +++ b/toys/posix/tail.c	Wed Jul 03 20:54:24 2013 +0200
> @@ -168,7 +168,7 @@
>          }
> 
>          if (lines) {
> -          if(try[count] != '\n' && count != len-1) continue;
> +          if(try[count] != '\n') continue;

Hmmm, I believe that's related to getting the line count right when the  
last line doesn't end with a newline? But I don't remember the  
details...

Poking at it...

Rob
 1373240598.0


More information about the Toybox mailing list