diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c index 69ceaf6..f252a46 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c @@ -31,6 +31,7 @@ #include #include #include +#include #define MAX_SIZE 10 @@ -126,6 +127,30 @@ int check_configuration_permissions(const char* file_name) { return 0; } +/** + * Trim whitespace from beginning and end. +*/ +char* trim(char* input) +{ + char *val_begin = input; + char *val_end = input + strlen(input); + char *ret; + while (val_begin < val_end && isspace(*val_begin)) + val_begin++; + while (val_end > val_begin && isspace(*(val_end - 1))) + val_end--; + + ret = (char *) malloc( + sizeof(char) * (val_end - val_begin + 1)); + if (ret == NULL) + { + fprintf(ERRORFILE, "Allocation error\n"); + exit(OUT_OF_MEMORY); + } + + strncpy(ret, val_begin, val_end - val_begin); + return ret; +} void read_config(const char* file_name, struct configuration *cfg) { FILE *conf_file; @@ -202,9 +227,8 @@ void read_config(const char* file_name, struct configuration *cfg) { #endif memset(cfg->confdetails[cfg->size], 0, sizeof(struct confentry)); - cfg->confdetails[cfg->size]->key = (char *) malloc( - sizeof(char) * (strlen(equaltok)+1)); - strcpy((char *)cfg->confdetails[cfg->size]->key, equaltok); + cfg->confdetails[cfg->size]->key = trim(equaltok); + equaltok = strtok_r(NULL, "=", &temp_equaltok); if (equaltok == NULL) { fprintf(LOGFILE, "configuration tokenization failed \n"); @@ -222,9 +246,7 @@ void read_config(const char* file_name, struct configuration *cfg) { fprintf(LOGFILE, "read_config : Adding conf value : %s \n", equaltok); #endif - cfg->confdetails[cfg->size]->value = (char *) malloc( - sizeof(char) * (strlen(equaltok)+1)); - strcpy((char *)cfg->confdetails[cfg->size]->value, equaltok); + cfg->confdetails[cfg->size]->value = trim(equaltok); if((cfg->size + 1) % MAX_SIZE == 0) { cfg->confdetails = (struct confentry **) realloc(cfg->confdetails, sizeof(struct confentry **) * (MAX_SIZE + cfg->size)); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c index 47bb3b9..fdc0496 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c @@ -143,7 +143,8 @@ static void assert_valid_setup(char *argv0) { int ret; char *executable_file = get_executable(argv0); if (!executable_file) { - fprintf(ERRORFILE,"realpath of executable: %s\n",strerror(errno)); + fprintf(ERRORFILE,"realpath of executable: %s\n", + errno != 0 ? strerror(errno) : "unknown"); flush_and_close_log_files(); exit(-1); } @@ -178,7 +179,7 @@ static void assert_valid_setup(char *argv0) { if (group_info == NULL) { free(executable_file); fprintf(ERRORFILE, "Can't get group information for %s - %s.\n", nm_group, - strerror(errno)); + errno != 0 ? strerror(errno) : "unknown"); flush_and_close_log_files(); exit(INVALID_CONFIG_FILE); }