Alexey,
In the Linux kernel, we've got lots of void * address arithmetics:
linux/linux-2.6$ make -j 8 CC='gcc -Wpointer-arith' 2>&1 | grep
'warning: pointer of type \'void \*\' used in arithmetic' | uniq | wc
-l
45095
I screwed up, it should be | sort -u | uniq | wc -l
But it's still 14488.
This is a sufficiently large number that we ought to consider adding
checks for the usage, for instance:
1) Are the arguments really chars of one sort or another and
therefore the parameter ought to be declared as such?
2) The arguments have various structure and/or array types and
the storage is being walked over in the called function. Can the
minimum size ever passed be worked out and this information used in
the size_void (my proposed name for a pointer that has either sizeof,
++ or -- performed on it) function to check for overruns.
3) Are there any restrictions on passing a void pointer to a
size_void function or vice versa? I cannot think of any obvious
ones, but then I don't know the various kinds of circumstances
in which this happens.
4) Other possible fault issues, people?
--
Derek M. Jones tel: +44 (0) 1252 520 667
Knowledge Software Ltd mailto:derek@xxxxxxxxxxxx
Source code analysis http://www.knosof.co.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html