You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "V. Karthik Kumar (JIRA)" <ji...@apache.org> on 2013/06/09 02:23:20 UTC
[jira] [Updated] (HADOOP-9635) Potential Stack Overflow in
DomainSocket.c
[ https://issues.apache.org/jira/browse/HADOOP-9635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
V. Karthik Kumar updated HADOOP-9635:
-------------------------------------
Attachment: DomainSocket.diff
Attached Patch.
> Potential Stack Overflow in DomainSocket.c
> ------------------------------------------
>
> Key: HADOOP-9635
> URL: https://issues.apache.org/jira/browse/HADOOP-9635
> Project: Hadoop Common
> Issue Type: Bug
> Components: native
> Affects Versions: 2.3.0
> Environment: OSX 10.8
> Reporter: V. Karthik Kumar
> Attachments: DomainSocket.diff
>
>
> When I was running on OSX, the DataNode was segfaulting. On investigation, it was tracked down to this code. A potential stack overflow was also identified.
> {code}
> utfLength = (*env)->GetStringUTFLength(env, jstr);
> if (utfLength > sizeof(path)) {
> jthr = newIOException(env, "path is too long! We expected a path "
> "no longer than %zd UTF-8 bytes.", sizeof(path));
> goto done;
> }
> // GetStringUTFRegion does not pad with NUL
> (*env)->GetStringUTFRegion(env, jstr, 0, utfLength, path);
> ...
> //strtok_r can set rest pointer to NULL when no tokens found.
> //Causes JVM to crash in rest[0]
> for (check[0] = '/', check[1] = '\0', rest = path, token = "";
> token && rest[0];
> token = strtok_r(rest, "/", &rest)) {
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira