The third argument of accept is a pointer to int, not long. This also fixes the decoding of getsockname and getpeername, which is implemented in terms of this function.
Andreas. 2009-01-01 Andreas Schwab <[email protected]> * net.c (sys_accept): Properly decode third argument as pointer to int. --- net.c 11 Nov 2008 10:12:17 +0100 1.58 +++ net.c 01 Jan 2009 17:18:43 +0100 @@ -1315,13 +1315,15 @@ struct tcb *tcp; } else if (!tcp->u_arg[2]) tprintf("%#lx, NULL", tcp->u_arg[1]); else { - if (tcp->u_arg[1] == 0 || syserror(tcp)) { + int len; + if (tcp->u_arg[1] == 0 || syserror(tcp) + || umove (tcp, tcp->u_arg[2], &len) < 0) { tprintf("%#lx", tcp->u_arg[1]); } else { - printsock(tcp, tcp->u_arg[1], tcp->u_arg[2]); + printsock(tcp, tcp->u_arg[1], len); } tprintf(", "); - printnum(tcp, tcp->u_arg[2], "%lu"); + printnum_int(tcp, tcp->u_arg[2], "%u"); } return 0; } -- Andreas Schwab, SuSE Labs, [email protected] SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ------------------------------------------------------------------------------ _______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
