Remove PROT_WRITE from de-compressed folded code.

Safer; required for SELinux Enforcing mode;
but inhibits breakpoint debugging.
	modified:   stub/amd64-linux.elf-entry.h
	modified:   stub/mips.r3000-linux.elf-entry.h
	modified:   stub/mipsel.r3000-linux.elf-entry.h
	modified:   stub/powerpc-linux.elf-entry.h
	modified:   stub/src/amd64-linux.elf-entry.S
	modified:   stub/src/mipsel.r3000-linux.elf-entry.S
	modified:   stub/src/powerpc-linux.elf-entry.S
This commit is contained in:
John Reiser 2024-12-23 10:52:07 -08:00 committed by Markus F.X.J. Oberhumer
parent 7d907d9d65
commit 505f6b7373
7 changed files with 15 additions and 15 deletions

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 1141
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xd9a14a92
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x23999033
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xd3b74a90
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x52b418e2
unsigned char stub_amd64_linux_elf_entry[1141] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -61,7 +61,7 @@ unsigned char stub_amd64_linux_elf_entry[1141] = {
/* 0x0150 */ 48, 72,137, 4, 36, 72,139, 85, 32, 72,131,234, 16, 84, 94, 76,
/* 0x0160 */ 137,231, 82,106, 1, 88,232, 53, 0, 0, 0, 72, 1,198, 41,194,
/* 0x0170 */ 117,241, 94, 85, 92, 77, 49,201, 77,137,224,106, 1, 65, 90,106,
/* 0x0180 */ 7, 90, 41,255,106, 9, 88,232, 20, 0, 0, 0, 80, 72,137, 69,
/* 0x0180 */ 5, 90, 41,255,106, 9, 88,232, 20, 0, 0, 0, 80, 72,137, 69,
/* 0x0190 */ 24, 65, 80, 95,106, 3, 88, 15, 5, 88, 72,131,192, 8,255,224,
/* 0x01a0 */ 80, 15, 5, 89, 72, 61, 0,240,255,255,114, 1,244,195,192, 1,
/* 0x01b0 */ 0, 0, 2, 0, 65, 0, 47,100,101,118, 47,115,104,109, 0,243,

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_SIZE 2056
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_ADLER32 0x089e93a4
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_CRC32 0x5becc30b
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_ADLER32 0xfd6d93a2
#define STUB_MIPS_R3000_LINUX_ELF_ENTRY_CRC32 0x743aa3e3
unsigned char stub_mips_r3000_linux_elf_entry[2056] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -76,7 +76,7 @@ unsigned char stub_mips_r3000_linux_elf_entry[2056] = {
/* 0x0240 */ 143,161, 0, 28,175,163, 0, 24,175,161, 0, 16, 2, 96, 48, 33,
/* 0x0250 */ 3,160, 40, 33, 2,224, 32, 33, 36, 2, 15,164, 0, 0, 0, 12,
/* 0x0260 */ 3,192,232, 33, 39,189,255,232,175,160, 0, 20,175,183, 0, 16,
/* 0x0270 */ 36, 7, 0, 1, 36, 6, 0, 7,142,133, 0, 0, 0, 0, 32, 33,
/* 0x0270 */ 36, 7, 0, 1, 36, 6, 0, 5,142,133, 0, 0, 0, 0, 32, 33,
/* 0x0280 */ 36, 2, 15,250, 0, 0, 0, 12, 39,189, 0, 24,175,162, 0, 24,
/* 0x0290 */ 36, 95, 0, 8, 2,224, 32, 33, 36, 2, 15,166, 0, 0, 0, 12,
/* 0x02a0 */ 3,224, 0, 8, 2,176,128, 33, 36, 2, 17, 2, 0, 0, 0, 12,

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 2019
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x06d58e22
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xb73c9937
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0xfb988e20
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xe437900d
unsigned char stub_mipsel_r3000_linux_elf_entry[2019] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -73,7 +73,7 @@ unsigned char stub_mipsel_r3000_linux_elf_entry[2019] = {
/* 0x0210 */ 36, 0,163,143, 3, 0, 32, 16, 28, 0,161,143, 24, 0,163,175,
/* 0x0220 */ 16, 0,161,175, 33, 48, 96, 2, 33, 40,160, 3, 33, 32,224, 2,
/* 0x0230 */ 164, 15, 2, 36, 12, 0, 0, 0, 33,232,192, 3,232,255,189, 39,
/* 0x0240 */ 20, 0,160,175, 16, 0,183,175, 1, 0, 7, 36, 7, 0, 6, 36,
/* 0x0240 */ 20, 0,160,175, 16, 0,183,175, 1, 0, 7, 36, 5, 0, 6, 36,
/* 0x0250 */ 0, 0,133,142, 33, 32, 0, 0,250, 15, 2, 36, 12, 0, 0, 0,
/* 0x0260 */ 24, 0,189, 39, 24, 0,162,175, 8, 0, 95, 36, 33, 32,224, 2,
/* 0x0270 */ 166, 15, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 33,128,176, 2,

View File

@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 1400
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x73457bd5
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x45e55695
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x6c637bd3
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0xad5a35df
unsigned char stub_powerpc_linux_elf_entry[1400] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -69,7 +69,7 @@ unsigned char stub_powerpc_linux_elf_entry[1400] = {
/* 0x01d0 */ 72, 0, 0, 5,146,129, 0, 0,127, 99,219,120,124, 36, 11,120,
/* 0x01e0 */ 127,133,227,120, 56, 0, 0, 4, 68, 0, 0, 2, 64,163, 0, 8,
/* 0x01f0 */ 124,128, 0, 8,127,193,243,120, 57, 0, 0, 0,127,103,219,120,
/* 0x0200 */ 56,192, 0, 2, 56,160, 0, 7,127,132,227,120, 56, 96, 0, 0,
/* 0x0200 */ 56,192, 0, 2, 56,160, 0, 5,127,132,227,120, 56, 96, 0, 0,
/* 0x0210 */ 56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8,124,128, 0, 8,
/* 0x0220 */ 124,125, 27,120,127, 99,219,120, 56, 0, 0, 6, 68, 0, 0, 2,
/* 0x0230 */ 64,163, 0, 8,124,128, 0, 8, 56, 29, 0, 8,127, 25,154, 20,

View File

@ -281,7 +281,7 @@ eof_n2b:
xor %arg6,%arg6 // 0 offset
mov %r12,%arg5 // mfd
push $MAP_SHARED; pop %sys4
push $PROT_WRITE|PROT_READ|PROT_EXEC; pop %arg3 // FIXME: add PROT_WRITE for DEBUG only
push $PROT_READ|PROT_EXEC; pop %arg3 // FIXME: add PROT_WRITE for DEBUG only
subl %edi,%edi // (%arg1)dst = 0; // kernel chooses addr
push $__NR_mmap; pop %rax; call sys_check
push %rax // MATCH_12

View File

@ -251,7 +251,7 @@ unfold: # IN: $r_fexp,$r_auxv,$r_PMASK,$r_FOLD
sw zero, 5*NBPW(sp) # last 2 args are in memory
sw $r_mfd,4*NBPW(sp)
li a3,MAP_SHARED # first 4 args are in registers, but kernel might store onto stack
li a2,PROT_WRITE|PROT_READ|PROT_EXEC # FIXME: PROT_WRITE is DEBUG only
li a2,PROT_READ|PROT_EXEC # FIXME: PROT_WRITE is DEBUG only
lw a1,sz_unc($r_FOLD)
move a0,zero
li v0,__NR_mmap; syscall; addiu sp,6*NBPW

View File

@ -195,7 +195,7 @@ SYS_write= __NR_write
li a5,0
mr a4,r_fd
li a3,MAP_PRIVATE
li a2,PROT_WRITE|PROT_EXEC|PROT_READ // PROT_WRITE: DEBUG only
li a2,PROT_EXEC|PROT_READ // PROT_WRITE: DEBUG only
mr a1,r_LENU
li a0,0
SYS_mmap= __NR_mmap