@@ -1584,6 +1584,154 @@ int vasprintf(char **ptr, const char *fmt, va_list ap)
1584
1584
return i ;
1585
1585
}
1586
1586
1587
+ /* FUNCTION: snprintf */
1588
+
1589
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1590
+ # include <stdio.h>
1591
+ # define __CPROVER_STDIO_H_INCLUDED
1592
+ #endif
1593
+
1594
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1595
+ # include <stdarg.h>
1596
+ # define __CPROVER_STDARG_H_INCLUDED
1597
+ #endif
1598
+
1599
+ #undef snprintf
1600
+
1601
+ int snprintf (char * str , size_t size , const char * fmt , ...)
1602
+ {
1603
+ va_list list ;
1604
+ va_start (list , fmt );
1605
+ int result = vsnprintf (str , size , fmt , list );
1606
+ va_end (list );
1607
+ return result ;
1608
+ }
1609
+
1610
+ /* FUNCTION: __builtin___snprintf_chk */
1611
+
1612
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1613
+ # include <stdio.h>
1614
+ # define __CPROVER_STDIO_H_INCLUDED
1615
+ #endif
1616
+
1617
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1618
+ # include <stdarg.h>
1619
+ # define __CPROVER_STDARG_H_INCLUDED
1620
+ #endif
1621
+
1622
+ int __builtin___vsnprintf_chk (
1623
+ char * str ,
1624
+ size_t size ,
1625
+ int flag ,
1626
+ size_t bufsize ,
1627
+ const char * fmt ,
1628
+ va_list ap );
1629
+
1630
+ int __builtin___snprintf_chk (
1631
+ char * str ,
1632
+ size_t size ,
1633
+ int flag ,
1634
+ size_t bufsize ,
1635
+ const char * fmt ,
1636
+ ...)
1637
+ {
1638
+ va_list list ;
1639
+ va_start (list , fmt );
1640
+ int result = __builtin___vsnprintf_chk (str , size , flag , bufsize , fmt , list );
1641
+ va_end (list );
1642
+ return result ;
1643
+ }
1644
+
1645
+ /* FUNCTION: vsnprintf */
1646
+
1647
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1648
+ # include <stdio.h>
1649
+ # define __CPROVER_STDIO_H_INCLUDED
1650
+ #endif
1651
+
1652
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1653
+ # include <stdarg.h>
1654
+ # define __CPROVER_STDARG_H_INCLUDED
1655
+ #endif
1656
+
1657
+ #undef vsnprintf
1658
+
1659
+ char __VERIFIER_nondet_char (void );
1660
+
1661
+ int vsnprintf (char * str , size_t size , const char * fmt , va_list ap )
1662
+ {
1663
+ (void )* fmt ;
1664
+
1665
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& ap ) <
1666
+ __CPROVER_OBJECT_SIZE (ap ))
1667
+
1668
+ {
1669
+ (void )va_arg (ap , int );
1670
+ __CPROVER_precondition (
1671
+ __CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap ),
1672
+ "vsnprintf object overlap" );
1673
+ }
1674
+
1675
+ size_t i = 0 ;
1676
+ for (; i < size ; ++ i )
1677
+ {
1678
+ char c = __VERIFIER_nondet_char ();
1679
+ str [i ] = c ;
1680
+ if (c == '\0' )
1681
+ break ;
1682
+ }
1683
+
1684
+ return i ;
1685
+ }
1686
+
1687
+ /* FUNCTION: __builtin___vsnprintf_chk */
1688
+
1689
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1690
+ # include <stdio.h>
1691
+ # define __CPROVER_STDIO_H_INCLUDED
1692
+ #endif
1693
+
1694
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1695
+ # include <stdarg.h>
1696
+ # define __CPROVER_STDARG_H_INCLUDED
1697
+ #endif
1698
+
1699
+ char __VERIFIER_nondet_char (void );
1700
+
1701
+ int __builtin___vsnprintf_chk (
1702
+ char * str ,
1703
+ size_t size ,
1704
+ int flag ,
1705
+ size_t bufsize ,
1706
+ const char * fmt ,
1707
+ va_list ap )
1708
+ {
1709
+ (void )flag ;
1710
+ (void )bufsize ;
1711
+ (void )* fmt ;
1712
+
1713
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& ap ) <
1714
+ __CPROVER_OBJECT_SIZE (ap ))
1715
+
1716
+ {
1717
+ (void )va_arg (ap , int );
1718
+ __CPROVER_precondition (
1719
+ __CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap ),
1720
+ "vsnprintf object overlap" );
1721
+ }
1722
+
1723
+ size_t i = 0 ;
1724
+ for (; i < size ; ++ i )
1725
+ {
1726
+ char c = __VERIFIER_nondet_char ();
1727
+ str [i ] = c ;
1728
+ if (c == '\0' )
1729
+ break ;
1730
+ }
1731
+
1732
+ return i ;
1733
+ }
1734
+
1587
1735
/* FUNCTION: __acrt_iob_func */
1588
1736
1589
1737
#ifdef _WIN32
@@ -1645,6 +1793,49 @@ int __stdio_common_vfprintf(
1645
1793
1646
1794
#endif
1647
1795
1796
+ /* FUNCTION: __stdio_common_vsprintf */
1797
+
1798
+ #ifdef _WIN32
1799
+
1800
+ # ifndef __CPROVER_STDIO_H_INCLUDED
1801
+ # include <stdio.h>
1802
+ # define __CPROVER_STDIO_H_INCLUDED
1803
+ # endif
1804
+
1805
+ # ifndef __CPROVER_STDARG_H_INCLUDED
1806
+ # include <stdarg.h>
1807
+ # define __CPROVER_STDARG_H_INCLUDED
1808
+ # endif
1809
+
1810
+ char __VERIFIER_nondet_char (void );
1811
+
1812
+ int __stdio_common_vsprintf (
1813
+ unsigned __int64 options ,
1814
+ char * str ,
1815
+ size_t size ,
1816
+ char const * fmt ,
1817
+ _locale_t locale ,
1818
+ va_list args )
1819
+ {
1820
+ (void )options ;
1821
+ (void )* fmt ;
1822
+ (void )locale ;
1823
+ (void )args ;
1824
+
1825
+ size_t i = 0 ;
1826
+ for (; i < size ; ++ i )
1827
+ {
1828
+ char c = __VERIFIER_nondet_char ();
1829
+ str [i ] = c ;
1830
+ if (c == '\0' )
1831
+ break ;
1832
+ }
1833
+
1834
+ return i ;
1835
+ }
1836
+
1837
+ #endif
1838
+
1648
1839
/* FUNCTION: __srget */
1649
1840
1650
1841
#ifdef __FreeBSD__
0 commit comments