[
https://issues.apache.org/jira/browse/HADOOP-12344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14723958#comment-14723958
]
Colin Patrick McCabe commented on HADOOP-12344:
-----------------------------------------------
bq. ..the secret of having tests match is to make some of the text (e.g. the
wiki link) a string constant in the source, with the test using a .contains()
probe for it. That way, changes in the text are automatically picked up in the
test
In this case, the string is being generated in the C source and checked in the
Java tests, so it would be difficult to have a constant shared between the two.
The new text looks fine to me, but the code needs work.
{code}
- for (check[0] = '/', check[1] = '\0', rest = path, token = "";
+ for (check[0] = '/', check[1] = '\0', rest=strdup(path), rest_free=rest,
token = "";
{code}
This isn't correctly checking for {{strdup}} returning NULL.
{code}
+ jthr = newIOException(env, "failed to stat a path component: '%s' in
'%s'. "
+ "error code %d (%s). Ensure that the path is configured
correctly.", check, path, ret, terror(ret));
{code}
More than 80 columns
{code}
+ perm_msg=(char *)malloc(PATH_MAX+200);
{code}
You don't need a typecast here. You do need to check for NULL if you use
dynamic allocation (why are you using dynamic allocation anyway?)
{code}
+ snprintf(perm_msg,PATH_MAX+200,"is world-writable. This might help:
'chmod o-w %s'. ",check);
{code}
PATH_MAX+200 is really gross. Why don't you just use newIOException, it
handles all this string manipulation and dynamic allocation for you?
Please fix this stuff before you commit.
> validateSocketPathSecurity0 message could be better
> ---------------------------------------------------
>
> Key: HADOOP-12344
> URL: https://issues.apache.org/jira/browse/HADOOP-12344
> Project: Hadoop Common
> Issue Type: Improvement
> Components: net
> Reporter: Casey Brotherton
> Assignee: Casey Brotherton
> Priority: Trivial
> Attachments: HADOOP-12344.001.patch, HADOOP-12344.002.patch,
> HADOOP-12344.patch
>
>
> When a socket path does not have the correct permissions, an error is thrown.
> That error just has the failing component of the path and not the entire path
> of the socket.
> The entire path of the socket could be printed out to allow for a direct
> check of the permissions of the entire path.
> {code}
> java.io.IOException: the path component: '/' is world-writable. Its
> permissions are 0077. Please fix this or select a different socket path.
> at
> org.apache.hadoop.net.unix.DomainSocket.validateSocketPathSecurity0(Native
> Method)
> at
> org.apache.hadoop.net.unix.DomainSocket.bindAndListen(DomainSocket.java:189)
> ...
> {code}
> The error message could also provide the socket path:
> {code}
> java.io.IOException: the path component: '/' is world-writable. Its
> permissions are 0077. Please fix this or select a different socket path than
> '/var/run/hdfs-sockets/dn'
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)