@@ -1792,22 +1792,33 @@ TEST(MemorySanitizer, VAArgOverflow) {
1792
1792
static void vaargsfn_tlsoverwrite2 (int guard, ...) {
1793
1793
va_list vl;
1794
1794
va_start (vl, guard);
1795
- EXPECT_NOT_POISONED (va_arg (vl, int ));
1795
+ for (int i = 0 ; i < 20 ; ++i)
1796
+ EXPECT_NOT_POISONED (va_arg (vl, int ));
1796
1797
va_end (vl);
1797
1798
}
1798
1799
1799
1800
static void vaargsfn_tlsoverwrite (int guard, ...) {
1800
1801
// This call will overwrite TLS contents unless it's backed up somewhere.
1801
- vaargsfn_tlsoverwrite2 (2 , 42 );
1802
+ vaargsfn_tlsoverwrite2 (2 ,
1803
+ 42 , 42 , 42 , 42 , 42 ,
1804
+ 42 , 42 , 42 , 42 , 42 ,
1805
+ 42 , 42 , 42 , 42 , 42 ,
1806
+ 42 , 42 , 42 , 42 , 42 ); // 20x
1802
1807
va_list vl;
1803
1808
va_start (vl, guard);
1804
- EXPECT_POISONED (va_arg (vl, int ));
1809
+ for (int i = 0 ; i < 20 ; ++i)
1810
+ EXPECT_POISONED (va_arg (vl, int ));
1805
1811
va_end (vl);
1806
1812
}
1807
1813
1808
1814
TEST (MemorySanitizer, VAArgTLSOverwrite) {
1809
1815
int * x = GetPoisoned<int >();
1810
- vaargsfn_tlsoverwrite (1 , *x);
1816
+ vaargsfn_tlsoverwrite (1 ,
1817
+ *x, *x, *x, *x, *x,
1818
+ *x, *x, *x, *x, *x,
1819
+ *x, *x, *x, *x, *x,
1820
+ *x, *x, *x, *x, *x); // 20x
1821
+
1811
1822
}
1812
1823
1813
1824
struct StructByVal {
0 commit comments