YARN-2847. Linux native container executor segfaults if default banned user detected. Contributed by Olaf Flebbe
This commit is contained in:
parent
0a33a98eb4
commit
1a0f508b63
@ -593,6 +593,9 @@ Release 2.7.0 - UNRELEASED
|
||||
YARN-3164. RMAdmin command usage prints incorrect command name.
|
||||
(Bibin A Chundatt via xgong)
|
||||
|
||||
YARN-2847. Linux native container executor segfaults if default banned
|
||||
user detected (Olaf Flebbe via jlowe)
|
||||
|
||||
Release 2.6.0 - 2014-11-18
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
@ -684,8 +684,9 @@ struct passwd* check_user(const char *user) {
|
||||
return NULL;
|
||||
}
|
||||
char **banned_users = get_values(BANNED_USERS_KEY);
|
||||
char **banned_user = (banned_users == NULL) ?
|
||||
banned_users = banned_users == NULL ?
|
||||
(char**) DEFAULT_BANNED_USERS : banned_users;
|
||||
char **banned_user = banned_users;
|
||||
for(; *banned_user; ++banned_user) {
|
||||
if (strcmp(*banned_user, user) == 0) {
|
||||
free(user_info);
|
||||
|
@ -89,15 +89,19 @@ void run(const char *cmd) {
|
||||
}
|
||||
}
|
||||
|
||||
int write_config_file(char *file_name) {
|
||||
int write_config_file(char *file_name, int banned) {
|
||||
FILE *file;
|
||||
file = fopen(file_name, "w");
|
||||
if (file == NULL) {
|
||||
printf("Failed to open %s.\n", file_name);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (banned != 0) {
|
||||
fprintf(file, "banned.users=bannedUser\n");
|
||||
fprintf(file, "min.user.id=500\n");
|
||||
} else {
|
||||
fprintf(file, "min.user.id=0\n");
|
||||
}
|
||||
fprintf(file, "allowed.system.users=allowedUser,daemon\n");
|
||||
fclose(file);
|
||||
return 0;
|
||||
@ -385,7 +389,7 @@ void test_delete_user() {
|
||||
|
||||
char buffer[100000];
|
||||
sprintf(buffer, "%s/test.cfg", app_dir);
|
||||
if (write_config_file(buffer) != 0) {
|
||||
if (write_config_file(buffer, 1) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -745,7 +749,7 @@ int main(int argc, char **argv) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (write_config_file(TEST_ROOT "/test.cfg") != 0) {
|
||||
if (write_config_file(TEST_ROOT "/test.cfg", 1) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
read_config(TEST_ROOT "/test.cfg");
|
||||
@ -817,6 +821,16 @@ int main(int argc, char **argv) {
|
||||
seteuid(0);
|
||||
// test_delete_user must run as root since that's how we use the delete_as_user
|
||||
test_delete_user();
|
||||
free_configurations();
|
||||
|
||||
printf("\nTrying banned default user()\n");
|
||||
if (write_config_file(TEST_ROOT "/test.cfg", 0) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
read_config(TEST_ROOT "/test.cfg");
|
||||
username = "bin";
|
||||
test_check_user();
|
||||
|
||||
run("rm -fr " TEST_ROOT);
|
||||
printf("\nFinished tests\n");
|
||||
|
Loading…
Reference in New Issue
Block a user