[ https://issues.apache.org/jira/browse/HDFS-16561?focusedWorklogId=770558&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-770558 ]
ASF GitHub Bot logged work on HDFS-16561: ----------------------------------------- Author: ASF GitHub Bot Created on: 15/May/22 08:11 Start Date: 15/May/22 08:11 Worklog Time Spent: 10m Work Description: GauthamBanasandra commented on code in PR #4287: URL: https://github.com/apache/hadoop/pull/4287#discussion_r873128972 ########## hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tools/hdfs-chmod/hdfs-chmod.cc: ########## @@ -140,8 +140,17 @@ bool Chmod::HandlePath(const std::string &permissions, const bool recursive, /* * strtol is reading the value with base 8, NULL because we are reading in * just one value. + * + * The strtol function may result in errors so check for that before typecasting. */ - auto perm = static_cast<uint16_t>(strtol(permissions.c_str(), nullptr, 8)); + errno = 0; + long result = strtol(permissions.c_str(), nullptr, 8); + /* + * The errno is set to ERANGE incase the string doesn't fit in long + * Also, the result is set to 0, in case conversion is not possible + */ + if ((errno == ERANGE) || result == 0) return false; Review Comment: @rishabh1704, This would yield `false` even for those cases where `permissions` passed was 0. Please explore how this can be handled. Issue Time Tracking ------------------- Worklog Id: (was: 770558) Time Spent: 1h 40m (was: 1.5h) > Handle error returned by strtol > ------------------------------- > > Key: HDFS-16561 > URL: https://issues.apache.org/jira/browse/HDFS-16561 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs++ > Affects Versions: 3.4.0 > Reporter: Gautham Banasandra > Assignee: Gautham Banasandra > Priority: Major > Labels: pull-request-available > Time Spent: 1h 40m > Remaining Estimate: 0h > > *strtol* is used in > [hdfs-chmod.cc|https://github.com/apache/hadoop/blob/6dddbd42edd57cc26279c678756386a47c040af5/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tools/hdfs-chmod/hdfs-chmod.cc#L144]. > The call to strtol could error out when an invalid input is provided. Need > to handle the error given out by strtol. > Tasks to do - > 1. Detect the error returned by strtol. The [strtol documentation > |https://en.cppreference.com/w/cpp/string/byte/strtol]explains how to do so. > 2. Return false to the caller if the error is detected. > 3. Extend > [this|https://github.com/apache/hadoop/blob/6dddbd42edd57cc26279c678756386a47c040af5/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfspp/tests/tools/hdfs-chmod-mock.cc] > unit test and add a case which exercises this by passing an invalid input. > Please refer to this PR to get more context on how this unit test is written > - https://github.com/apache/hadoop/pull/3588. -- This message was sent by Atlassian Jira (v8.20.7#820007) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org