diff --git a/SOURCES/libjpeg-turbo-CET.patch b/SOURCES/libjpeg-turbo-CET.patch new file mode 100644 index 0000000..9a3028b --- /dev/null +++ b/SOURCES/libjpeg-turbo-CET.patch @@ -0,0 +1,819 @@ +diff --git a/simd/jccolext-mmx.asm b/simd/jccolext-mmx.asm +index 96a0372..3e95a2e 100644 +--- a/simd/jccolext-mmx.asm ++++ b/simd/jccolext-mmx.asm +@@ -42,6 +42,7 @@ + global EXTN(jsimd_rgb_ycc_convert_mmx) + + EXTN(jsimd_rgb_ycc_convert_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jccolext-sse2-64.asm b/simd/jccolext-sse2-64.asm +index 8e4642d..1b8e990 100644 +--- a/simd/jccolext-sse2-64.asm ++++ b/simd/jccolext-sse2-64.asm +@@ -41,6 +41,7 @@ + global EXTN(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jccolext-sse2.asm b/simd/jccolext-sse2.asm +index cc38e98..847497c 100644 +--- a/simd/jccolext-sse2.asm ++++ b/simd/jccolext-sse2.asm +@@ -41,6 +41,7 @@ + global EXTN(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jcgryext-mmx.asm b/simd/jcgryext-mmx.asm +index 1c1b8d8..cbf349c 100644 +--- a/simd/jcgryext-mmx.asm ++++ b/simd/jcgryext-mmx.asm +@@ -43,6 +43,7 @@ + global EXTN(jsimd_rgb_gray_convert_mmx) + + EXTN(jsimd_rgb_gray_convert_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jcgryext-sse2-64.asm b/simd/jcgryext-sse2-64.asm +index 541355a..6fa714b 100644 +--- a/simd/jcgryext-sse2-64.asm ++++ b/simd/jcgryext-sse2-64.asm +@@ -41,6 +41,7 @@ + global EXTN(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jcgryext-sse2.asm b/simd/jcgryext-sse2.asm +index cd16dd1..6da4f24 100644 +--- a/simd/jcgryext-sse2.asm ++++ b/simd/jcgryext-sse2.asm +@@ -43,6 +43,7 @@ + global EXTN(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jchuff-sse2-64.asm b/simd/jchuff-sse2-64.asm +index b1144d1..216b7ed 100644 +--- a/simd/jchuff-sse2-64.asm ++++ b/simd/jchuff-sse2-64.asm +@@ -186,6 +186,7 @@ EXTN(jconst_huff_encode_one_block): + global EXTN(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jchuff-sse2.asm b/simd/jchuff-sse2.asm +index b81db75..0537a2c 100644 +--- a/simd/jchuff-sse2.asm ++++ b/simd/jchuff-sse2.asm +@@ -182,6 +182,7 @@ EXTN(jconst_huff_encode_one_block): + global EXTN(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jcsample-mmx.asm b/simd/jcsample-mmx.asm +index 6cd544e..2834d1a 100644 +--- a/simd/jcsample-mmx.asm ++++ b/simd/jcsample-mmx.asm +@@ -42,6 +42,7 @@ + global EXTN(jsimd_h2v1_downsample_mmx) + + EXTN(jsimd_h2v1_downsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +@@ -184,6 +185,7 @@ EXTN(jsimd_h2v1_downsample_mmx): + global EXTN(jsimd_h2v2_downsample_mmx) + + EXTN(jsimd_h2v2_downsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jcsample-sse2-64.asm b/simd/jcsample-sse2-64.asm +index 40ee15f..336d259 100644 +--- a/simd/jcsample-sse2-64.asm ++++ b/simd/jcsample-sse2-64.asm +@@ -43,6 +43,7 @@ + global EXTN(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +@@ -187,6 +188,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + global EXTN(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jcsample-sse2.asm b/simd/jcsample-sse2.asm +index 83c9d15..685e428 100644 +--- a/simd/jcsample-sse2.asm ++++ b/simd/jcsample-sse2.asm +@@ -42,6 +42,7 @@ + global EXTN(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +@@ -197,6 +198,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + global EXTN(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jdcolext-mmx.asm b/simd/jdcolext-mmx.asm +index 21e34f6..428f1be 100644 +--- a/simd/jdcolext-mmx.asm ++++ b/simd/jdcolext-mmx.asm +@@ -42,6 +42,7 @@ + global EXTN(jsimd_ycc_rgb_convert_mmx) + + EXTN(jsimd_ycc_rgb_convert_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jdcolext-sse2-64.asm b/simd/jdcolext-sse2-64.asm +index 4634066..90ca172 100644 +--- a/simd/jdcolext-sse2-64.asm ++++ b/simd/jdcolext-sse2-64.asm +@@ -41,6 +41,7 @@ + global EXTN(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jdcolext-sse2.asm b/simd/jdcolext-sse2.asm +index 682aef3..51b5388 100644 +--- a/simd/jdcolext-sse2.asm ++++ b/simd/jdcolext-sse2.asm +@@ -43,6 +43,7 @@ + global EXTN(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jdmrgext-mmx.asm b/simd/jdmrgext-mmx.asm +index 63f45cf..c088eb8 100644 +--- a/simd/jdmrgext-mmx.asm ++++ b/simd/jdmrgext-mmx.asm +@@ -42,6 +42,7 @@ + global EXTN(jsimd_h2v1_merged_upsample_mmx) + + EXTN(jsimd_h2v1_merged_upsample_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -411,6 +412,7 @@ EXTN(jsimd_h2v1_merged_upsample_mmx): + global EXTN(jsimd_h2v2_merged_upsample_mmx) + + EXTN(jsimd_h2v2_merged_upsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jdmrgext-sse2-64.asm b/simd/jdmrgext-sse2-64.asm +index ad74c5f..d580d5b 100644 +--- a/simd/jdmrgext-sse2-64.asm ++++ b/simd/jdmrgext-sse2-64.asm +@@ -41,6 +41,7 @@ + global EXTN(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +@@ -448,6 +449,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + global EXTN(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jdmrgext-sse2.asm b/simd/jdmrgext-sse2.asm +index b50f698..6625784 100644 +--- a/simd/jdmrgext-sse2.asm ++++ b/simd/jdmrgext-sse2.asm +@@ -43,6 +43,7 @@ + global EXTN(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -466,6 +467,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + global EXTN(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jdsample-mmx.asm b/simd/jdsample-mmx.asm +index 5e4fa7a..4ec823d 100644 +--- a/simd/jdsample-mmx.asm ++++ b/simd/jdsample-mmx.asm +@@ -60,6 +60,7 @@ PW_EIGHT times 4 dw 8 + global EXTN(jsimd_h2v1_fancy_upsample_mmx) + + EXTN(jsimd_h2v1_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + pushpic ebx +@@ -218,6 +219,7 @@ EXTN(jsimd_h2v1_fancy_upsample_mmx): + global EXTN(jsimd_h2v2_fancy_upsample_mmx) + + EXTN(jsimd_h2v2_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -544,6 +546,7 @@ EXTN(jsimd_h2v2_fancy_upsample_mmx): + global EXTN(jsimd_h2v1_upsample_mmx) + + EXTN(jsimd_h2v1_upsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +@@ -645,6 +648,7 @@ EXTN(jsimd_h2v1_upsample_mmx): + global EXTN(jsimd_h2v2_upsample_mmx) + + EXTN(jsimd_h2v2_upsample_mmx): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jdsample-sse2-64.asm b/simd/jdsample-sse2-64.asm +index 1faaed6..fecd438 100644 +--- a/simd/jdsample-sse2-64.asm ++++ b/simd/jdsample-sse2-64.asm +@@ -61,6 +61,7 @@ PW_EIGHT times 8 dw 8 + global EXTN(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +@@ -203,6 +204,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + global EXTN(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +@@ -500,6 +502,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + global EXTN(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +@@ -589,6 +592,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + global EXTN(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jdsample-sse2.asm b/simd/jdsample-sse2.asm +index 1d0059e..5da10a5 100644 +--- a/simd/jdsample-sse2.asm ++++ b/simd/jdsample-sse2.asm +@@ -60,6 +60,7 @@ PW_EIGHT times 8 dw 8 + global EXTN(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + pushpic ebx +@@ -216,6 +217,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + global EXTN(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -540,6 +542,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + global EXTN(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +@@ -639,6 +642,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + global EXTN(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jfdctflt-3dn.asm b/simd/jfdctflt-3dn.asm +index 2191618..33df9d6 100644 +--- a/simd/jfdctflt-3dn.asm ++++ b/simd/jfdctflt-3dn.asm +@@ -57,6 +57,7 @@ PD_1_306 times 2 dd 1.306562964876376527856643 + global EXTN(jsimd_fdct_float_3dnow) + + EXTN(jsimd_fdct_float_3dnow): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jfdctflt-sse-64.asm b/simd/jfdctflt-sse-64.asm +index 4b64ea4..2a820d8 100644 +--- a/simd/jfdctflt-sse-64.asm ++++ b/simd/jfdctflt-sse-64.asm +@@ -67,6 +67,7 @@ PD_1_306 times 4 dd 1.306562964876376527856643 + global EXTN(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jfdctflt-sse.asm b/simd/jfdctflt-sse.asm +index e7ede26..1b31cff 100644 +--- a/simd/jfdctflt-sse.asm ++++ b/simd/jfdctflt-sse.asm +@@ -67,6 +67,7 @@ PD_1_306 times 4 dd 1.306562964876376527856643 + global EXTN(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jfdctfst-mmx.asm b/simd/jfdctfst-mmx.asm +index eb2eb9c..d9c7c24 100644 +--- a/simd/jfdctfst-mmx.asm ++++ b/simd/jfdctfst-mmx.asm +@@ -82,6 +82,7 @@ PW_F1306 times 4 dw F_1_306 << CONST_SHIFT + global EXTN(jsimd_fdct_ifast_mmx) + + EXTN(jsimd_fdct_ifast_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jfdctfst-sse2-64.asm b/simd/jfdctfst-sse2-64.asm +index 4c96685..1530012 100644 +--- a/simd/jfdctfst-sse2-64.asm ++++ b/simd/jfdctfst-sse2-64.asm +@@ -82,6 +82,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHIFT + global EXTN(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jfdctfst-sse2.asm b/simd/jfdctfst-sse2.asm +index 54856a2..e305ac8 100644 +--- a/simd/jfdctfst-sse2.asm ++++ b/simd/jfdctfst-sse2.asm +@@ -82,6 +82,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHIFT + global EXTN(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jfdctint-mmx.asm b/simd/jfdctint-mmx.asm +index 9142ad8..a03ad5f 100644 +--- a/simd/jfdctint-mmx.asm ++++ b/simd/jfdctint-mmx.asm +@@ -103,6 +103,7 @@ PW_DESCALE_P2X times 4 dw 1 << (PASS1_BITS-1) + global EXTN(jsimd_fdct_islow_mmx) + + EXTN(jsimd_fdct_islow_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jfdctint-sse2-64.asm b/simd/jfdctint-sse2-64.asm +index 9a0ca0f..c5c90b4 100644 +--- a/simd/jfdctint-sse2-64.asm ++++ b/simd/jfdctint-sse2-64.asm +@@ -103,6 +103,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_BITS-1) + global EXTN(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jfdctint-sse2.asm b/simd/jfdctint-sse2.asm +index db9d0bb..cdfeee5 100644 +--- a/simd/jfdctint-sse2.asm ++++ b/simd/jfdctint-sse2.asm +@@ -103,6 +103,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_BITS-1) + global EXTN(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctflt-3dn.asm b/simd/jidctflt-3dn.asm +index 99356f2..0c16289 100644 +--- a/simd/jidctflt-3dn.asm ++++ b/simd/jidctflt-3dn.asm +@@ -65,6 +65,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + global EXTN(jsimd_idct_float_3dnow) + + EXTN(jsimd_idct_float_3dnow): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctflt-sse.asm b/simd/jidctflt-sse.asm +index 4d4af2f..96fef5e 100644 +--- a/simd/jidctflt-sse.asm ++++ b/simd/jidctflt-sse.asm +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + global EXTN(jsimd_idct_float_sse) + + EXTN(jsimd_idct_float_sse): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctflt-sse2-64.asm b/simd/jidctflt-sse2-64.asm +index bdda05d..70863f0 100644 +--- a/simd/jidctflt-sse2-64.asm ++++ b/simd/jidctflt-sse2-64.asm +@@ -76,6 +76,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jidctflt-sse2.asm b/simd/jidctflt-sse2.asm +index a15a9c1..0eb849e 100644 +--- a/simd/jidctflt-sse2.asm ++++ b/simd/jidctflt-sse2.asm +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctfst-mmx.asm b/simd/jidctfst-mmx.asm +index 6e95bfb..095deed 100644 +--- a/simd/jidctfst-mmx.asm ++++ b/simd/jidctfst-mmx.asm +@@ -96,6 +96,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + global EXTN(jsimd_idct_ifast_mmx) + + EXTN(jsimd_idct_ifast_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctfst-sse2-64.asm b/simd/jidctfst-sse2-64.asm +index 4884642..f486c7e 100644 +--- a/simd/jidctfst-sse2-64.asm ++++ b/simd/jidctfst-sse2-64.asm +@@ -95,6 +95,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jidctfst-sse2.asm b/simd/jidctfst-sse2.asm +index f591e55..7060d1e 100644 +--- a/simd/jidctfst-sse2.asm ++++ b/simd/jidctfst-sse2.asm +@@ -94,6 +94,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctint-mmx.asm b/simd/jidctint-mmx.asm +index 5bd1981..35080f6 100644 +--- a/simd/jidctint-mmx.asm ++++ b/simd/jidctint-mmx.asm +@@ -109,6 +109,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + global EXTN(jsimd_idct_islow_mmx) + + EXTN(jsimd_idct_islow_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctint-sse2-64.asm b/simd/jidctint-sse2-64.asm +index afe1d6a..842f2dd 100644 +--- a/simd/jidctint-sse2-64.asm ++++ b/simd/jidctint-sse2-64.asm +@@ -108,6 +108,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +diff --git a/simd/jidctint-sse2.asm b/simd/jidctint-sse2.asm +index 6c7e7d9..3482088 100644 +--- a/simd/jidctint-sse2.asm ++++ b/simd/jidctint-sse2.asm +@@ -107,6 +107,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/jidctred-mmx.asm b/simd/jidctred-mmx.asm +index ba054e3..159e4c2 100644 +--- a/simd/jidctred-mmx.asm ++++ b/simd/jidctred-mmx.asm +@@ -117,6 +117,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + global EXTN(jsimd_idct_4x4_mmx) + + EXTN(jsimd_idct_4x4_mmx): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -505,6 +506,7 @@ EXTN(jsimd_idct_4x4_mmx): + global EXTN(jsimd_idct_2x2_mmx) + + EXTN(jsimd_idct_2x2_mmx): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jidctred-sse2-64.asm b/simd/jidctred-sse2-64.asm +index a54bbe2..539602e 100644 +--- a/simd/jidctred-sse2-64.asm ++++ b/simd/jidctred-sse2-64.asm +@@ -116,6 +116,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr64 + push rbp + mov rax,rsp ; rax = original rbp + sub rsp, byte 4 +@@ -415,6 +416,7 @@ EXTN(jsimd_idct_4x4_sse2): + global EXTN(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jidctred-sse2.asm b/simd/jidctred-sse2.asm +index 232d983..0145364 100644 +--- a/simd/jidctred-sse2.asm ++++ b/simd/jidctred-sse2.asm +@@ -115,6 +115,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + global EXTN(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr32 + push ebp + mov eax,esp ; eax = original ebp + sub esp, byte 4 +@@ -426,6 +427,7 @@ EXTN(jsimd_idct_4x4_sse2): + global EXTN(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +diff --git a/simd/jquant-3dn.asm b/simd/jquant-3dn.asm +index 0b4164b..eba7485 100644 +--- a/simd/jquant-3dn.asm ++++ b/simd/jquant-3dn.asm +@@ -37,6 +37,7 @@ + global EXTN(jsimd_convsamp_float_3dnow) + + EXTN(jsimd_convsamp_float_3dnow): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +@@ -140,6 +141,7 @@ EXTN(jsimd_convsamp_float_3dnow): + global EXTN(jsimd_quantize_float_3dnow) + + EXTN(jsimd_quantize_float_3dnow): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jquant-mmx.asm b/simd/jquant-mmx.asm +index aed6071..59a7f78 100644 +--- a/simd/jquant-mmx.asm ++++ b/simd/jquant-mmx.asm +@@ -37,6 +37,7 @@ + global EXTN(jsimd_convsamp_mmx) + + EXTN(jsimd_convsamp_mmx): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +@@ -142,6 +143,7 @@ EXTN(jsimd_convsamp_mmx): + global EXTN(jsimd_quantize_mmx) + + EXTN(jsimd_quantize_mmx): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jquant-sse.asm b/simd/jquant-sse.asm +index 1baf88f..87f513e 100644 +--- a/simd/jquant-sse.asm ++++ b/simd/jquant-sse.asm +@@ -37,6 +37,7 @@ + global EXTN(jsimd_convsamp_float_sse) + + EXTN(jsimd_convsamp_float_sse): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +@@ -140,6 +141,7 @@ EXTN(jsimd_convsamp_float_sse): + global EXTN(jsimd_quantize_float_sse) + + EXTN(jsimd_quantize_float_sse): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jquantf-sse2-64.asm b/simd/jquantf-sse2-64.asm +index ef5c1f9..b618287 100644 +--- a/simd/jquantf-sse2-64.asm ++++ b/simd/jquantf-sse2-64.asm +@@ -38,6 +38,7 @@ + global EXTN(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +@@ -112,6 +113,7 @@ EXTN(jsimd_convsamp_float_sse2): + global EXTN(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jquantf-sse2.asm b/simd/jquantf-sse2.asm +index 1cbc267..086416a 100644 +--- a/simd/jquantf-sse2.asm ++++ b/simd/jquantf-sse2.asm +@@ -37,6 +37,7 @@ + global EXTN(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +@@ -117,6 +118,7 @@ EXTN(jsimd_convsamp_float_sse2): + global EXTN(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jquanti-sse2-64.asm b/simd/jquanti-sse2-64.asm +index 66c4e51..65c8564 100644 +--- a/simd/jquanti-sse2-64.asm ++++ b/simd/jquanti-sse2-64.asm +@@ -38,6 +38,7 @@ + global EXTN(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +@@ -114,6 +115,7 @@ EXTN(jsimd_convsamp_sse2): + global EXTN(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr64 + push rbp + mov rax,rsp + mov rbp,rsp +diff --git a/simd/jquanti-sse2.asm b/simd/jquanti-sse2.asm +index aea8604..4ed539e 100644 +--- a/simd/jquanti-sse2.asm ++++ b/simd/jquanti-sse2.asm +@@ -37,6 +37,7 @@ + global EXTN(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr32 + push ebp + mov ebp,esp + push ebx +@@ -119,6 +120,7 @@ EXTN(jsimd_convsamp_sse2): + global EXTN(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr32 + push ebp + mov ebp,esp + ; push ebx ; unused +diff --git a/simd/jsimdcpu.asm b/simd/jsimdcpu.asm +index 599083b..03ae0cb 100644 +--- a/simd/jsimdcpu.asm ++++ b/simd/jsimdcpu.asm +@@ -31,6 +31,7 @@ + global EXTN(jpeg_simd_cpu_support) + + EXTN(jpeg_simd_cpu_support): ++ _endbr32 + push ebx + ; push ecx ; need not be preserved + ; push edx ; need not be preserved +diff --git a/simd/jsimdext.inc b/simd/jsimdext.inc +index f28db60..abc3493 100644 +--- a/simd/jsimdext.inc ++++ b/simd/jsimdext.inc +@@ -367,6 +367,14 @@ const_base: + + %endif + ++%imacro _endbr32 0 ++ dd 0xfb1e0ff3 ++%endmacro ++ ++%imacro _endbr64 0 ++ dd 0xfa1e0ff3 ++%endmacro ++ + ; -------------------------------------------------------------------------- + ; Defines picked up from the C headers + ; diff --git a/SOURCES/libjpeg-turbo-CVE-2018-14498.patch b/SOURCES/libjpeg-turbo-CVE-2018-14498.patch new file mode 100644 index 0000000..d76f754 --- /dev/null +++ b/SOURCES/libjpeg-turbo-CVE-2018-14498.patch @@ -0,0 +1,151 @@ +From c7dd3cd0fec2d6785f2bd79e3e2f0adb62ee8bc1 Mon Sep 17 00:00:00 2001 +From: DRC +Date: Fri, 20 Jul 2018 17:21:36 -0500 +Subject: [PATCH] cjpeg: Fix OOB read caused by malformed 8-bit BMP + +... in which one or more of the color indices is out of range for the +number of palette entries. + +Fix partly borrowed from jpeg-9c. This commit also adopts Guido's +JERR_PPM_OUTOFRANGE enum value in lieu of our project-specific +JERR_PPM_TOOLARGE enum value. + +Fixes #258 +--- + cderror.h | 5 +++-- + rdbmp.c | 7 ++++++- + rdppm.c | 12 ++++++------ + 3 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/cderror.h b/cderror.h +index 63de498..e57a8c8 100644 +--- a/cderror.h ++++ b/cderror.h +@@ -2,7 +2,7 @@ + * cderror.h + * + * Copyright (C) 1994-1997, Thomas G. Lane. +- * Modified 2009 by Guido Vollbeding. ++ * Modified 2009-2017 by Guido Vollbeding. + * This file is part of the Independent JPEG Group's software. + * For conditions of distribution and use, see the accompanying README.ijg + * file. +@@ -49,6 +49,7 @@ JMESSAGE(JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB") + JMESSAGE(JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported") + JMESSAGE(JERR_BMP_EMPTY, "Empty BMP image") + JMESSAGE(JERR_BMP_NOT, "Not a BMP file - does not start with BM") ++JMESSAGE(JERR_BMP_OUTOFRANGE, "Numeric value out of range in BMP file") + JMESSAGE(JTRC_BMP, "%ux%u 24-bit BMP image") + JMESSAGE(JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image") + JMESSAGE(JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image") +@@ -75,8 +76,8 @@ JMESSAGE(JWRN_GIF_NOMOREDATA, "Ran out of GIF bits") + #ifdef PPM_SUPPORTED + JMESSAGE(JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB") + JMESSAGE(JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file") +-JMESSAGE(JERR_PPM_TOOLARGE, "Integer value too large in PPM file") + JMESSAGE(JERR_PPM_NOT, "Not a PPM/PGM file") ++JMESSAGE(JERR_PPM_OUTOFRANGE, "Numeric value out of range in PPM file") + JMESSAGE(JTRC_PGM, "%ux%u PGM image") + JMESSAGE(JTRC_PGM_TEXT, "%ux%u text PGM image") + JMESSAGE(JTRC_PPM, "%ux%u PPM image") +diff --git a/rdbmp.c b/rdbmp.c +index 4104b68..a7dbe9f 100644 +--- a/rdbmp.c ++++ b/rdbmp.c +@@ -3,7 +3,7 @@ + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1994-1996, Thomas G. Lane. +- * Modified 2009-2010 by Guido Vollbeding. ++ * Modified 2009-2017 by Guido Vollbeding. + * libjpeg-turbo Modifications: + * Modified 2011 by Siarhei Siamashka. + * Copyright (C) 2015, D. R. Commander. +@@ -66,6 +66,7 @@ typedef struct _bmp_source_struct { + JDIMENSION row_width; /* Physical width of scanlines in file */ + + int bits_per_pixel; /* remembers 8- or 24-bit format */ ++ int cmap_length; /* colormap length */ + } bmp_source_struct; + + +@@ -126,6 +127,7 @@ get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) + { + bmp_source_ptr source = (bmp_source_ptr) sinfo; + register JSAMPARRAY colormap = source->colormap; ++ int cmaplen = source->cmap_length; + JSAMPARRAY image_ptr; + register int t; + register JSAMPROW inptr, outptr; +@@ -142,6 +144,8 @@ get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) + outptr = source->pub.buffer[0]; + for (col = cinfo->image_width; col > 0; col--) { + t = GETJSAMPLE(*inptr++); ++ if (t >= cmaplen) ++ ERREXIT(cinfo, JERR_BMP_OUTOFRANGE); + *outptr++ = colormap[0][t]; /* can omit GETJSAMPLE() safely */ + *outptr++ = colormap[1][t]; + *outptr++ = colormap[2][t]; +@@ -401,6 +405,7 @@ start_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) + source->colormap = (*cinfo->mem->alloc_sarray) + ((j_common_ptr) cinfo, JPOOL_IMAGE, + (JDIMENSION) biClrUsed, (JDIMENSION) 3); ++ source->cmap_length = (int)biClrUsed; + /* and read it from the file */ + read_colormap(source, (int) biClrUsed, mapentrysize); + /* account for size of colormap */ +diff --git a/rdppm.c b/rdppm.c +index 33ff749..c0c0962 100644 +--- a/rdppm.c ++++ b/rdppm.c +@@ -69,7 +69,7 @@ typedef struct { + JSAMPROW pixrow; /* compressor input buffer */ + size_t buffer_width; /* width of I/O buffer */ + JSAMPLE *rescale; /* => maxval-remapping array, or NULL */ +- int maxval; ++ unsigned int maxval; + } ppm_source_struct; + + typedef ppm_source_struct *ppm_source_ptr; +@@ -119,7 +119,7 @@ read_pbm_integer (j_compress_ptr cinfo, FILE *infile, unsigned int maxval) + } + + if (val > maxval) +- ERREXIT(cinfo, JERR_PPM_TOOLARGE); ++ ERREXIT(cinfo, JERR_PPM_OUTOFRANGE); + + return val; + } +@@ -255,7 +255,7 @@ get_word_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); + if (temp > maxval) +- ERREXIT(cinfo, JERR_PPM_TOOLARGE); ++ ERREXIT(cinfo, JERR_PPM_OUTOFRANGE); + *ptr++ = rescale[temp]; + } + return 1; +@@ -282,17 +282,17 @@ get_word_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo) + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); + if (temp > maxval) +- ERREXIT(cinfo, JERR_PPM_TOOLARGE); ++ ERREXIT(cinfo, JERR_PPM_OUTOFRANGE); + *ptr++ = rescale[temp]; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); + if (temp > maxval) +- ERREXIT(cinfo, JERR_PPM_TOOLARGE); ++ ERREXIT(cinfo, JERR_PPM_OUTOFRANGE); + *ptr++ = rescale[temp]; + temp = UCH(*bufferptr++) << 8; + temp |= UCH(*bufferptr++); + if (temp > maxval) +- ERREXIT(cinfo, JERR_PPM_TOOLARGE); ++ ERREXIT(cinfo, JERR_PPM_OUTOFRANGE); + *ptr++ = rescale[temp]; + } + return 1; +-- +2.21.0 + diff --git a/SPECS/libjpeg-turbo.spec b/SPECS/libjpeg-turbo.spec index c668362..d0273ad 100644 --- a/SPECS/libjpeg-turbo.spec +++ b/SPECS/libjpeg-turbo.spec @@ -1,6 +1,6 @@ Name: libjpeg-turbo Version: 1.5.3 -Release: 7%{?dist} +Release: 10%{?dist} Summary: A MMX/SSE2/SIMD accelerated library for manipulating JPEG image files License: IJG URL: http://sourceforge.net/projects/libjpeg-turbo @@ -12,6 +12,8 @@ Patch2: libjpeg-turbo-CVE-2018-11813.patch Patch3: libjpeg-turbo-CVE-2018-1152.patch Patch4: libjpeg-turbo-honor-naflags.patch Patch5: libjpeg-turbo-coverity.patch +Patch6: libjpeg-turbo-CET.patch +Patch7: libjpeg-turbo-CVE-2018-14498.patch BuildRequires: autoconf BuildRequires: automake @@ -79,11 +81,18 @@ manipulate JPEG files using the TurboJPEG library. %patch3 -p1 -b .CVE-2018-1152 %patch4 -p1 -b .honor-naflags %patch5 -p1 -b .coverity +%patch6 -p1 -b .CET +%patch7 -p1 -b .CVE-2018-14498 %build autoreconf -vif export NAFLAGS="-g -Fdwarf" export CCASFLAGS="-Wa,--generate-missing-build-notes=yes" +# NASM object files are missing GNU Property note for Intel CET, +# force it on the resulting library +%ifarch %{ix86} x86_64 +export LDFLAGS="$RPM_LD_FLAGS -Wl,-z,ibt -Wl,-z,shstk" +%endif %configure --disable-static make %{?_smp_mflags} V=1 @@ -175,6 +184,15 @@ make test %{?_smp_mflags} %{_libdir}/pkgconfig/libturbojpeg.pc %changelog +* Thu Jun 06 2019 Nikola Forró - 1.5.3-10 +- Fix CVE-2018-14498 (#1687477) + +* Tue Jun 04 2019 Nikola Forró - 1.5.3-9 +- Fix LDFLAGS (#1688397) + +* Thu Mar 21 2019 Nikola Forró - 1.5.3-8 +- Support running with Intel CET (#1688397) + * Mon Oct 15 2018 Nikola Forró - 1.5.3-7 - Fix important Covscan defects (#1606984)