Browse code

BUG 1965000 : Fix for [CVE-2017-11671] in gcc

Change-Id: Ibc3c60b65d8cb1c96482de494f460f5c2497c523
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/5266
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Tapas Kundu <tkundu@vmware.com>
Reviewed-by: Sharath George

Keerthana K authored on 2018/06/15 00:45:03
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,69 @@
0
+Index: config/i386/i386.c
1
+===================================================================
2
+--- a/gcc/config/i386/i386.c	(revision 246473)
3
+@@ -37572,9 +37572,6 @@ ix86_expand_builtin (tree exp, rtx target, rtx sub
4
+       mode0 = DImode;
5
+ 
6
+ rdrand_step:
7
+-      op0 = gen_reg_rtx (mode0);
8
+-      emit_insn (GEN_FCN (icode) (op0));
9
+-
10
+       arg0 = CALL_EXPR_ARG (exp, 0);
11
+       op1 = expand_normal (arg0);
12
+       if (!address_operand (op1, VOIDmode))
13
+@@ -37582,6 +37579,10 @@ rdrand_step:
14
+ 	  op1 = convert_memory_address (Pmode, op1);
15
+ 	  op1 = copy_addr_to_reg (op1);
16
+ 	}
17
++
18
++      op0 = gen_reg_rtx (mode0);
19
++      emit_insn (GEN_FCN (icode) (op0));
20
++
21
+       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
22
+ 
23
+       op1 = gen_reg_rtx (SImode);
24
+@@ -37590,8 +37591,20 @@ rdrand_step:
25
+       /* Emit SImode conditional move.  */
26
+       if (mode0 == HImode)
27
+ 	{
28
+-	  op2 = gen_reg_rtx (SImode);
29
+-	  emit_insn (gen_zero_extendhisi2 (op2, op0));
30
++	  if (TARGET_ZERO_EXTEND_WITH_AND
31
++	      && optimize_function_for_speed_p (cfun))
32
++	    {
33
++	      op2 = force_reg (SImode, const0_rtx);
34
++
35
++	      emit_insn (gen_movstricthi
36
++			 (gen_lowpart (HImode, op2), op0));
37
++	    }
38
++	  else
39
++	    {
40
++	      op2 = gen_reg_rtx (SImode);
41
++
42
++	      emit_insn (gen_zero_extendhisi2 (op2, op0));
43
++	    }
44
+ 	}
45
+       else if (mode0 == SImode)
46
+ 	op2 = op0;
47
+@@ -37623,9 +37636,6 @@ rdrand_step:
48
+       mode0 = DImode;
49
+ 
50
+ rdseed_step:
51
+-      op0 = gen_reg_rtx (mode0);
52
+-      emit_insn (GEN_FCN (icode) (op0));
53
+-
54
+       arg0 = CALL_EXPR_ARG (exp, 0);
55
+       op1 = expand_normal (arg0);
56
+       if (!address_operand (op1, VOIDmode))
57
+@@ -37633,6 +37643,10 @@ rdseed_step:
58
+ 	  op1 = convert_memory_address (Pmode, op1);
59
+ 	  op1 = copy_addr_to_reg (op1);
60
+ 	}
61
++
62
++      op0 = gen_reg_rtx (mode0);
63
++      emit_insn (GEN_FCN (icode) (op0));
64
++
65
+       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
66
+ 
67
+       op2 = gen_reg_rtx (QImode);
... ...
@@ -2,7 +2,7 @@
2 2
 Summary:	Contains the GNU compiler collection
3 3
 Name:		gcc
4 4
 Version:	5.3.0
5
-Release:	4%{?dist}
5
+Release:	5%{?dist}
6 6
 License:	GPLv2+
7 7
 URL:		http://gcc.gnu.org
8 8
 Group:		Development/Tools
... ...
@@ -10,6 +10,7 @@ Vendor:		VMware, Inc.
10 10
 Distribution:	Photon
11 11
 Source0:	http://ftp.gnu.org/gnu/gcc/%{name}-%{version}/%{name}-%{version}.tar.bz2
12 12
 %define sha1 gcc=0612270b103941da08376df4d0ef4e5662a2e9eb
13
+Patch0:         gcc-CVE-2017-11671.patch
13 14
 Requires:	libstdc++-devel = %{version}-%{release}
14 15
 Requires:	libgcc-devel = %{version}-%{release}
15 16
 Requires:	libgomp-devel = %{version}-%{release}
... ...
@@ -71,6 +72,7 @@ This package contains development headers and static library for libgomp
71 71
 
72 72
 %prep
73 73
 %setup -q
74
+%patch0 -p1
74 75
 sed -i '/*cpp:/s/^/# /' `dirname $(gcc --print-libgcc-file-name)`/../specs
75 76
 sed -i '/Ofast:-D_FORTIFY_SOURCE=2/s/^/# /' `dirname $(gcc --print-libgcc-file-name)`/../specs
76 77
 
... ...
@@ -211,6 +213,8 @@ make -k check |& tee %{_specdir}/%{name}-check-log || %{nocheck}
211 211
 %endif
212 212
 
213 213
 %changelog
214
+*   Thu Jun 14 2018 Keerthana K <keerthanak@vmware.com> 5.3.0-5
215
+-   Fix for CVE-2017-11671.
214 216
 *   Thu Jun 29 2017 Divya Thaluru <dthaluru@vmware.com> 5.3.0-4
215 217
 -   Bump release to built with latest toolchain
216 218
 *   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 5.3.0-3