Skip to content

Commit 6ffcd5d

Browse files
authored
Merge pull request #12053 from dgarske/sp_ubsan_fixes
Fix undefined behavior in C SP math and sp_int under non -fwrapv, and a dropped carry in the ARM32/Thumb2 SP squares
2 parents 34edea9 + eee215b commit 6ffcd5d

6 files changed

Lines changed: 730 additions & 605 deletions

File tree

‎wolfcrypt/src/sp_arm32.c‎

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26025,7 +26025,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2602526025
"adc r2, r2, #0\n\t"
2602626026
"adds r3, r3, r8\n\t"
2602726027
"adcs r4, r4, r9\n\t"
26028-
"mov r2, #0\n\t"
2602926028
"adc r2, r2, #0\n\t"
2603026029
#endif
2603126030
"str r3, [sp, #4]\n\t"
@@ -26081,7 +26080,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2608126080
"adc r3, r3, #0\n\t"
2608226081
"adds r4, r4, r8\n\t"
2608326082
"adcs r2, r2, r9\n\t"
26084-
"mov r3, #0\n\t"
2608526083
"adc r3, r3, #0\n\t"
2608626084
#endif
2608726085
/* A[1] * A[1] */
@@ -26165,7 +26163,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2616526163
"adc r4, r4, #0\n\t"
2616626164
"adds r2, r2, r8\n\t"
2616726165
"adcs r3, r3, r9\n\t"
26168-
"mov r4, #0\n\t"
2616926166
"adc r4, r4, #0\n\t"
2617026167
#endif
2617126168
/* A[1] * A[2] */
@@ -26273,7 +26270,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2627326270
"adc r2, r2, #0\n\t"
2627426271
"adds r3, r3, r8\n\t"
2627526272
"adcs r4, r4, r9\n\t"
26276-
"mov r2, #0\n\t"
2627726273
"adc r2, r2, #0\n\t"
2627826274
#endif
2627926275
/* A[1] * A[3] */
@@ -28634,7 +28630,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2863428630
"adc r4, r4, #0\n\t"
2863528631
"adds r2, r2, r8\n\t"
2863628632
"adcs r3, r3, r9\n\t"
28637-
"mov r4, #0\n\t"
2863828633
"adc r4, r4, #0\n\t"
2863928634
#endif
2864028635
/* A[8] * A[10] */
@@ -28770,7 +28765,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2877028765
"adc r2, r2, #0\n\t"
2877128766
"adds r3, r3, r8\n\t"
2877228767
"adcs r4, r4, r9\n\t"
28773-
"mov r2, #0\n\t"
2877428768
"adc r2, r2, #0\n\t"
2877528769
#endif
2877628770
/* A[9] * A[10] */
@@ -28878,7 +28872,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2887828872
"adc r3, r3, #0\n\t"
2887928873
"adds r4, r4, r8\n\t"
2888028874
"adcs r2, r2, r9\n\t"
28881-
"mov r3, #0\n\t"
2888228875
"adc r3, r3, #0\n\t"
2888328876
#endif
2888428877
/* A[10] * A[10] */
@@ -28962,7 +28955,6 @@ WC_OMIT_FRAME_POINTER static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
2896228955
"adc r4, r4, #0\n\t"
2896328956
"adds r2, r2, r8\n\t"
2896428957
"adcs r3, r3, r9\n\t"
28965-
"mov r4, #0\n\t"
2896628958
"adc r4, r4, #0\n\t"
2896728959
#endif
2896828960
"str r2, [%[r], #84]\n\t"
@@ -88517,7 +88509,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
8851788509
"adc r2, r2, #0\n\t"
8851888510
"adds r3, r3, r8\n\t"
8851988511
"adcs r4, r4, r9\n\t"
88520-
"mov r2, #0\n\t"
8852188512
"adc r2, r2, #0\n\t"
8852288513
#endif
8852388514
"str r3, [sp, #4]\n\t"
@@ -88573,7 +88564,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
8857388564
"adc r3, r3, #0\n\t"
8857488565
"adds r4, r4, r8\n\t"
8857588566
"adcs r2, r2, r9\n\t"
88576-
"mov r3, #0\n\t"
8857788567
"adc r3, r3, #0\n\t"
8857888568
#endif
8857988569
/* A[1] * A[1] */
@@ -88657,7 +88647,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
8865788647
"adc r4, r4, #0\n\t"
8865888648
"adds r2, r2, r8\n\t"
8865988649
"adcs r3, r3, r9\n\t"
88660-
"mov r4, #0\n\t"
8866188650
"adc r4, r4, #0\n\t"
8866288651
#endif
8866388652
/* A[1] * A[2] */
@@ -88765,7 +88754,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
8876588754
"adc r2, r2, #0\n\t"
8876688755
"adds r3, r3, r8\n\t"
8876788756
"adcs r4, r4, r9\n\t"
88768-
"mov r2, #0\n\t"
8876988757
"adc r2, r2, #0\n\t"
8877088758
#endif
8877188759
/* A[1] * A[3] */
@@ -91126,7 +91114,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
9112691114
"adc r4, r4, #0\n\t"
9112791115
"adds r2, r2, r8\n\t"
9112891116
"adcs r3, r3, r9\n\t"
91129-
"mov r4, #0\n\t"
9113091117
"adc r4, r4, #0\n\t"
9113191118
#endif
9113291119
/* A[8] * A[10] */
@@ -91262,7 +91249,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
9126291249
"adc r2, r2, #0\n\t"
9126391250
"adds r3, r3, r8\n\t"
9126491251
"adcs r4, r4, r9\n\t"
91265-
"mov r2, #0\n\t"
9126691252
"adc r2, r2, #0\n\t"
9126791253
#endif
9126891254
/* A[9] * A[10] */
@@ -91370,7 +91356,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
9137091356
"adc r3, r3, #0\n\t"
9137191357
"adds r4, r4, r8\n\t"
9137291358
"adcs r2, r2, r9\n\t"
91373-
"mov r3, #0\n\t"
9137491359
"adc r3, r3, #0\n\t"
9137591360
#endif
9137691361
/* A[10] * A[10] */
@@ -91454,7 +91439,6 @@ WC_OMIT_FRAME_POINTER static void sp_384_sqr_12(sp_digit* r, const sp_digit* a)
9145491439
"adc r4, r4, #0\n\t"
9145591440
"adds r2, r2, r8\n\t"
9145691441
"adcs r3, r3, r9\n\t"
91457-
"mov r4, #0\n\t"
9145891442
"adc r4, r4, #0\n\t"
9145991443
#endif
9146091444
"str r2, [%[r], #84]\n\t"
@@ -112857,7 +112841,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
112857112841
"adc r2, r2, #0\n\t"
112858112842
"adds r3, r3, r8\n\t"
112859112843
"adcs r4, r4, r9\n\t"
112860-
"mov r2, #0\n\t"
112861112844
"adc r2, r2, #0\n\t"
112862112845
#endif
112863112846
"str r3, [sp, #4]\n\t"
@@ -112913,7 +112896,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
112913112896
"adc r3, r3, #0\n\t"
112914112897
"adds r4, r4, r8\n\t"
112915112898
"adcs r2, r2, r9\n\t"
112916-
"mov r3, #0\n\t"
112917112899
"adc r3, r3, #0\n\t"
112918112900
#endif
112919112901
/* A[1] * A[1] */
@@ -112997,7 +112979,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
112997112979
"adc r4, r4, #0\n\t"
112998112980
"adds r2, r2, r8\n\t"
112999112981
"adcs r3, r3, r9\n\t"
113000-
"mov r4, #0\n\t"
113001112982
"adc r4, r4, #0\n\t"
113002112983
#endif
113003112984
/* A[1] * A[2] */
@@ -113105,7 +113086,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
113105113086
"adc r2, r2, #0\n\t"
113106113087
"adds r3, r3, r8\n\t"
113107113088
"adcs r4, r4, r9\n\t"
113108-
"mov r2, #0\n\t"
113109113089
"adc r2, r2, #0\n\t"
113110113090
#endif
113111113091
/* A[1] * A[3] */
@@ -118271,7 +118251,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
118271118251
"adc r2, r2, #0\n\t"
118272118252
"adds r3, r3, r8\n\t"
118273118253
"adcs r4, r4, r9\n\t"
118274-
"mov r2, #0\n\t"
118275118254
"adc r2, r2, #0\n\t"
118276118255
#endif
118277118256
/* A[13] * A[15] */
@@ -118407,7 +118386,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
118407118386
"adc r3, r3, #0\n\t"
118408118387
"adds r4, r4, r8\n\t"
118409118388
"adcs r2, r2, r9\n\t"
118410-
"mov r3, #0\n\t"
118411118389
"adc r3, r3, #0\n\t"
118412118390
#endif
118413118391
/* A[14] * A[15] */
@@ -118515,7 +118493,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
118515118493
"adc r4, r4, #0\n\t"
118516118494
"adds r2, r2, r8\n\t"
118517118495
"adcs r3, r3, r9\n\t"
118518-
"mov r4, #0\n\t"
118519118496
"adc r4, r4, #0\n\t"
118520118497
#endif
118521118498
/* A[15] * A[15] */
@@ -118599,7 +118576,6 @@ WC_OMIT_FRAME_POINTER static void sp_521_sqr_17(sp_digit* r, const sp_digit* a)
118599118576
"adc r2, r2, #0\n\t"
118600118577
"adds r3, r3, r8\n\t"
118601118578
"adcs r4, r4, r9\n\t"
118602-
"mov r2, #0\n\t"
118603118579
"adc r2, r2, #0\n\t"
118604118580
#endif
118605118581
"str r3, [%[r], #124]\n\t"
@@ -140554,7 +140530,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
140554140530
"adc r2, r2, #0\n\t"
140555140531
"adds r3, r3, r8\n\t"
140556140532
"adcs r4, r4, r9\n\t"
140557-
"mov r2, #0\n\t"
140558140533
"adc r2, r2, #0\n\t"
140559140534
#endif
140560140535
"str r3, [sp, #4]\n\t"
@@ -140610,7 +140585,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
140610140585
"adc r3, r3, #0\n\t"
140611140586
"adds r4, r4, r8\n\t"
140612140587
"adcs r2, r2, r9\n\t"
140613-
"mov r3, #0\n\t"
140614140588
"adc r3, r3, #0\n\t"
140615140589
#endif
140616140590
/* A[1] * A[1] */
@@ -140694,7 +140668,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
140694140668
"adc r4, r4, #0\n\t"
140695140669
"adds r2, r2, r8\n\t"
140696140670
"adcs r3, r3, r9\n\t"
140697-
"mov r4, #0\n\t"
140698140671
"adc r4, r4, #0\n\t"
140699140672
#endif
140700140673
/* A[1] * A[2] */
@@ -140802,7 +140775,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
140802140775
"adc r2, r2, #0\n\t"
140803140776
"adds r3, r3, r8\n\t"
140804140777
"adcs r4, r4, r9\n\t"
140805-
"mov r2, #0\n\t"
140806140778
"adc r2, r2, #0\n\t"
140807140779
#endif
140808140780
/* A[1] * A[3] */
@@ -145331,7 +145303,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
145331145303
"adc r3, r3, #0\n\t"
145332145304
"adds r4, r4, r8\n\t"
145333145305
"adcs r2, r2, r9\n\t"
145334-
"mov r3, #0\n\t"
145335145306
"adc r3, r3, #0\n\t"
145336145307
#endif
145337145308
/* A[12] * A[14] */
@@ -145467,7 +145438,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
145467145438
"adc r4, r4, #0\n\t"
145468145439
"adds r2, r2, r8\n\t"
145469145440
"adcs r3, r3, r9\n\t"
145470-
"mov r4, #0\n\t"
145471145441
"adc r4, r4, #0\n\t"
145472145442
#endif
145473145443
/* A[13] * A[14] */
@@ -145575,7 +145545,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
145575145545
"adc r2, r2, #0\n\t"
145576145546
"adds r3, r3, r8\n\t"
145577145547
"adcs r4, r4, r9\n\t"
145578-
"mov r2, #0\n\t"
145579145548
"adc r2, r2, #0\n\t"
145580145549
#endif
145581145550
/* A[14] * A[14] */
@@ -145659,7 +145628,6 @@ WC_OMIT_FRAME_POINTER static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
145659145628
"adc r3, r3, #0\n\t"
145660145629
"adds r4, r4, r8\n\t"
145661145630
"adcs r2, r2, r9\n\t"
145662-
"mov r3, #0\n\t"
145663145631
"adc r3, r3, #0\n\t"
145664145632
#endif
145665145633
"str r4, [%[r], #116]\n\t"

0 commit comments

Comments
 (0)