Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c (date 1476425116000) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/configuration.c (date 1476462679000) @@ -126,7 +126,31 @@ 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; char *line; @@ -202,9 +226,8 @@ #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 +245,7 @@ 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)); Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c (date 1476425116000) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/main.c (date 1476462679000) @@ -143,7 +143,8 @@ 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 @@ 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); }