HADOOP-9635. Fix potential stack overflow in DomainSocket.c (V. Karthik Kumar via cmccabe)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1491943 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
45ca24c1d8
commit
68671e453b
|
@ -276,12 +276,13 @@ JNIEnv *env, jclass clazz, jobject jstr, jint skipComponents)
|
||||||
jthrowable jthr = NULL;
|
jthrowable jthr = NULL;
|
||||||
|
|
||||||
utfLength = (*env)->GetStringUTFLength(env, jstr);
|
utfLength = (*env)->GetStringUTFLength(env, jstr);
|
||||||
if (utfLength > sizeof(path)) {
|
if (utfLength > (sizeof(path)-1)) {
|
||||||
jthr = newIOException(env, "path is too long! We expected a path "
|
jthr = newIOException(env, "path is too long! We expected a path "
|
||||||
"no longer than %zd UTF-8 bytes.", sizeof(path));
|
"no longer than %zd UTF-8 bytes.", (sizeof(path)-1));
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
(*env)->GetStringUTFRegion(env, jstr, 0, utfLength, path);
|
(*env)->GetStringUTFRegion(env, jstr, 0, utfLength, path);
|
||||||
|
path [ utfLength ] = 0;
|
||||||
jthr = (*env)->ExceptionOccurred(env);
|
jthr = (*env)->ExceptionOccurred(env);
|
||||||
if (jthr) {
|
if (jthr) {
|
||||||
(*env)->ExceptionClear(env);
|
(*env)->ExceptionClear(env);
|
||||||
|
@ -305,7 +306,7 @@ JNIEnv *env, jclass clazz, jobject jstr, jint skipComponents)
|
||||||
// be a directory. (If it is a directory, we will fail to create the socket
|
// be a directory. (If it is a directory, we will fail to create the socket
|
||||||
// later with EISDIR or similar.)
|
// later with EISDIR or similar.)
|
||||||
for (check[0] = '/', check[1] = '\0', rest = path, token = "";
|
for (check[0] = '/', check[1] = '\0', rest = path, token = "";
|
||||||
token && rest[0];
|
token && rest && rest[0];
|
||||||
token = strtok_r(rest, "/", &rest)) {
|
token = strtok_r(rest, "/", &rest)) {
|
||||||
if (strcmp(check, "/") != 0) {
|
if (strcmp(check, "/") != 0) {
|
||||||
// If the previous directory we checked was '/', we skip appending another
|
// If the previous directory we checked was '/', we skip appending another
|
||||||
|
|
|
@ -23,6 +23,8 @@ Release 2.2.0 - UNRELEASED
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
HADOOP-9635 Fix potential Stack Overflow in DomainSocket.c (V. Karthik Kumar
|
||||||
|
via cmccabe)
|
||||||
|
|
||||||
Release 2.1.0-beta - UNRELEASED
|
Release 2.1.0-beta - UNRELEASED
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue