On Mon 04 Aug 2014 08:31:30 zubin.mit...@gmail.com wrote:
> --- a/bjm.c
> +++ b/bjm.c
> @@ -121,6 +121,8 @@ sys_query_module(struct tcb *tcp)
>                                                               (idx ? ", " : 
> ""),
>                                                               mod);
>                                                       mod += strlen(mod)+1;
> +                                                     if (mod-data >= 
> tcp->u_arg[3])
> +                                                             break;

this check is incomplete.  if the buffer is not NUL terminated, then the 
string reading code will read beyond the end.  you can protect against that by 
doing:
        char *data = malloc(tcp->u_arg[3] + 1);
then before the for loop here, make sure the buffer is NUL terminated:
        data[tcp->u_arg[3]] = '\0';

as for this check, i think it's weirdly written.  it makes more sense to me:
        if (mod >= data + tcp->u_arg[3])

also, when you do break, don't you want to print out a ... to indicate ?

> @@ -144,6 +146,8 @@ sys_query_module(struct tcb *tcp)
>                                               tprintf(" /* %lu entries */ ", 
> (unsigned long)ret);
>                                       } else {
>                                               for (idx = 0; idx < ret; idx++) 
> {
> +                                                     if ((long)sym->name >= 
> tcp->u_arg[3])
> +                                                             break;
>                                                       tprintf("%s{name=%s, 
> value=%lu}",
>                                                               (idx ? " " : 
> ""),
>                                                               
> data+(long)sym->name,

i think this too is incomplete.  the sym++ might walk past the end of the 
data, sym->name is unsigned while u_arg is signed, and the symbol name might 
start near the end of the valid region but then walk beyond it (no NUL 
termination).  so i guess what are you trying to protect against ?
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to