@@ -888,6 +888,28 @@ __CPROVER_HIDE:;
888
888
return result ;
889
889
}
890
890
891
+ /* FUNCTION: __isoc99_scanf */
892
+
893
+ #ifndef __CPROVER_STDIO_H_INCLUDED
894
+ # include <stdio.h>
895
+ # define __CPROVER_STDIO_H_INCLUDED
896
+ #endif
897
+
898
+ #ifndef __CPROVER_STDARG_H_INCLUDED
899
+ # include <stdarg.h>
900
+ # define __CPROVER_STDARG_H_INCLUDED
901
+ #endif
902
+
903
+ int __isoc99_scanf (const char * restrict format , ...)
904
+ {
905
+ __CPROVER_HIDE :;
906
+ va_list list ;
907
+ va_start (list , format );
908
+ int result = vfscanf (stdin , format , list );
909
+ va_end (list );
910
+ return result ;
911
+ }
912
+
891
913
/* FUNCTION: sscanf */
892
914
893
915
#ifndef __CPROVER_STDIO_H_INCLUDED
@@ -910,6 +932,28 @@ __CPROVER_HIDE:;
910
932
return result ;
911
933
}
912
934
935
+ /* FUNCTION: __isoc99_sscanf */
936
+
937
+ #ifndef __CPROVER_STDIO_H_INCLUDED
938
+ # include <stdio.h>
939
+ # define __CPROVER_STDIO_H_INCLUDED
940
+ #endif
941
+
942
+ #ifndef __CPROVER_STDARG_H_INCLUDED
943
+ # include <stdarg.h>
944
+ # define __CPROVER_STDARG_H_INCLUDED
945
+ #endif
946
+
947
+ int __isoc99_sscanf (const char * restrict s , const char * restrict format , ...)
948
+ {
949
+ __CPROVER_HIDE :;
950
+ va_list list ;
951
+ va_start (list , format );
952
+ int result = vsscanf (s , format , list );
953
+ va_end (list );
954
+ return result ;
955
+ }
956
+
913
957
/* FUNCTION: vfscanf */
914
958
915
959
#ifndef __CPROVER_STDIO_H_INCLUDED
@@ -939,7 +983,12 @@ int vfscanf(FILE *restrict stream, const char *restrict format, va_list arg)
939
983
}
940
984
941
985
(void )* format ;
942
- (void )arg ;
986
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
987
+ __CPROVER_OBJECT_SIZE (arg ))
988
+ {
989
+ void * a = va_arg (arg , void * );
990
+ __CPROVER_havoc_object (a );
991
+ }
943
992
944
993
#ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
945
994
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
@@ -949,6 +998,104 @@ int vfscanf(FILE *restrict stream, const char *restrict format, va_list arg)
949
998
return result ;
950
999
}
951
1000
1001
+ /* FUNCTION: __isoc99_vfscanf */
1002
+
1003
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1004
+ # include <stdio.h>
1005
+ # define __CPROVER_STDIO_H_INCLUDED
1006
+ #endif
1007
+
1008
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1009
+ # include <stdarg.h>
1010
+ # define __CPROVER_STDARG_H_INCLUDED
1011
+ #endif
1012
+
1013
+ int __VERIFIER_nondet_int ();
1014
+
1015
+ int __isoc99_vfscanf (
1016
+ FILE * restrict stream ,
1017
+ const char * restrict format ,
1018
+ va_list arg )
1019
+ {
1020
+ __CPROVER_HIDE :;
1021
+ int result = __VERIFIER_nondet_int ();
1022
+
1023
+ if (stream != stdin )
1024
+ {
1025
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
1026
+ (void )* stream ;
1027
+ #else
1028
+ (void )* (char * )stream ;
1029
+ #endif
1030
+ }
1031
+
1032
+ (void )* format ;
1033
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1034
+ __CPROVER_OBJECT_SIZE (arg ))
1035
+ {
1036
+ void * a = va_arg (arg , void * );
1037
+ __CPROVER_havoc_object (a );
1038
+ }
1039
+
1040
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1041
+ __CPROVER_assert (
1042
+ __CPROVER_get_must (stream , "open" ), "vfscanf file must be open" );
1043
+ #endif
1044
+
1045
+ return result ;
1046
+ }
1047
+
1048
+ /* FUNCTION: __stdio_common_vfscanf */
1049
+
1050
+ #ifdef _WIN32
1051
+
1052
+ # ifndef __CPROVER_STDIO_H_INCLUDED
1053
+ # include <stdio.h>
1054
+ # define __CPROVER_STDIO_H_INCLUDED
1055
+ # endif
1056
+
1057
+ # ifndef __CPROVER_STDARG_H_INCLUDED
1058
+ # include <stdarg.h>
1059
+ # define __CPROVER_STDARG_H_INCLUDED
1060
+ # endif
1061
+
1062
+ int __VERIFIER_nondet_int ();
1063
+
1064
+ int __stdio_common_vfscanf (
1065
+ unsigned __int64 options ,
1066
+ FILE * stream ,
1067
+ char const * format ,
1068
+ _locale_t locale ,
1069
+ va_list args )
1070
+ {
1071
+ (void )options ;
1072
+ (void )locale ;
1073
+
1074
+ int result = __VERIFIER_nondet_int ();
1075
+
1076
+ if (stream != stdin )
1077
+ {
1078
+ (void )* (char * )stream ;
1079
+ }
1080
+
1081
+ (void )* format ;
1082
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args ) <
1083
+ __CPROVER_OBJECT_SIZE (args ))
1084
+ {
1085
+ void * a = va_arg (args , void * );
1086
+ __CPROVER_havoc_object (a );
1087
+ }
1088
+
1089
+ # ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1090
+ __CPROVER_assert (
1091
+ __CPROVER_get_must (stream , "open" ), "vfscanf file must be open" );
1092
+ # endif
1093
+
1094
+ return result ;
1095
+ }
1096
+
1097
+ #endif
1098
+
952
1099
/* FUNCTION: vscanf */
953
1100
954
1101
#ifndef __CPROVER_STDIO_H_INCLUDED
@@ -967,6 +1114,24 @@ int vscanf(const char *restrict format, va_list arg)
967
1114
return vfscanf (stdin , format , arg );
968
1115
}
969
1116
1117
+ /* FUNCTION: __isoc99_vscanf */
1118
+
1119
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1120
+ # include <stdio.h>
1121
+ # define __CPROVER_STDIO_H_INCLUDED
1122
+ #endif
1123
+
1124
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1125
+ # include <stdarg.h>
1126
+ # define __CPROVER_STDARG_H_INCLUDED
1127
+ #endif
1128
+
1129
+ int __isoc99_vscanf (const char * restrict format , va_list arg )
1130
+ {
1131
+ __CPROVER_HIDE :;
1132
+ return vfscanf (stdin , format , arg );
1133
+ }
1134
+
970
1135
/* FUNCTION: vsscanf */
971
1136
972
1137
#ifndef __CPROVER_STDIO_H_INCLUDED
@@ -983,14 +1148,96 @@ int __VERIFIER_nondet_int();
983
1148
984
1149
int vsscanf (const char * restrict s , const char * restrict format , va_list arg )
985
1150
{
986
- __CPROVER_HIDE :;
987
- int result = __VERIFIER_nondet_int ();
1151
+ __CPROVER_HIDE :;
1152
+ int result = __VERIFIER_nondet_int ();
988
1153
(void )* s ;
989
1154
(void )* format ;
990
- (void )arg ;
1155
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1156
+ __CPROVER_OBJECT_SIZE (arg ))
1157
+ {
1158
+ void * a = va_arg (arg , void * );
1159
+ __CPROVER_havoc_object (a );
1160
+ }
1161
+
1162
+ return result ;
1163
+ }
1164
+
1165
+ /* FUNCTION: __isoc99_vsscanf */
1166
+
1167
+ #ifndef __CPROVER_STDIO_H_INCLUDED
1168
+ # include <stdio.h>
1169
+ # define __CPROVER_STDIO_H_INCLUDED
1170
+ #endif
1171
+
1172
+ #ifndef __CPROVER_STDARG_H_INCLUDED
1173
+ # include <stdarg.h>
1174
+ # define __CPROVER_STDARG_H_INCLUDED
1175
+ #endif
1176
+
1177
+ int __VERIFIER_nondet_int ();
1178
+
1179
+ int __isoc99_vsscanf (
1180
+ const char * restrict s ,
1181
+ const char * restrict format ,
1182
+ va_list arg )
1183
+ {
1184
+ __CPROVER_HIDE :;
1185
+ int result = __VERIFIER_nondet_int ();
1186
+ (void )* s ;
1187
+ (void )* format ;
1188
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1189
+ __CPROVER_OBJECT_SIZE (arg ))
1190
+ {
1191
+ void * a = va_arg (arg , void * );
1192
+ __CPROVER_havoc_object (a );
1193
+ }
1194
+
991
1195
return result ;
992
1196
}
993
1197
1198
+ /* FUNCTION: __stdio_common_vsscanf */
1199
+
1200
+ #ifdef _WIN32
1201
+
1202
+ # ifndef __CPROVER_STDIO_H_INCLUDED
1203
+ # include <stdio.h>
1204
+ # define __CPROVER_STDIO_H_INCLUDED
1205
+ # endif
1206
+
1207
+ # ifndef __CPROVER_STDARG_H_INCLUDED
1208
+ # include <stdarg.h>
1209
+ # define __CPROVER_STDARG_H_INCLUDED
1210
+ # endif
1211
+
1212
+ int __VERIFIER_nondet_int ();
1213
+
1214
+ int __stdio_common_vsscanf (
1215
+ unsigned __int64 options ,
1216
+ char const * s ,
1217
+ size_t buffer_count ,
1218
+ char const * format ,
1219
+ _locale_t locale ,
1220
+ va_list args )
1221
+ {
1222
+ (void )options ;
1223
+ (void )locale ;
1224
+
1225
+ int result = __VERIFIER_nondet_int ();
1226
+
1227
+ (void )* s ;
1228
+ (void )* format ;
1229
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args ) <
1230
+ __CPROVER_OBJECT_SIZE (args ))
1231
+ {
1232
+ void * a = va_arg (args , void * );
1233
+ __CPROVER_havoc_object (a );
1234
+ }
1235
+
1236
+ return result ;
1237
+ }
1238
+
1239
+ #endif
1240
+
994
1241
/* FUNCTION: printf */
995
1242
996
1243
#ifndef __CPROVER_STDIO_H_INCLUDED
0 commit comments