Somebody needs to teach valgrind that, when a pointer to a structure of the form

        struct sock_fprog {     /* Required for SO_ATTACH_FILTER. */
                unsigned short          len;    /* Number of filter blocks */
                struct sock_filter __user *filter;
        };

is passed to setsockopt() as the fourth argument, the values of any padding 
bytes between the "len" and "filter" fields are irrelevant - if they're 
uninitialized, it Just Doesn't Matter.  (If some version of the Linux kernel 
cares what the values of any bytes between "len" and "filter" are, that's a bug 
in that version of the kernel.)

(The same applies to any other structure, pointers to which are passed to other 
routines that are specified to take "generic pointer to blob" and "size of 
blob" arguments, such as setsockopt() or ioctl().  It might need to check 
whether the "operation code" argument and "blob length" arguments are correct 
for the structure in question, but that's another matter.)


--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to