[
https://issues.apache.org/jira/browse/HADOOP-10389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14028072#comment-14028072
]
Colin Patrick McCabe commented on HADOOP-10389:
-----------------------------------------------
bq. I'm also seeing many calls to strcpy(), as well as calls to *printf() with
non constant format strings.
There's 10 calls to {{strcpy}} in the whole code base, which is 37 files now.
All of them are in cases where we calculate the destination buffer size
beforehand based on the source string size, so there is no problem.
{{printf}} and similar functions are not a problem because we have
{{__attribute__((format(printf)))}}, which warns about cases where the format
string doesn't match the varargs. And we only ever use {{snprintf}},
{{vsnprintf}}, and the other functions which print into a buffer of a known
size.
bq. My question is that (1) whether the code contains no memory leak, no buffer
overflow, and no format string overflow? (2) whether the code always passes the
function pointer with the correct type? I'm perfectly happy to +1 your patches
as long as you can show your code is indeed free of these common defects.
The compiler checks whether function pointers are the correct type. We have
compile-time checks that printf's arguments match its format string, we don't
ever use non-constant format strings, and we use the versions that take a
maximum length . I use {{valgrind}} to spot memory leaks.
I think running static and dynamic analysis tools on the code is always a good
idea. Having good unit tests coverage is also a good idea. The native code
will always have burdens that Java doesn't have, because it is not garbage
collected. But I think with care, those burdens can be managed in a client,
just like we manage them in the existing libhdfs.
> Native RPCv9 client
> -------------------
>
> Key: HADOOP-10389
> URL: https://issues.apache.org/jira/browse/HADOOP-10389
> Project: Hadoop Common
> Issue Type: Sub-task
> Affects Versions: HADOOP-10388
> Reporter: Binglin Chang
> Assignee: Colin Patrick McCabe
> Attachments: HADOOP-10388.001.patch, HADOOP-10389.002.patch,
> HADOOP-10389.004.patch, HADOOP-10389.005.patch
>
>
--
This message was sent by Atlassian JIRA
(v6.2#6252)