From: Denys Vlasenko Date: Tue, 5 Nov 2013 15:20:16 +0000 (+0100) Subject: Truncate arg[0] to int in select decoding. X-Git-Tag: v4.9~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1f65c3cd2ac24c6fcc6a8eb3eb88cd6161c25c88;p=strace Truncate arg[0] to int in select decoding. This matches kernel's behavior. Signed-off-by: Denys Vlasenko --- diff --git a/desc.c b/desc.c index 384b1472..bbdc0872 100644 --- a/desc.c +++ b/desc.c @@ -481,16 +481,17 @@ static int decode_select(struct tcb *tcp, long *args, enum bitness_t bitness) { int i, j; - unsigned nfds, fdsize; + int nfds, fdsize; fd_set *fds; const char *sep; long arg; - fdsize = args[0]; + /* Kernel truncates arg[0] to int, we do the same */ + fdsize = (int)args[0]; /* Beware of select(2^31-1, NULL, NULL, NULL) and similar... */ - if (args[0] > 1024*1024) + if (fdsize > 1024*1024) fdsize = 1024*1024; - if (args[0] < 0) + if (fdsize < 0) fdsize = 0; nfds = fdsize; fdsize = (((fdsize + 7) / 8) + sizeof(long)-1) & -sizeof(long);