提交 3f4bcf5b 编写于 作者: A Andy Polyakov 提交者: Matt Caswell

bn/asm/x86_64-mont5.pl: fix carry bug in bn_sqr8x_internal.

CVE-2017-3732
Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 3e7a4963
...@@ -1934,6 +1934,7 @@ __bn_sqr8x_reduction: ...@@ -1934,6 +1934,7 @@ __bn_sqr8x_reduction:
.align 32 .align 32
.L8x_tail_done: .L8x_tail_done:
xor %rax,%rax
add (%rdx),%r8 # can this overflow? add (%rdx),%r8 # can this overflow?
adc \$0,%r9 adc \$0,%r9
adc \$0,%r10 adc \$0,%r10
...@@ -1941,10 +1942,8 @@ __bn_sqr8x_reduction: ...@@ -1941,10 +1942,8 @@ __bn_sqr8x_reduction:
adc \$0,%r12 adc \$0,%r12
adc \$0,%r13 adc \$0,%r13
adc \$0,%r14 adc \$0,%r14
adc \$0,%r15 # can't overflow, because we adc \$0,%r15
# started with "overhung" part adc \$0,%rax
# of multiplication
xor %rax,%rax
neg $carry neg $carry
.L8x_no_tail: .L8x_no_tail:
...@@ -3384,6 +3383,7 @@ __bn_sqrx8x_reduction: ...@@ -3384,6 +3383,7 @@ __bn_sqrx8x_reduction:
.align 32 .align 32
.Lsqrx8x_tail_done: .Lsqrx8x_tail_done:
xor %rax,%rax
add 24+8(%rsp),%r8 # can this overflow? add 24+8(%rsp),%r8 # can this overflow?
adc \$0,%r9 adc \$0,%r9
adc \$0,%r10 adc \$0,%r10
...@@ -3391,10 +3391,8 @@ __bn_sqrx8x_reduction: ...@@ -3391,10 +3391,8 @@ __bn_sqrx8x_reduction:
adc \$0,%r12 adc \$0,%r12
adc \$0,%r13 adc \$0,%r13
adc \$0,%r14 adc \$0,%r14
adc \$0,%r15 # can't overflow, because we adc \$0,%r15
# started with "overhung" part adc \$0,%rax
# of multiplication
mov $carry,%rax # xor %rax,%rax
sub 16+8(%rsp),$carry # mov 16(%rsp),%cf sub 16+8(%rsp),$carry # mov 16(%rsp),%cf
.Lsqrx8x_no_tail: # %cf is 0 if jumped here .Lsqrx8x_no_tail: # %cf is 0 if jumped here
...@@ -3409,7 +3407,7 @@ __bn_sqrx8x_reduction: ...@@ -3409,7 +3407,7 @@ __bn_sqrx8x_reduction:
adc 8*5($tptr),%r13 adc 8*5($tptr),%r13
adc 8*6($tptr),%r14 adc 8*6($tptr),%r14
adc 8*7($tptr),%r15 adc 8*7($tptr),%r15
adc %rax,%rax # top-most carry adc \$0,%rax # top-most carry
mov 32+8(%rsp),%rbx # n0 mov 32+8(%rsp),%rbx # n0
mov 8*8($tptr,%rcx),%rdx # modulo-scheduled "%r8" mov 8*8($tptr,%rcx),%rdx # modulo-scheduled "%r8"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册