YARN-5719. Enforce a C standard for native container-executor. Contributed by Chris Douglas.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/972da46c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/972da46c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/972da46c Branch: refs/heads/YARN-5085 Commit: 972da46cb48725ad49d3e0a033742bd1a8228f51 Parents: f6715b2 Author: Varun Vasudev <[email protected]> Authored: Wed Dec 28 14:59:57 2016 +0530 Committer: Varun Vasudev <[email protected]> Committed: Wed Dec 28 14:59:57 2016 +0530 ---------------------------------------------------------------------- .../src/CMakeLists.txt | 16 ++++++++++++++++ .../container-executor/impl/container-executor.c | 12 ++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/972da46c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt index fbc794c..f7fe83d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt @@ -26,6 +26,22 @@ include(HadoopCommon) string(REGEX MATCH . HCD_ONE "${HADOOP_CONF_DIR}") string(COMPARE EQUAL ${HCD_ONE} / HADOOP_CONF_DIR_IS_ABS) +if (CMAKE_VERSION VERSION_LESS "3.1") + # subset of CMAKE_<LANG>_COMPILER_ID + # https://cmake.org/cmake/help/v3.0/variable/CMAKE_LANG_COMPILER_ID.html + if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR + CMAKE_C_COMPILER_ID STREQUAL "Clang" OR + CMAKE_C_COMPILER_ID STREQUAL "AppleClang") + set (CMAKE_C_FLAGS "-std=c99 -Wall -pedantic-errors ${CMAKE_C_FLAGS}") + elseif (CMAKE_C_COMPILER_ID STREQUAL "Intel") + set (CMAKE_C_FLAGS "-std=c99 -Wall ${CMAKE_C_FLAGS}") + elseif (CMAKE_C_COMPILER_ID STREQUAL "SunPro") + set (CMAKE_C_FLAGS "-xc99 ${CMAKE_C_FLAGS}") + endif () +else () + set (CMAKE_C_STANDARD 99) +endif () + # Note: can't use -D_FILE_OFFSET_BITS=64, see MAPREDUCE-4258 string(REPLACE "-D_FILE_OFFSET_BITS=64" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REPLACE "-D_FILE_OFFSET_BITS=64" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") http://git-wip-us.apache.org/repos/asf/hadoop/blob/972da46c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c index 25f01ea..9be8cf4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c @@ -722,14 +722,18 @@ static int create_container_directories(const char* user, const char *app_id, * Load the user information for a given user name. */ static struct passwd* get_user_info(const char* user) { - int string_size = sysconf(_SC_GETPW_R_SIZE_MAX); + size_t string_size = sysconf(_SC_GETPW_R_SIZE_MAX); struct passwd *result = NULL; if(string_size < 1024) { string_size = 1024; } - void* buffer = malloc(string_size + sizeof(struct passwd)); - if (getpwnam_r(user, buffer, buffer + sizeof(struct passwd), string_size, - &result) != 0) { + struct passwd* buffer = malloc(sizeof(struct passwd) + string_size); + if (NULL == buffer) { + fprintf(LOGFILE, "Failed malloc in get_user_info"); + return NULL; + } + if (getpwnam_r(user, buffer, ((char*)buffer) + sizeof(struct passwd), + string_size, &result) != 0) { free(buffer); fprintf(LOGFILE, "Can't get user information %s - %s\n", user, strerror(errno)); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
