|
@@ -283,20 +283,23 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
|
|
|
}
|
|
|
|
|
|
stack_size = exec_params.stack_size;
|
|
|
- if (stack_size < interp_params.stack_size)
|
|
|
- stack_size = interp_params.stack_size;
|
|
|
-
|
|
|
if (exec_params.flags & ELF_FDPIC_FLAG_EXEC_STACK)
|
|
|
executable_stack = EXSTACK_ENABLE_X;
|
|
|
else if (exec_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK)
|
|
|
executable_stack = EXSTACK_DISABLE_X;
|
|
|
- else if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK)
|
|
|
- executable_stack = EXSTACK_ENABLE_X;
|
|
|
- else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK)
|
|
|
- executable_stack = EXSTACK_DISABLE_X;
|
|
|
else
|
|
|
executable_stack = EXSTACK_DEFAULT;
|
|
|
|
|
|
+ if (stack_size == 0) {
|
|
|
+ stack_size = interp_params.stack_size;
|
|
|
+ if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK)
|
|
|
+ executable_stack = EXSTACK_ENABLE_X;
|
|
|
+ else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK)
|
|
|
+ executable_stack = EXSTACK_DISABLE_X;
|
|
|
+ else
|
|
|
+ executable_stack = EXSTACK_DEFAULT;
|
|
|
+ }
|
|
|
+
|
|
|
retval = -ENOEXEC;
|
|
|
if (stack_size == 0)
|
|
|
goto error;
|