diff --git a/Makefile b/Makefile index 1eb9c825e0856aa9cc58c5a0f885356c33ee386c..71bb4dcf26cfe0fc6dd4325be361dc575a8df138 100644 --- a/Makefile +++ b/Makefile @@ -70,6 +70,7 @@ TARGETS=\ papabench \ polarssl \ qlz \ + safestringlib \ semver \ solitaire \ tweetnacl-usable \ diff --git a/README.md b/README.md index ab766ffba52a822a80f8fe6f46cb047bc6b1af3b..beac7489731faf0da72cc2970437c53ea26791be 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ when available. We also summarize the license of each directory below. - `papabench`: GPL - `polarssl`: GPL - `qlz`: GPL +- `safestringlib`: MIT - `semver`: MIT - `solitaire`: public domain (see `solitaire.c`) - `tweetnacl-usable`: public domain (see `LICENSE.txt`) diff --git a/safestringlib/.frama-c/GNUmakefile b/safestringlib/.frama-c/GNUmakefile new file mode 100644 index 0000000000000000000000000000000000000000..5527a6cfbdc7df7b71c1579d91546e0d655361d3 --- /dev/null +++ b/safestringlib/.frama-c/GNUmakefile @@ -0,0 +1,43 @@ +# Makefile template for Frama-C/Eva case studies. +# For details and usage information, see the Frama-C User Manual. + +### Prologue. Do not modify this block. ####################################### +-include path.mk +FRAMAC ?= frama-c +include $(shell $(FRAMAC)-config -scripts)/prologue.mk +############################################################################### + +# Edit below as needed. MACHDEP is mandatory. Suggested flags are optional. + +MACHDEP = x86_32 + +## Preprocessing flags (for -cpp-extra-args) +CPPFLAGS += \ + -I../include/ \ + -I../safeclib/ \ + +## General flags +FCFLAGS += \ + -add-symbolic-path=.:.. \ + -kernel-warn-key typing:implicit-function-declaration=abort \ + +## Eva-specific flags +EVAFLAGS += \ + -eva-precision 3 \ + +## GUI-only flags +FCGUIFLAGS += \ + -add-symbolic-path=.:.. \ + +## Analysis targets (suffixed with .eva) +TARGETS = intelsafestringlib.eva + +### Each target <t>.eva needs a rule <t>.parse with source files as prerequisites +intelsafestringlib.parse: $(sort $(wildcard ../safeclib/*.c ../unittests/*.c)) + +### Epilogue. Do not modify this block. ####################################### +include $(shell $(FRAMAC)-config -scripts)/epilogue.mk +############################################################################### + +# optional, for OSCS +-include ../../Makefile.common diff --git a/safestringlib/.frama-c/intelsafestringlib.eva/alarms.csv b/safestringlib/.frama-c/intelsafestringlib.eva/alarms.csv new file mode 100644 index 0000000000000000000000000000000000000000..e9809ffc9e92cb5c8d70b9deca925cba53462263 --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.eva/alarms.csv @@ -0,0 +1,590 @@ +directory file line function property kind status property +FRAMAC_SHARE/libc ctype.h 217 toupper precondition Unknown c_uchar_of_eof: (0 ≤ c ≤ 255) ∨ c ≡ -1 +FRAMAC_SHARE/libc stdio.h 213 snprintf assigns clause Unknown assigns \result, *(s + (0 ..)); +FRAMAC_SHARE/libc stdio.h 213 snprintf from clause Unknown assigns *(s + (0 ..)) \from *(s + (0 ..)), *(format + (0 ..)), n; +FRAMAC_SHARE/libc stdio.h 213 snprintf from clause Unknown assigns \result \from *(s + (0 ..)), *(format + (0 ..)), n; +FRAMAC_SHARE/libc stdio.h 336 puts precondition Unknown valid_string_s: valid_read_string(s) +FRAMAC_SHARE/libc string.h 57 memcmp precondition Unknown initialization: s1: \initialized((char *)s1 + (0 .. n - 1)) +FRAMAC_SHARE/libc string.h 58 memcmp precondition Unknown initialization: s2: \initialized((char *)s2 + (0 .. n - 1)) +FRAMAC_SHARE/libc string.h 125 strlen precondition Unknown valid_string_s: valid_read_string(s) +FRAMAC_SHARE/libc string.h 137 strcmp precondition Unknown valid_string_s1: valid_read_string(s1) +FRAMAC_SHARE/libc string.h 231 strcasestr precondition Unknown valid_string_haystack: valid_read_string(haystack) +FRAMAC_SHARE/libc string.h 232 strcasestr precondition Unknown valid_string_needle: valid_read_string(needle) +safeclib mem_primitives_lib.c 89 mem_prim_set mem_access Unknown \valid(tmp) +safeclib mem_primitives_lib.c 106 mem_prim_set mem_access Unknown \valid(tmp_0) +safeclib mem_primitives_lib.c 106 mem_prim_set mem_access Unknown \valid(tmp_1) +safeclib mem_primitives_lib.c 106 mem_prim_set mem_access Unknown \valid(tmp_2) +safeclib mem_primitives_lib.c 106 mem_prim_set mem_access Unknown \valid(tmp_3) +safeclib mem_primitives_lib.c 107 mem_prim_set mem_access Unknown \valid(tmp_4) +safeclib mem_primitives_lib.c 107 mem_prim_set mem_access Unknown \valid(tmp_5) +safeclib mem_primitives_lib.c 107 mem_prim_set mem_access Unknown \valid(tmp_6) +safeclib mem_primitives_lib.c 107 mem_prim_set mem_access Unknown \valid(tmp_7) +safeclib mem_primitives_lib.c 108 mem_prim_set mem_access Unknown \valid(tmp_8) +safeclib mem_primitives_lib.c 108 mem_prim_set mem_access Unknown \valid(tmp_9) +safeclib mem_primitives_lib.c 108 mem_prim_set mem_access Unknown \valid(tmp_10) +safeclib mem_primitives_lib.c 108 mem_prim_set mem_access Unknown \valid(tmp_11) +safeclib mem_primitives_lib.c 109 mem_prim_set mem_access Unknown \valid(tmp_12) +safeclib mem_primitives_lib.c 109 mem_prim_set mem_access Unknown \valid(tmp_13) +safeclib mem_primitives_lib.c 109 mem_prim_set mem_access Unknown \valid(tmp_14) +safeclib mem_primitives_lib.c 109 mem_prim_set mem_access Unknown \valid(tmp_15) +safeclib mem_primitives_lib.c 113 mem_prim_set mem_access Unknown \valid(tmp_16) +safeclib mem_primitives_lib.c 114 mem_prim_set mem_access Unknown \valid(tmp_17) +safeclib mem_primitives_lib.c 115 mem_prim_set mem_access Unknown \valid(tmp_18) +safeclib mem_primitives_lib.c 116 mem_prim_set mem_access Unknown \valid(tmp_19) +safeclib mem_primitives_lib.c 117 mem_prim_set mem_access Unknown \valid(tmp_20) +safeclib mem_primitives_lib.c 118 mem_prim_set mem_access Unknown \valid(tmp_21) +safeclib mem_primitives_lib.c 119 mem_prim_set mem_access Unknown \valid(tmp_22) +safeclib mem_primitives_lib.c 120 mem_prim_set mem_access Unknown \valid(tmp_23) +safeclib mem_primitives_lib.c 122 mem_prim_set mem_access Unknown \valid(tmp_24) +safeclib mem_primitives_lib.c 123 mem_prim_set mem_access Unknown \valid(tmp_25) +safeclib mem_primitives_lib.c 124 mem_prim_set mem_access Unknown \valid(tmp_26) +safeclib mem_primitives_lib.c 125 mem_prim_set mem_access Unknown \valid(tmp_27) +safeclib mem_primitives_lib.c 126 mem_prim_set mem_access Unknown \valid(tmp_28) +safeclib mem_primitives_lib.c 127 mem_prim_set mem_access Unknown \valid(tmp_29) +safeclib mem_primitives_lib.c 128 mem_prim_set mem_access Unknown \valid(tmp_30) +safeclib mem_primitives_lib.c 146 mem_prim_set mem_access Unknown \valid(dp) +safeclib mem_primitives_lib.c 373 mem_prim_move mem_access Unknown \valid(tmp_0) +safeclib mem_primitives_lib.c 373 mem_prim_move mem_access Unknown \valid_read(tmp_1) +safeclib mem_primitives_lib.c 385 mem_prim_move mem_access Unknown \valid((uint32_t *)dp) +safeclib mem_primitives_lib.c 385 mem_prim_move mem_access Unknown \valid_read((uint32_t *)sp) +safeclib mem_primitives_lib.c 399 mem_prim_move mem_access Unknown \valid(tmp_2) +safeclib mem_primitives_lib.c 399 mem_prim_move mem_access Unknown \valid_read(tmp_3) +safeclib mem_primitives_lib.c 442 mem_prim_move mem_access Unknown \valid(dp) +safeclib mem_primitives_lib.c 442 mem_prim_move mem_access Unknown \valid_read(sp) +safeclib mem_primitives_lib.c 456 mem_prim_move mem_access Unknown \valid((uint32_t *)dp) +safeclib mem_primitives_lib.c 456 mem_prim_move mem_access Unknown \valid_read((uint32_t *)sp) +safeclib mem_primitives_lib.c 467 mem_prim_move mem_access Unknown \valid(dp) +safeclib mem_primitives_lib.c 467 mem_prim_move mem_access Unknown \valid_read(sp) +safeclib mem_primitives_lib.c 642 mem_prim_move16 ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)sp) +safeclib mem_primitives_lib.c 655 mem_prim_move16 initialization Unknown \initialized(tmp_0) +safeclib mem_primitives_lib.c 655 mem_prim_move16 initialization Unknown \initialized(tmp_2) +safeclib mem_primitives_lib.c 655 mem_prim_move16 initialization Unknown \initialized(tmp_4) +safeclib mem_primitives_lib.c 655 mem_prim_move16 initialization Unknown \initialized(tmp_6) +safeclib mem_primitives_lib.c 656 mem_prim_move16 initialization Unknown \initialized(tmp_8) +safeclib mem_primitives_lib.c 656 mem_prim_move16 initialization Unknown \initialized(tmp_10) +safeclib mem_primitives_lib.c 656 mem_prim_move16 initialization Unknown \initialized(tmp_12) +safeclib mem_primitives_lib.c 656 mem_prim_move16 initialization Unknown \initialized(tmp_14) +safeclib mem_primitives_lib.c 657 mem_prim_move16 initialization Unknown \initialized(tmp_16) +safeclib mem_primitives_lib.c 657 mem_prim_move16 initialization Unknown \initialized(tmp_18) +safeclib mem_primitives_lib.c 657 mem_prim_move16 initialization Unknown \initialized(tmp_20) +safeclib mem_primitives_lib.c 657 mem_prim_move16 initialization Unknown \initialized(tmp_22) +safeclib mem_primitives_lib.c 658 mem_prim_move16 initialization Unknown \initialized(tmp_24) +safeclib mem_primitives_lib.c 658 mem_prim_move16 initialization Unknown \initialized(tmp_26) +safeclib mem_primitives_lib.c 658 mem_prim_move16 initialization Unknown \initialized(tmp_28) +safeclib mem_primitives_lib.c 658 mem_prim_move16 initialization Unknown \initialized(tmp_30) +safeclib mem_primitives_lib.c 704 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 704 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 704 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 704 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 705 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 705 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 705 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 705 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 706 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 706 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 706 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 706 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 707 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 707 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 707 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 707 mem_prim_move16 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 772 mem_prim_move32 ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)sp) +safeclib mem_primitives_lib.c 785 mem_prim_move32 initialization Unknown \initialized(tmp_0) +safeclib mem_primitives_lib.c 785 mem_prim_move32 initialization Unknown \initialized(tmp_2) +safeclib mem_primitives_lib.c 785 mem_prim_move32 initialization Unknown \initialized(tmp_4) +safeclib mem_primitives_lib.c 785 mem_prim_move32 initialization Unknown \initialized(tmp_6) +safeclib mem_primitives_lib.c 786 mem_prim_move32 initialization Unknown \initialized(tmp_8) +safeclib mem_primitives_lib.c 786 mem_prim_move32 initialization Unknown \initialized(tmp_10) +safeclib mem_primitives_lib.c 786 mem_prim_move32 initialization Unknown \initialized(tmp_12) +safeclib mem_primitives_lib.c 786 mem_prim_move32 initialization Unknown \initialized(tmp_14) +safeclib mem_primitives_lib.c 787 mem_prim_move32 initialization Unknown \initialized(tmp_16) +safeclib mem_primitives_lib.c 787 mem_prim_move32 initialization Unknown \initialized(tmp_18) +safeclib mem_primitives_lib.c 787 mem_prim_move32 initialization Unknown \initialized(tmp_20) +safeclib mem_primitives_lib.c 787 mem_prim_move32 initialization Unknown \initialized(tmp_22) +safeclib mem_primitives_lib.c 788 mem_prim_move32 initialization Unknown \initialized(tmp_24) +safeclib mem_primitives_lib.c 788 mem_prim_move32 initialization Unknown \initialized(tmp_26) +safeclib mem_primitives_lib.c 788 mem_prim_move32 initialization Unknown \initialized(tmp_28) +safeclib mem_primitives_lib.c 788 mem_prim_move32 initialization Unknown \initialized(tmp_30) +safeclib mem_primitives_lib.c 833 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 833 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 833 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 833 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 834 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 834 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 834 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 834 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 835 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 835 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 835 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 835 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 836 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 836 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 836 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib mem_primitives_lib.c 836 mem_prim_move32 initialization Unknown \initialized(sp) +safeclib memcmp16_s.c 159 memcmp16_s initialization Unknown \initialized(dp) +safeclib memcmp16_s.c 159 memcmp16_s initialization Unknown \initialized(sp) +safeclib memcmp32_s.c 153 memcmp32_s initialization Unknown \initialized(dest_0) +safeclib memcmp32_s.c 153 memcmp32_s initialization Unknown \initialized(src) +safeclib memcpy16_s.c 136 memcpy16_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib memcpy16_s.c 136 memcpy16_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)(src + smax)) +safeclib memcpy16_s.c 137 memcpy16_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)dest_0) +safeclib memcpy16_s.c 137 memcpy16_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)(dest_0 + dmax)) +safeclib memcpy32_s.c 135 memcpy32_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib memcpy32_s.c 135 memcpy32_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)(src + smax)) +safeclib memcpy32_s.c 136 memcpy32_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)dest_0) +safeclib memcpy32_s.c 136 memcpy32_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)(dest_0 + dmax)) +safeclib memcpy_s.c 148 memcpy_s ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)sp) +safeclib memcpy_s.c 148 memcpy_s ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)(sp + smax)) +safeclib memcpy_s.c 149 memcpy_s ptr_comparison Unknown \pointer_comparable((void *)sp, (void *)dp) +safeclib memcpy_s.c 149 memcpy_s ptr_comparison Unknown \pointer_comparable((void *)sp, (void *)(dp + dmax)) +safeclib snprintf_support.c 66 parse_format mem_access Unknown \valid_read(format + index_0) +safeclib snprintf_support.c 284 snprintf_s_si initialization Unknown \initialized(&pformatList[index_0]) +safeclib snprintf_support.c 291 snprintf_s_si initialization Unknown \initialized(&pformatList[index_0]) +safeclib stpcpy_s.c 168 stpcpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib stpncpy_s.c 162 stpncpy_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)dest_0) +safeclib stpncpy_s.c 162 stpncpy_s ptr_comparison Unknown \pointer_comparable((void *)(src + smax), (void *)dest_0) +safeclib stpncpy_s.c 171 stpncpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib stpncpy_s.c 171 stpncpy_s ptr_comparison Unknown \pointer_comparable((void *)(dest_0 + smax), (void *)src) +safeclib stpncpy_s.c 221 stpncpy_s mem_access Unknown \valid(filler) +safeclib stpncpy_s.c 260 stpncpy_s mem_access Unknown \valid(filler_0) +safeclib strcasestr_s.c 148 strcasestr_s initialization Unknown \initialized(dest_0) +safeclib strcasestr_s.c 153 strcasestr_s initialization Unknown \initialized(dest_0 + i) +safeclib strcasestr_s.c 153 strcasestr_s mem_access Unknown \valid_read(dest_0 + i) +safeclib strcasestr_s.c 156 strcasestr_s precondition of toupper Unknown c_uchar_of_eof: (0 ≤ c ≤ 255) ∨ c ≡ -1 +safeclib strcasestr_s.c 156 strcasestr_s initialization Unknown \initialized(src + i) +safeclib strcasestr_s.c 156 strcasestr_s precondition of toupper Unknown c_uchar_of_eof: (0 ≤ c ≤ 255) ∨ c ≡ -1 +safeclib strcasestr_s.c 165 strcasestr_s initialization Unknown \initialized(src + i) +safeclib strcat_s.c 135 strcat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strcat_s.c 139 strcat_s mem_access Unknown \valid_read(dest_0) +safeclib strcat_s.c 159 strcat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)overlap_bumper) +safeclib strcat_s.c 166 strcat_s mem_access Unknown \valid(dest_0) +safeclib strcat_s.c 166 strcat_s mem_access Unknown \valid_read(src) +safeclib strcat_s.c 184 strcat_s mem_access Unknown \valid_read(dest_0) +safeclib strcat_s.c 201 strcat_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)overlap_bumper) +safeclib strcat_s.c 208 strcat_s mem_access Unknown \valid(dest_0) +safeclib strcat_s.c 208 strcat_s mem_access Unknown \valid_read(src) +safeclib strcmp_s.c 126 strcmp_s initialization Unknown \initialized(dest_0) +safeclib strcmpfld_s.c 131 strcmpfld_s initialization Unknown \initialized(dest_0) +safeclib strcmpfld_s.c 131 strcmpfld_s initialization Unknown \initialized(src) +safeclib strcmpfld_s.c 140 strcmpfld_s initialization Unknown \initialized(dest_0) +safeclib strcmpfld_s.c 140 strcmpfld_s initialization Unknown \initialized(src) +safeclib strcpy_s.c 138 strcpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strcpyfld_s.c 128 strcpyfld_s mem_access Unknown \valid(dest_0) +safeclib strcpyfld_s.c 137 strcpyfld_s mem_access Unknown \valid(dest_0) +safeclib strcpyfld_s.c 149 strcpyfld_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strcpyfld_s.c 154 strcpyfld_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)overlap_bumper) +safeclib strcpyfld_s.c 167 strcpyfld_s initialization Unknown \initialized(tmp_0) +safeclib strcpyfld_s.c 167 strcpyfld_s mem_access Unknown \valid(tmp) +safeclib strcpyfld_s.c 167 strcpyfld_s mem_access Unknown \valid_read(tmp_0) +safeclib strcpyfld_s.c 177 strcpyfld_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)overlap_bumper) +safeclib strcpyfld_s.c 190 strcpyfld_s initialization Unknown \initialized(tmp_2) +safeclib strcpyfld_s.c 190 strcpyfld_s mem_access Unknown \valid(tmp_1) +safeclib strcpyfld_s.c 190 strcpyfld_s mem_access Unknown \valid_read(tmp_2) +safeclib strcpyfld_s.c 197 strcpyfld_s mem_access Unknown \valid(dest_0) +safeclib strcpyfldin_s.c 151 strcpyfldin_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strcpyfldin_s.c 154 strcpyfldin_s initialization Unknown \initialized(src) +safeclib strcpyfldin_s.c 176 strcpyfldin_s initialization Unknown \initialized(src) +safeclib strcpyfldin_s.c 199 strcpyfldin_s mem_access Unknown \valid(dest_0) +safeclib strcpyfldout_s.c 153 strcpyfldout_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strcpyfldout_s.c 173 strcpyfldout_s initialization Unknown \initialized(tmp_0) +safeclib strcpyfldout_s.c 196 strcpyfldout_s initialization Unknown \initialized(tmp_2) +safeclib strcpyfldout_s.c 201 strcpyfldout_s mem_access Unknown \valid(dest_0) +safeclib strfirstchar_s.c 116 strfirstchar_s initialization Unknown \initialized(dest_0) +safeclib strfirstdiff_s.c 130 strfirstdiff_s initialization Unknown \initialized(dest_0) +safeclib strfirstdiff_s.c 130 strfirstdiff_s initialization Unknown \initialized(src) +safeclib strfirstsame_s.c 132 strfirstsame_s initialization Unknown \initialized(dest_0) +safeclib strfirstsame_s.c 132 strfirstsame_s initialization Unknown \initialized(src) +safeclib strisalphanumeric_s.c 102 strisalphanumeric_s initialization Unknown \initialized(dest_0) +safeclib strisalphanumeric_s.c 106 strisalphanumeric_s initialization Unknown \initialized(dest_0) +safeclib strisascii_s.c 101 strisascii_s initialization Unknown \initialized(dest_0) +safeclib strisdigit_s.c 98 strisdigit_s initialization Unknown \initialized(dest_0) +safeclib strisdigit_s.c 102 strisdigit_s initialization Unknown \initialized(dest_0) +safeclib strishex_s.c 104 strishex_s initialization Unknown \initialized(dest_0) +safeclib strislowercase_s.c 108 strislowercase_s initialization Unknown \initialized(dest_0) +safeclib strismixedcase_s.c 103 strismixedcase_s initialization Unknown \initialized(dest_0) +safeclib strismixedcase_s.c 107 strismixedcase_s initialization Unknown \initialized(dest_0) +safeclib strispassword_s.c 112 strispassword_s initialization Unknown \initialized(dest_0) +safeclib strispassword_s.c 119 strispassword_s initialization Unknown \initialized(dest_0) +safeclib strisuppercase_s.c 107 strisuppercase_s initialization Unknown \initialized(dest_0) +safeclib strlastchar_s.c 116 strlastchar_s initialization Unknown \initialized(dest_0) +safeclib strlastdiff_s.c 134 strlastdiff_s initialization Unknown \initialized(dest_0) +safeclib strlastdiff_s.c 134 strlastdiff_s initialization Unknown \initialized(src) +safeclib strlastsame_s.c 135 strlastsame_s initialization Unknown \initialized(dest_0) +safeclib strlastsame_s.c 135 strlastsame_s initialization Unknown \initialized(src) +safeclib strljustify_s.c 128 strljustify_s mem_access Unknown \valid(tmp) +safeclib strljustify_s.c 143 strljustify_s initialization Unknown \initialized(dest_0) +safeclib strljustify_s.c 151 strljustify_s initialization Unknown \initialized(dest_0) +safeclib strncat_s.c 141 strncat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strncat_s.c 145 strncat_s mem_access Unknown \valid_read(dest_0) +safeclib strncat_s.c 165 strncat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)overlap_bumper) +safeclib strncat_s.c 180 strncat_s mem_access Unknown \valid(dest_0) +safeclib strncat_s.c 185 strncat_s mem_access Unknown \valid(dest_0) +safeclib strncat_s.c 204 strncat_s mem_access Unknown \valid_read(dest_0) +safeclib strncat_s.c 221 strncat_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)overlap_bumper) +safeclib strncat_s.c 236 strncat_s mem_access Unknown \valid(dest_0) +safeclib strncat_s.c 241 strncat_s mem_access Unknown \valid(dest_0) +safeclib strncpy_s.c 151 strncpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib strnterminate_s.c 101 strnterminate_s initialization Unknown \initialized(dest_0) +safeclib strprefix_s.c 115 strprefix_s initialization Unknown \initialized(src) +safeclib strprefix_s.c 117 strprefix_s initialization Unknown \initialized(dest_0) +safeclib strremovews_s.c 122 strremovews_s mem_access Unknown \valid(tmp) +safeclib strremovews_s.c 138 strremovews_s initialization Unknown \initialized(dest_0) +safeclib strremovews_s.c 146 strremovews_s initialization Unknown \initialized(dest_0) +safeclib strremovews_s.c 157 strremovews_s mem_access Unknown \valid_read(dest_0) +safeclib strstr_s.c 152 strstr_s mem_access Unknown \valid_read(src + i) +safeclib strstr_s.c 155 strstr_s mem_access Unknown \valid_read(dest_0 + i) +safeclib strtok_s.c 227 strtok_s initialization Unknown \initialized(dest_0) +safeclib strtok_s.c 227 strtok_s mem_access Unknown \valid_read(dest_0) +safeclib strtok_s.c 243 strtok_s initialization Unknown \initialized(pt) +safeclib strtok_s.c 278 strtok_s initialization Unknown \initialized(dest_0) +safeclib strtok_s.c 290 strtok_s initialization Unknown \initialized(pt) +safeclib strtolowercase_s.c 104 strtolowercase_s initialization Unknown \initialized(dest_0) +safeclib strtouppercase_s.c 104 strtouppercase_s initialization Unknown \initialized(dest_0) +safeclib wcpcpy_s.c 143 wcpcpy_s mem_access Unknown \valid_read(dest_0) +safeclib wcpcpy_s.c 157 wcpcpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib wcscat_s.c 135 wcscat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib wcscpy_s.c 134 wcscpy_s mem_access Unknown \valid_read(src) +safeclib wcscpy_s.c 147 wcscpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib wcscpy_s.c 158 wcscpy_s mem_access Unknown \valid_read(src) +safeclib wcscpy_s.c 176 wcscpy_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)overlap_bumper) +safeclib wcscpy_s.c 183 wcscpy_s mem_access Unknown \valid_read(src) +safeclib wcsncat_s.c 145 wcsncat_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib wcsncpy_s.c 157 wcsncpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)src) +safeclib wcsncpy_s.c 161 wcsncpy_s ptr_comparison Unknown \pointer_comparable((void *)dest_0, (void *)overlap_bumper) +safeclib wcsncpy_s.c 175 wcsncpy_s mem_access Unknown \valid(dest_0) +safeclib wcsncpy_s.c 199 wcsncpy_s ptr_comparison Unknown \pointer_comparable((void *)src, (void *)overlap_bumper) +safeclib wcsncpy_s.c 213 wcsncpy_s mem_access Unknown \valid(dest_0) +safeclib wcsnlen_s.c 105 wcsnlen_s mem_access Unknown \valid_read(dest_0) +safeclib wmemcmp_s.c 155 wmemcmp_s initialization Unknown \initialized(dest_0) +safeclib wmemcmp_s.c 155 wmemcmp_s initialization Unknown \initialized(src) +safeclib wmemcpy_s.c 143 wmemcpy_s ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)sp) +safeclib wmemcpy_s.c 143 wmemcpy_s ptr_comparison Unknown \pointer_comparable((void *)dp, (void *)(sp + smax)) +safeclib wmemcpy_s.c 144 wmemcpy_s ptr_comparison Unknown \pointer_comparable((void *)sp, (void *)dp) +safeclib wmemcpy_s.c 144 wmemcpy_s ptr_comparison Unknown \pointer_comparable((void *)sp, (void *)(dp + dmax)) +unittests Safe_String_UnitTestMain.c 187 main precondition of puts Unknown valid_string_s: valid_read_string(s) +unittests test_memcmp16_s.c 142 test_memcmp16_s precondition of memcmp Unknown initialization: s1: \initialized((char *)s1 + (0 .. n - 1)) +unittests test_memcmp16_s.c 142 test_memcmp16_s precondition of memcmp Unknown initialization: s2: \initialized((char *)s2 + (0 .. n - 1)) +unittests test_memcmp32_s.c 141 test_memcmp32_s precondition of memcmp Unknown initialization: s1: \initialized((char *)s1 + (0 .. n - 1)) +unittests test_memcmp32_s.c 141 test_memcmp32_s precondition of memcmp Unknown initialization: s2: \initialized((char *)s2 + (0 .. n - 1)) +unittests test_memcpy16_s.c 142 test_memcpy16_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memcpy16_s.c 143 test_memcpy16_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memcpy16_s.c 161 test_memcpy16_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memcpy16_s.c 162 test_memcpy16_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memcpy16_s.c 232 test_memcpy16_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memcpy32_s.c 141 test_memcpy32_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memcpy32_s.c 142 test_memcpy32_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memcpy32_s.c 160 test_memcpy32_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memcpy32_s.c 161 test_memcpy32_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memcpy32_s.c 231 test_memcpy32_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memmove16_s.c 85 test_memmove16_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memmove16_s.c 85 test_memmove16_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memmove16_s.c 129 test_memmove16_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memmove16_s.c 152 test_memmove16_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memmove32_s.c 85 test_memmove32_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memmove32_s.c 85 test_memmove32_s initialization Unknown \initialized(&mem2_4[i]) +unittests test_memmove32_s.c 129 test_memmove32_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memmove32_s.c 152 test_memmove32_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_memzero_s.c 116 test_memzero_s initialization Unknown \initialized(&mem1_6[i]) +unittests test_strcasestr_s.c 133 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 133 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcasestr_s.c 159 test_strcasestr_s precondition of strcasestr Unknown valid_string_haystack: valid_read_string(haystack) +unittests test_strcasestr_s.c 160 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 160 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcasestr_s.c 163 printf_va_269 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 163 test_strcasestr_s precondition of printf_va_269 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 187 test_strcasestr_s precondition of strcasestr Unknown valid_string_haystack: valid_read_string(haystack) +unittests test_strcasestr_s.c 188 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 188 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcasestr_s.c 191 printf_va_276 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 191 test_strcasestr_s precondition of printf_va_276 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 253 test_strcasestr_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcasestr_s.c 254 test_strcasestr_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcasestr_s.c 269 test_strcasestr_s precondition of strcasestr Unknown valid_string_haystack: valid_read_string(haystack) +unittests test_strcasestr_s.c 269 test_strcasestr_s precondition of strcasestr Unknown valid_string_needle: valid_read_string(needle) +unittests test_strcasestr_s.c 270 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 270 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcasestr_s.c 273 printf_va_289 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 273 test_strcasestr_s precondition of printf_va_289 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 274 printf_va_290 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 274 test_strcasestr_s precondition of printf_va_290 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 284 test_strcasestr_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcasestr_s.c 285 test_strcasestr_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcasestr_s.c 300 test_strcasestr_s precondition of strcasestr Unknown valid_string_haystack: valid_read_string(haystack) +unittests test_strcasestr_s.c 300 test_strcasestr_s precondition of strcasestr Unknown valid_string_needle: valid_read_string(needle) +unittests test_strcasestr_s.c 301 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 301 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcasestr_s.c 304 printf_va_296 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 304 test_strcasestr_s precondition of printf_va_296 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 305 printf_va_297 precondition Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 305 test_strcasestr_s precondition of printf_va_297 Unknown valid_read_string(param0) +unittests test_strcasestr_s.c 379 test_strcasestr_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcasestr_s.c 425 test_strcasestr_s precondition of strcasestr Unknown valid_string_haystack: valid_read_string(haystack) +unittests test_strcasestr_s.c 425 test_strcasestr_s precondition of strcasestr Unknown valid_string_needle: valid_read_string(needle) +unittests test_strcasestr_s.c 426 test_strcasestr_s pointer_downcast Unknown (unsigned int)sub ≤ 2147483647 +unittests test_strcasestr_s.c 426 test_strcasestr_s pointer_downcast Unknown (unsigned int)std_sub ≤ 2147483647 +unittests test_strcat_s.c 103 test_strcat_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcat_s.c 153 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcat_s.c 187 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcat_s.c 204 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcat_s.c 232 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcat_s.c 279 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcat_s.c 296 test_strcat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strcmpfld_s.c 100 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 100 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 119 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 119 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 130 test_strcmpfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcmpfld_s.c 138 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 138 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 153 test_strcmpfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcmpfld_s.c 161 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 161 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 170 test_strcmpfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcmpfld_s.c 185 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 185 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 194 test_strcmpfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcmpfld_s.c 207 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 207 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcmpfld_s.c 216 test_strcmpfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcmpfld_s.c 231 test_strcmpfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcmpfld_s.c 231 test_strcmpfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfld_s.c 162 test_strcpyfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfld_s.c 165 test_strcpyfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfld_s.c 175 test_strcpyfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcpyfld_s.c 175 test_strcpyfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfld_s.c 184 test_strcpyfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfld_s.c 188 test_strcpyfld_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfld_s.c 199 test_strcpyfld_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcpyfld_s.c 199 test_strcpyfld_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldin_s.c 71 test_strcpyfldin_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfldin_s.c 72 test_strcpyfldin_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfldin_s.c 81 test_strcpyfldin_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcpyfldin_s.c 119 test_strcpyfldin_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldin_s.c 138 test_strcpyfldin_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldin_s.c 158 test_strcpyfldin_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcpyfldin_s.c 216 test_strcpyfldin_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldin_s.c 228 test_strcpyfldin_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfldin_s.c 237 test_strcpyfldin_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldout_s.c 161 test_strcpyfldout_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strcpyfldout_s.c 211 test_strcpyfldout_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfldout_s.c 220 test_strcpyfldout_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strcpyfldout_s.c 232 test_strcpyfldout_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strcpyfldout_s.c 241 test_strcpyfldout_s initialization Unknown \initialized(&str2_16[i]) +unittests test_strfirstchar_s.c 117 test_strfirstchar_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisalphanumeric_s.c 83 test_strisalphanumeric_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisalphanumeric_s.c 94 test_strisalphanumeric_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisalphanumeric_s.c 105 test_strisalphanumeric_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisalphanumeric_s.c 117 test_strisalphanumeric_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisalphanumeric_s.c 129 test_strisalphanumeric_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisascii_s.c 70 test_strisascii_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisascii_s.c 81 test_strisascii_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisascii_s.c 92 test_strisascii_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisascii_s.c 114 test_strisascii_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisdigit_s.c 70 test_strisdigit_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisdigit_s.c 81 test_strisdigit_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisdigit_s.c 92 test_strisdigit_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisdigit_s.c 103 test_strisdigit_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strishex_s.c 79 test_strishex_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strishex_s.c 90 test_strishex_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strishex_s.c 101 test_strishex_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strishex_s.c 112 test_strishex_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strishex_s.c 123 test_strishex_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strislowercase_s.c 70 test_strislowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strislowercase_s.c 81 test_strislowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strislowercase_s.c 92 test_strislowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strismixed_s.c 70 test_strismixed_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strismixed_s.c 81 test_strismixed_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strismixed_s.c 92 test_strismixed_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strismixed_s.c 103 test_strismixed_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strispassword_s.c 74 test_strispassword_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strispassword_s.c 85 test_strispassword_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strispassword_s.c 96 test_strispassword_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strispassword_s.c 107 test_strispassword_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strispassword_s.c 118 test_strispassword_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisuppercase_s.c 70 test_strisuppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisuppercase_s.c 81 test_strisuppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisuppercase_s.c 92 test_strisuppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strisuppercase_s.c 103 test_strisuppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strljustify_s.c 90 printf_va_621 precondition Unknown valid_read_string(param2) +unittests test_strljustify_s.c 90 test_strljustify_s precondition of printf_va_621 Unknown valid_read_string(param2) +unittests test_strljustify_s.c 161 test_strljustify_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strljustify_s.c 163 printf_va_629 precondition Unknown valid_read_string(param2) +unittests test_strljustify_s.c 163 test_strljustify_s precondition of printf_va_629 Unknown valid_read_string(param2) +unittests test_strljustify_s.c 179 test_strljustify_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strljustify_s.c 181 printf_va_631 precondition Unknown valid_read_string(param2) +unittests test_strljustify_s.c 181 test_strljustify_s precondition of printf_va_631 Unknown valid_read_string(param2) +unittests test_strljustify_s.c 197 test_strljustify_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strljustify_s.c 199 printf_va_633 precondition Unknown valid_read_string(param2) +unittests test_strljustify_s.c 199 test_strljustify_s precondition of printf_va_633 Unknown valid_read_string(param2) +unittests test_strljustify_s.c 215 test_strljustify_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strljustify_s.c 217 printf_va_635 precondition Unknown valid_read_string(param2) +unittests test_strljustify_s.c 217 test_strljustify_s precondition of printf_va_635 Unknown valid_read_string(param2) +unittests test_strncat_s.c 137 test_strncat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strncat_s.c 156 test_strncat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strncat_s.c 173 test_strncat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strncat_s.c 206 test_strncat_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strnterminate_s.c 55 test_strnterminate_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strnterminate_s.c 158 test_strnterminate_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strnterminate_s.c 171 test_strnterminate_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strpbrk_s.c 122 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 139 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 156 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 173 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 222 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 239 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 256 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strpbrk_s.c 273 test_strpbrk_s ptr_comparison Unknown \pointer_comparable((void *)first, (void *)std_first) +unittests test_strprefix_s.c 136 test_strprefix_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strprefix_s.c 149 test_strprefix_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strremovews_s.c 102 printf_va_716 precondition Unknown valid_read_string(param3) +unittests test_strremovews_s.c 102 test_strremovews_s precondition of printf_va_716 Unknown valid_read_string(param3) +unittests test_strremovews_s.c 170 test_strremovews_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strremovews_s.c 172 printf_va_724 precondition Unknown valid_read_string(param2) +unittests test_strremovews_s.c 172 test_strremovews_s precondition of printf_va_724 Unknown valid_read_string(param2) +unittests test_strremovews_s.c 188 test_strremovews_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strremovews_s.c 190 printf_va_726 precondition Unknown valid_read_string(param2) +unittests test_strremovews_s.c 190 test_strremovews_s precondition of printf_va_726 Unknown valid_read_string(param2) +unittests test_strremovews_s.c 206 test_strremovews_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strremovews_s.c 208 printf_va_728 precondition Unknown valid_read_string(param2) +unittests test_strremovews_s.c 208 test_strremovews_s precondition of printf_va_728 Unknown valid_read_string(param2) +unittests test_strremovews_s.c 224 test_strremovews_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strremovews_s.c 226 printf_va_730 precondition Unknown valid_read_string(param2) +unittests test_strremovews_s.c 226 test_strremovews_s precondition of printf_va_730 Unknown valid_read_string(param2) +unittests test_strstr_s.c 210 printf_va_788 precondition Unknown valid_read_string(param3) +unittests test_strstr_s.c 210 test_strstr_s precondition of printf_va_788 Unknown valid_read_string(param3) +unittests test_strstr_s.c 229 printf_va_790 precondition Unknown valid_read_string(param3) +unittests test_strstr_s.c 229 test_strstr_s precondition of printf_va_790 Unknown valid_read_string(param3) +unittests test_strtok_s.c 78 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 84 printf_va_805 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 84 printf_va_805 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 84 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 84 test_strtok_s precondition of printf_va_805 Unknown valid_read_string(param2) +unittests test_strtok_s.c 84 test_strtok_s precondition of printf_va_805 Unknown valid_read_string(param3) +unittests test_strtok_s.c 92 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 98 printf_va_806 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 98 printf_va_806 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 98 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 98 test_strtok_s precondition of printf_va_806 Unknown valid_read_string(param2) +unittests test_strtok_s.c 98 test_strtok_s precondition of printf_va_806 Unknown valid_read_string(param3) +unittests test_strtok_s.c 103 printf_va_807 precondition Unknown valid_read_string(param0) +unittests test_strtok_s.c 103 printf_va_807 precondition Unknown valid_read_string(param1) +unittests test_strtok_s.c 103 test_strtok_s precondition of printf_va_807 Unknown valid_read_string(param0) +unittests test_strtok_s.c 103 test_strtok_s precondition of printf_va_807 Unknown valid_read_string(param1) +unittests test_strtok_s.c 110 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 116 printf_va_808 precondition Invalid or unreachable valid_read_string(param2) +unittests test_strtok_s.c 116 printf_va_808 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 116 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 116 test_strtok_s precondition of printf_va_808 Invalid or unreachable valid_read_string(param2) +unittests test_strtok_s.c 116 test_strtok_s precondition of printf_va_808 Unknown valid_read_string(param3) +unittests test_strtok_s.c 125 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 131 printf_va_809 precondition Invalid or unreachable valid_read_string(param2) +unittests test_strtok_s.c 131 printf_va_809 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 131 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 131 test_strtok_s precondition of printf_va_809 Invalid or unreachable valid_read_string(param2) +unittests test_strtok_s.c 131 test_strtok_s precondition of printf_va_809 Unknown valid_read_string(param3) +unittests test_strtok_s.c 135 test_strtok_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtok_s.c 136 printf_va_810 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 136 printf_va_810 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 136 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 136 test_strtok_s precondition of printf_va_810 Unknown valid_read_string(param2) +unittests test_strtok_s.c 136 test_strtok_s precondition of printf_va_810 Unknown valid_read_string(param3) +unittests test_strtok_s.c 145 test_strtok_s initialization Unknown \initialized(&p2str) +unittests test_strtok_s.c 147 printf_va_811 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 147 printf_va_811 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 147 test_strtok_s precondition of printf_va_811 Unknown valid_read_string(param2) +unittests test_strtok_s.c 147 test_strtok_s precondition of printf_va_811 Unknown valid_read_string(param3) +unittests test_strtok_s.c 159 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 165 test_strtok_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtok_s.c 166 printf_va_812 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 166 printf_va_812 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 166 test_strtok_s precondition of printf_va_812 Unknown valid_read_string(param2) +unittests test_strtok_s.c 166 test_strtok_s precondition of printf_va_812 Unknown valid_read_string(param3) +unittests test_strtok_s.c 175 test_strtok_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtok_s.c 182 test_strtok_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtok_s.c 183 printf_va_813 precondition Unknown valid_read_string(param2) +unittests test_strtok_s.c 183 printf_va_813 precondition Unknown valid_read_string(param3) +unittests test_strtok_s.c 183 test_strtok_s precondition of printf_va_813 Unknown valid_read_string(param2) +unittests test_strtok_s.c 183 test_strtok_s precondition of printf_va_813 Unknown valid_read_string(param3) +unittests test_strtolowercase_s.c 50 test_strtolowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtolowercase_s.c 58 test_strtolowercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtolowercase_s.c 59 printf_va_818 precondition Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 59 test_strtolowercase_s precondition of printf_va_818 Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 66 test_strtolowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtolowercase_s.c 74 test_strtolowercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtolowercase_s.c 75 printf_va_820 precondition Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 75 test_strtolowercase_s precondition of printf_va_820 Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 89 test_strtolowercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtolowercase_s.c 90 printf_va_822 precondition Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 90 test_strtolowercase_s precondition of printf_va_822 Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 97 test_strtolowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtolowercase_s.c 105 test_strtolowercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtolowercase_s.c 106 printf_va_824 precondition Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 106 test_strtolowercase_s precondition of printf_va_824 Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 113 test_strtolowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtolowercase_s.c 121 test_strtolowercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtolowercase_s.c 122 printf_va_826 precondition Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 122 test_strtolowercase_s precondition of printf_va_826 Unknown valid_read_string(param2) +unittests test_strtolowercase_s.c 129 test_strtolowercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtouppercase_s.c 66 test_strtouppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtouppercase_s.c 76 test_strtouppercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtouppercase_s.c 77 printf_va_833 precondition Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 77 test_strtouppercase_s precondition of printf_va_833 Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 84 test_strtouppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtouppercase_s.c 94 test_strtouppercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtouppercase_s.c 95 printf_va_835 precondition Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 95 test_strtouppercase_s precondition of printf_va_835 Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 102 test_strtouppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtouppercase_s.c 112 test_strtouppercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtouppercase_s.c 113 printf_va_837 precondition Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 113 test_strtouppercase_s precondition of printf_va_837 Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 120 test_strtouppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strtouppercase_s.c 130 test_strtouppercase_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strtouppercase_s.c 131 printf_va_839 precondition Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 131 test_strtouppercase_s precondition of printf_va_839 Unknown valid_read_string(param2) +unittests test_strtouppercase_s.c 138 test_strtouppercase_s precondition of strlen Unknown valid_string_s: valid_read_string(s) +unittests test_strzero_s.c 104 test_strzero_s initialization Unknown \initialized(&str1_17[i]) +unittests test_strzero_s.c 121 test_strzero_s precondition of strcmp Unknown valid_string_s1: valid_read_string(s1) +unittests test_strzero_s.c 122 printf_va_853 precondition Unknown valid_read_string(param2) +unittests test_strzero_s.c 122 test_strzero_s precondition of printf_va_853 Unknown valid_read_string(param2) +unittests test_wcscpy_s.c 284 printf_va_1003 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 284 printf_va_1003 precondition Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 284 test_wcscpy_s precondition of printf_va_1003 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 284 test_wcscpy_s precondition of printf_va_1003 Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 305 printf_va_1006 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 305 printf_va_1006 precondition Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 305 test_wcscpy_s precondition of printf_va_1006 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 305 test_wcscpy_s precondition of printf_va_1006 Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 330 printf_va_1010 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 330 printf_va_1010 precondition Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 330 test_wcscpy_s precondition of printf_va_1010 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 330 test_wcscpy_s precondition of printf_va_1010 Unknown valid_read_wstring(param3) +unittests test_wcscpy_s.c 350 printf_va_1013 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 350 test_wcscpy_s precondition of printf_va_1013 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 388 printf_va_1019 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 388 test_wcscpy_s precondition of printf_va_1019 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 409 printf_va_1022 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 409 test_wcscpy_s precondition of printf_va_1022 Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 430 printf_va_1025 precondition Unknown valid_read_wstring(param2) +unittests test_wcscpy_s.c 430 test_wcscpy_s precondition of printf_va_1025 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 270 printf_va_1115 precondition Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 270 test_wcsncpy_s precondition of printf_va_1115 Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 296 printf_va_1119 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 296 printf_va_1119 precondition Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 296 test_wcsncpy_s precondition of printf_va_1119 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 296 test_wcsncpy_s precondition of printf_va_1119 Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 374 printf_va_1129 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 374 test_wcsncpy_s precondition of printf_va_1129 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 400 printf_va_1133 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 400 printf_va_1133 precondition Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 400 test_wcsncpy_s precondition of printf_va_1133 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 400 test_wcsncpy_s precondition of printf_va_1133 Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 454 printf_va_1140 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 454 printf_va_1140 precondition Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 454 test_wcsncpy_s precondition of printf_va_1140 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 454 test_wcsncpy_s precondition of printf_va_1140 Unknown valid_read_wstring(param3) +unittests test_wcsncpy_s.c 476 printf_va_1143 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 476 test_wcsncpy_s precondition of printf_va_1143 Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 498 printf_va_1146 precondition Unknown valid_read_wstring(param2) +unittests test_wcsncpy_s.c 498 test_wcsncpy_s precondition of printf_va_1146 Unknown valid_read_wstring(param2) +unittests test_wmemcmp_s.c 224 test_wmemcmp_s precondition of memcmp Unknown initialization: s1: \initialized((char *)s1 + (0 .. n - 1)) +unittests test_wmemcmp_s.c 224 test_wmemcmp_s precondition of memcmp Unknown initialization: s2: \initialized((char *)s2 + (0 .. n - 1)) diff --git a/safestringlib/.frama-c/intelsafestringlib.eva/metrics.log b/safestringlib/.frama-c/intelsafestringlib.eva/metrics.log new file mode 100644 index 0000000000000000000000000000000000000000..7f8b49104cab2f892e0298eb6a5bdfeaf1426c5b --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.eva/metrics.log @@ -0,0 +1,164 @@ +[metrics] Eva coverage statistics +======================= +Syntactically reachable functions = 154 (out of 246) +Semantically reached functions = 154 +Coverage estimation = 100.0% +[metrics] References to non-analyzed functions +------------------------------------ +[metrics] Statements analyzed by Eva +-------------------------- +12951 stmts in analyzed functions, 11922 stmts analyzed (92.1%) +check_integer_format: 5 stmts out of 5 (100.0%) +handle_error_1: 3 stmts out of 3 (100.0%) +handle_error_2: 3 stmts out of 3 (100.0%) +handle_error_28: 3 stmts out of 3 (100.0%) +handle_error_29: 3 stmts out of 3 (100.0%) +handle_error_5: 3 stmts out of 3 (100.0%) +handle_error_8: 3 stmts out of 3 (100.0%) +handle_wc_error_41: 3 stmts out of 3 (100.0%) +handle_wc_error_42: 3 stmts out of 3 (100.0%) +handle_wc_error_43: 3 stmts out of 3 (100.0%) +handle_wc_error_44: 3 stmts out of 3 (100.0%) +handle_wc_error_45: 3 stmts out of 3 (100.0%) +ignore_handler_s: 1 stmts out of 1 (100.0%) +mem_prim_move: 93 stmts out of 93 (100.0%) +mem_prim_set: 159 stmts out of 159 (100.0%) +mem_prim_set16: 134 stmts out of 134 (100.0%) +mem_prim_set32: 134 stmts out of 134 (100.0%) +memcpy16_s: 49 stmts out of 49 (100.0%) +memcpy32_s: 49 stmts out of 49 (100.0%) +memcpy_s: 51 stmts out of 51 (100.0%) +memmove16_s: 38 stmts out of 38 (100.0%) +memmove32_s: 38 stmts out of 38 (100.0%) +memmove_s: 38 stmts out of 38 (100.0%) +memzero16_s: 18 stmts out of 18 (100.0%) +memzero32_s: 18 stmts out of 18 (100.0%) +memzero_s: 18 stmts out of 18 (100.0%) +snprintf_s_si: 30 stmts out of 30 (100.0%) +stpcpy_s: 89 stmts out of 89 (100.0%) +strcasecmp_s: 50 stmts out of 50 (100.0%) +strcasestr_s: 80 stmts out of 80 (100.0%) +strcmp_s: 42 stmts out of 42 (100.0%) +strcmpfld_s: 38 stmts out of 38 (100.0%) +strcpyfldin_s: 119 stmts out of 119 (100.0%) +strcpyfldout_s: 121 stmts out of 121 (100.0%) +strcspn_s: 61 stmts out of 61 (100.0%) +strfirstchar_s: 36 stmts out of 36 (100.0%) +strfirstdiff_s: 45 stmts out of 45 (100.0%) +strfirstsame_s: 46 stmts out of 46 (100.0%) +strisalphanumeric_s: 47 stmts out of 47 (100.0%) +strisascii_s: 29 stmts out of 29 (100.0%) +strisdigit_s: 34 stmts out of 34 (100.0%) +strishex_s: 47 stmts out of 47 (100.0%) +strislowercase_s: 36 stmts out of 36 (100.0%) +strismixedcase_s: 40 stmts out of 40 (100.0%) +strispassword_s: 98 stmts out of 98 (100.0%) +strisuppercase_s: 34 stmts out of 34 (100.0%) +strlastchar_s: 39 stmts out of 39 (100.0%) +strlastdiff_s: 50 stmts out of 50 (100.0%) +strlastsame_s: 50 stmts out of 50 (100.0%) +strljustify_s: 69 stmts out of 69 (100.0%) +strncpy_s: 84 stmts out of 84 (100.0%) +strnlen_s: 26 stmts out of 26 (100.0%) +strnterminate_s: 27 stmts out of 27 (100.0%) +strprefix_s: 39 stmts out of 39 (100.0%) +strremovews_s: 78 stmts out of 78 (100.0%) +strspn_s: 63 stmts out of 63 (100.0%) +strstr_s: 77 stmts out of 77 (100.0%) +strtolowercase_s: 28 stmts out of 28 (100.0%) +strtouppercase_s: 28 stmts out of 28 (100.0%) +strzero_s: 24 stmts out of 24 (100.0%) +test_memcmp16_s: 101 stmts out of 101 (100.0%) +test_memcmp32_s: 99 stmts out of 99 (100.0%) +test_memcmp_s: 60 stmts out of 60 (100.0%) +test_memcpy_s: 259 stmts out of 259 (100.0%) +test_strcat_s: 97 stmts out of 97 (100.0%) +test_strcmpfld_s: 122 stmts out of 122 (100.0%) +test_strcpy_s: 63 stmts out of 63 (100.0%) +test_strcpyfld_s: 107 stmts out of 107 (100.0%) +test_strcpyfldin_s: 125 stmts out of 125 (100.0%) +test_strcpyfldout_s: 125 stmts out of 125 (100.0%) +test_strncat_s: 59 stmts out of 59 (100.0%) +test_strncpy_s: 99 stmts out of 99 (100.0%) +wcpcpy_s: 91 stmts out of 91 (100.0%) +wcscat_s: 89 stmts out of 89 (100.0%) +wcscpy_s: 80 stmts out of 80 (100.0%) +wcsncat_s: 106 stmts out of 106 (100.0%) +wcsncpy_s: 84 stmts out of 84 (100.0%) +wmemcpy_s: 51 stmts out of 51 (100.0%) +wmemmove_s: 38 stmts out of 38 (100.0%) +wmemset_s: 18 stmts out of 18 (100.0%) +test_memmove_s: 192 stmts out of 194 (99.0%) +test_memcpy16_s: 221 stmts out of 224 (98.7%) +test_memcpy32_s: 221 stmts out of 224 (98.7%) +test_memmove16_s: 177 stmts out of 180 (98.3%) +test_memmove32_s: 177 stmts out of 180 (98.3%) +main: 93 stmts out of 95 (97.9%) +test_memset_s: 100 stmts out of 103 (97.1%) +test_memzero_s: 77 stmts out of 80 (96.2%) +strcat_s: 85 stmts out of 89 (95.5%) +test_memset32_s: 105 stmts out of 110 (95.5%) +test_memset16_s: 98 stmts out of 103 (95.1%) +test_stpncpy_s: 308 stmts out of 324 (95.1%) +test_memzero16_s: 76 stmts out of 80 (95.0%) +test_memzero32_s: 76 stmts out of 80 (95.0%) +test_wmemcpy_s: 302 stmts out of 320 (94.4%) +test_wcscpy_s: 142 stmts out of 151 (94.0%) +strcpy_s: 63 stmts out of 67 (94.0%) +test_wmemmove_s: 330 stmts out of 351 (94.0%) +test_strnterminate_s: 77 stmts out of 82 (93.9%) +memcmp_s: 57 stmts out of 61 (93.4%) +test_strljustify_s: 99 stmts out of 106 (93.4%) +strpbrk_s: 55 stmts out of 59 (93.2%) +test_wcsnlen_s: 55 stmts out of 59 (93.2%) +test_strtok_s: 63 stmts out of 68 (92.6%) +test_strisalphanumeric_s: 48 stmts out of 52 (92.3%) +strtok_s: 94 stmts out of 102 (92.2%) +test_strremovews_s: 94 stmts out of 102 (92.2%) +test_wcsncpy_s: 158 stmts out of 172 (91.9%) +memcmp16_s: 54 stmts out of 59 (91.5%) +test_wmemcmp_s: 235 stmts out of 257 (91.4%) +test_strtolowercase_s: 53 stmts out of 58 (91.4%) +test_strisascii_s: 42 stmts out of 46 (91.3%) +memcmp32_s: 52 stmts out of 57 (91.2%) +wmemcmp_s: 52 stmts out of 57 (91.2%) +test_strtouppercase_s: 50 stmts out of 55 (90.9%) +test_strisdigit_s: 39 stmts out of 43 (90.7%) +test_strismixed_s: 39 stmts out of 43 (90.7%) +test_strisuppercase_s: 39 stmts out of 43 (90.7%) +test_strishex_s: 47 stmts out of 52 (90.4%) +test_strprefix_s: 54 stmts out of 60 (90.0%) +test_wmemset_s: 132 stmts out of 147 (89.8%) +test_strcasestr_s: 164 stmts out of 183 (89.6%) +test_strislowercase_s: 34 stmts out of 38 (89.5%) +test_strispassword_s: 42 stmts out of 47 (89.4%) +strncat_s: 94 stmts out of 106 (88.7%) +test_strpbrk_s: 99 stmts out of 113 (87.6%) +stpncpy_s: 106 stmts out of 121 (87.6%) +test_strfirstsame_s: 82 stmts out of 94 (87.2%) +test_stpcpy_s: 185 stmts out of 213 (86.9%) +test_strstr_s: 109 stmts out of 126 (86.5%) +test_strfirstdiff_s: 75 stmts out of 87 (86.2%) +test_strlastsame_s: 81 stmts out of 94 (86.2%) +wcsnlen_s: 22 stmts out of 26 (84.6%) +test_strlastchar_s: 47 stmts out of 56 (83.9%) +test_wcsncat_s: 173 stmts out of 207 (83.6%) +test_strlastdiff_s: 61 stmts out of 73 (83.6%) +test_strcspn_s: 121 stmts out of 145 (83.4%) +test_wcscat_s: 158 stmts out of 190 (83.2%) +test_strfirstchar_s: 42 stmts out of 51 (82.4%) +test_strzero_s: 55 stmts out of 67 (82.1%) +test_strcmp_s: 74 stmts out of 91 (81.3%) +test_strspn_s: 102 stmts out of 126 (81.0%) +test_strcasecmp_s: 74 stmts out of 93 (79.6%) +test_strnlen_s: 36 stmts out of 46 (78.3%) +memset16_s: 14 stmts out of 18 (77.8%) +memset32_s: 14 stmts out of 18 (77.8%) +memset_s: 14 stmts out of 18 (77.8%) +strcpyfld_s: 91 stmts out of 117 (77.8%) +invoke_safe_mem_constraint_handler: 3 stmts out of 4 (75.0%) +invoke_safe_str_constraint_handler: 3 stmts out of 4 (75.0%) +test_wcpcpy_s: 175 stmts out of 238 (73.5%) +mem_prim_move16: 222 stmts out of 332 (66.9%) +mem_prim_move32: 222 stmts out of 332 (66.9%) +parse_format: 44 stmts out of 129 (34.1%) diff --git a/safestringlib/.frama-c/intelsafestringlib.eva/nonterm.log b/safestringlib/.frama-c/intelsafestringlib.eva/nonterm.log new file mode 100644 index 0000000000000000000000000000000000000000..6ceb3633f9abfe1e3cd03747d064d4dfa4f40e03 --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.eva/nonterm.log @@ -0,0 +1,142 @@ +safeclib/mem_primitives_lib.c:399:[nonterm] warning: non-terminating statement +stack 1: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:158 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 2: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:170 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 3: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:203 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 4: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:228 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 5: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:332 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 6: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:95 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +stack 7: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:107 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/mem_primitives_lib.c:442:[nonterm] warning: non-terminating statement +stack 1: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:158 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 2: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:170 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 3: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:203 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 4: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:228 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 5: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:332 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 6: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:95 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +stack 7: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:107 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/mem_primitives_lib.c:452:[nonterm] warning: non-terminating loop +stack 1: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:158 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 2: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:170 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 3: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:203 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 4: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:228 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 5: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:332 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 6: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:95 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +stack 7: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:107 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/mem_primitives_lib.c:456:[nonterm] warning: non-terminating statement +stack 1: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:158 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 2: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:170 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +stack 3: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:203 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 4: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:228 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 5: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:332 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 6: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:95 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +stack 7: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:107 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/strncat_s.c:180:[nonterm] warning: non-terminating statement +stack: strncat_s :: unittests/test_strncat_s.c:131 <- + test_strncat_s :: unittests/Safe_String_UnitTestMain.c:141 <- + main +safeclib/strncat_s.c:236:[nonterm] warning: non-terminating statement +stack: strncat_s :: unittests/test_strncat_s.c:131 <- + test_strncat_s :: unittests/Safe_String_UnitTestMain.c:141 <- + main +safeclib/wcsncpy_s.c:175:[nonterm] warning: non-terminating statement +stack 1: wcsncpy_s :: unittests/test_wcsncpy_s.c:309 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 2: wcsncpy_s :: unittests/test_wcsncpy_s.c:413 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/wcsncpy_s.c:213:[nonterm] warning: non-terminating statement +stack 1: wcsncpy_s :: unittests/test_wcsncpy_s.c:309 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +stack 2: wcsncpy_s :: unittests/test_wcsncpy_s.c:413 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_strtok_s.c:116:[nonterm] warning: non-terminating function call +stack: test_strtok_s :: unittests/Safe_String_UnitTestMain.c:150 <- main +unittests/test_strtok_s.c:131:[nonterm] warning: non-terminating function call +stack: test_strtok_s :: unittests/Safe_String_UnitTestMain.c:150 <- main diff --git a/safestringlib/.frama-c/intelsafestringlib.eva/warnings.log b/safestringlib/.frama-c/intelsafestringlib.eva/warnings.log new file mode 100644 index 0000000000000000000000000000000000000000..8a4d6a7dcfde0eb4777979fc4fbbf7c8f4a9e2bd --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.eva/warnings.log @@ -0,0 +1,1433 @@ +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:76 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:76 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:209 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:209 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:270 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:270 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:270 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:290 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memcpy_s.c:159 <- + memcpy_s :: unittests/test_memcpy_s.c:290 <- + test_memcpy_s :: unittests/Safe_String_UnitTestMain.c:96 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memmove_s.c:145 <- + memmove_s :: unittests/test_memmove_s.c:77 <- + test_memmove_s :: unittests/Safe_String_UnitTestMain.c:99 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memmove_s.c:145 <- + memmove_s :: unittests/test_memmove_s.c:77 <- + test_memmove_s :: unittests/Safe_String_UnitTestMain.c:99 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memmove_s.c:145 <- + memmove_s :: unittests/test_memmove_s.c:159 <- + test_memmove_s :: unittests/Safe_String_UnitTestMain.c:99 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/memmove_s.c:145 <- + memmove_s :: unittests/test_memmove_s.c:159 <- + test_memmove_s :: unittests/Safe_String_UnitTestMain.c:99 <- + main +unittests/test_strcasestr_s.c:138:[eva:garbled-mix] warning: The specification of function printf_va_264 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:138:[eva:garbled-mix] warning: The specification of function printf_va_264 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:139:[eva:garbled-mix] warning: The specification of function printf_va_265 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:161:[eva:garbled-mix] warning: The specification of function printf_va_268 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:163:[eva:garbled-mix] warning: The specification of function printf_va_269 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:164:[eva:garbled-mix] warning: The specification of function printf_va_270 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:165:[eva:garbled-mix] warning: The specification of function printf_va_271 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:165:[eva:garbled-mix] warning: The specification of function printf_va_271 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:166:[eva:garbled-mix] warning: The specification of function printf_va_272 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:189:[eva:garbled-mix] warning: The specification of function printf_va_275 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:191:[eva:garbled-mix] warning: The specification of function printf_va_276 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:192:[eva:garbled-mix] warning: The specification of function printf_va_277 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:193:[eva:garbled-mix] warning: The specification of function printf_va_278 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:193:[eva:garbled-mix] warning: The specification of function printf_va_278 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:194:[eva:garbled-mix] warning: The specification of function printf_va_279 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:205:[eva:garbled-mix] warning: The specification of function printf_va_280 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:210:[eva:garbled-mix] warning: The specification of function printf_va_281 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:222:[eva:garbled-mix] warning: The specification of function printf_va_282 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:227:[eva:garbled-mix] warning: The specification of function printf_va_283 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:239:[eva:garbled-mix] warning: The specification of function printf_va_284 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:244:[eva:garbled-mix] warning: The specification of function printf_va_285 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:259:[eva:garbled-mix] warning: The specification of function printf_va_286 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:264:[eva:garbled-mix] warning: The specification of function printf_va_287 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:271:[eva:garbled-mix] warning: The specification of function printf_va_288 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:273:[eva:garbled-mix] warning: The specification of function printf_va_289 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:274:[eva:garbled-mix] warning: The specification of function printf_va_290 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:275:[eva:garbled-mix] warning: The specification of function printf_va_291 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:275:[eva:garbled-mix] warning: The specification of function printf_va_291 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:276:[eva:garbled-mix] warning: The specification of function printf_va_292 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:290:[eva:garbled-mix] warning: The specification of function printf_va_293 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:295:[eva:garbled-mix] warning: The specification of function printf_va_294 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:302:[eva:garbled-mix] warning: The specification of function printf_va_295 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:304:[eva:garbled-mix] warning: The specification of function printf_va_296 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:305:[eva:garbled-mix] warning: The specification of function printf_va_297 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:306:[eva:garbled-mix] warning: The specification of function printf_va_298 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:307:[eva:garbled-mix] warning: The specification of function printf_va_299 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:317:[eva:garbled-mix] warning: The specification of function printf_va_300 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:322:[eva:garbled-mix] warning: The specification of function printf_va_301 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:333:[eva:garbled-mix] warning: The specification of function printf_va_302 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:338:[eva:garbled-mix] warning: The specification of function printf_va_303 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:349:[eva:garbled-mix] warning: The specification of function printf_va_304 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:354:[eva:garbled-mix] warning: The specification of function printf_va_305 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:365:[eva:garbled-mix] warning: The specification of function printf_va_306 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:370:[eva:garbled-mix] warning: The specification of function printf_va_307 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:382:[eva:garbled-mix] warning: The specification of function printf_va_308 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:387:[eva:garbled-mix] warning: The specification of function printf_va_309 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:398:[eva:garbled-mix] warning: The specification of function printf_va_310 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:403:[eva:garbled-mix] warning: The specification of function printf_va_311 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:415:[eva:garbled-mix] warning: The specification of function printf_va_312 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:420:[eva:garbled-mix] warning: The specification of function printf_va_313 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strcasestr_s.c:427:[eva:garbled-mix] warning: The specification of function printf_va_314 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/Safe_String_UnitTestMain.c:114:[eva:locals-escaping] warning: locals {str1_17} escaping the scope of test_strcasestr_s through S___fc_stdout +unittests/test_strfirstchar_s.c:90:[eva:garbled-mix] warning: The specification of function printf_va_401 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:95:[eva:garbled-mix] warning: The specification of function printf_va_402 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:96:[eva:garbled-mix] warning: The specification of function printf_va_402 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:105:[eva:garbled-mix] warning: The specification of function printf_va_403 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:110:[eva:garbled-mix] warning: The specification of function printf_va_404 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:111:[eva:garbled-mix] warning: The specification of function printf_va_404 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:121:[eva:garbled-mix] warning: The specification of function printf_va_405 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:126:[eva:garbled-mix] warning: The specification of function printf_va_406 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:127:[eva:garbled-mix] warning: The specification of function printf_va_406 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:136:[eva:garbled-mix] warning: The specification of function printf_va_407 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:141:[eva:garbled-mix] warning: The specification of function printf_va_408 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strfirstchar_s.c:142:[eva:garbled-mix] warning: The specification of function printf_va_408 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/Safe_String_UnitTestMain.c:124:[eva:locals-escaping] warning: locals {str1_17} escaping the scope of test_strfirstchar_s through S___fc_stdout +unittests/test_strlastchar_s.c:90:[eva:garbled-mix] warning: The specification of function printf_va_552 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:95:[eva:garbled-mix] warning: The specification of function printf_va_553 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:96:[eva:garbled-mix] warning: The specification of function printf_va_553 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:105:[eva:garbled-mix] warning: The specification of function printf_va_554 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:106:[eva:garbled-mix] warning: The specification of function printf_va_554 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:110:[eva:garbled-mix] warning: The specification of function printf_va_555 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:111:[eva:garbled-mix] warning: The specification of function printf_va_555 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:120:[eva:garbled-mix] warning: The specification of function printf_va_556 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:125:[eva:garbled-mix] warning: The specification of function printf_va_557 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:126:[eva:garbled-mix] warning: The specification of function printf_va_557 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:135:[eva:garbled-mix] warning: The specification of function printf_va_558 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:140:[eva:garbled-mix] warning: The specification of function printf_va_559 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:141:[eva:garbled-mix] warning: The specification of function printf_va_559 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:150:[eva:garbled-mix] warning: The specification of function printf_va_560 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:155:[eva:garbled-mix] warning: The specification of function printf_va_561 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strlastchar_s.c:156:[eva:garbled-mix] warning: The specification of function printf_va_561 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/Safe_String_UnitTestMain.c:136:[eva:locals-escaping] warning: locals {str1_17} escaping the scope of test_strlastchar_s through S___fc_stdout +safeclib/strncat_s.c:180:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: strncat_s :: unittests/test_strncat_s.c:131 <- + test_strncat_s :: unittests/Safe_String_UnitTestMain.c:141 <- + main +safeclib/strncat_s.c:236:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: strncat_s :: unittests/test_strncat_s.c:131 <- + test_strncat_s :: unittests/Safe_String_UnitTestMain.c:141 <- + main +unittests/test_strpbrk_s.c:121:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:123:[eva:garbled-mix] warning: The specification of function printf_va_676 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:134:[eva:garbled-mix] warning: The specification of function printf_va_677 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:135:[eva:garbled-mix] warning: The specification of function printf_va_677 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:138:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:138:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:140:[eva:garbled-mix] warning: The specification of function printf_va_678 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:141:[eva:garbled-mix] warning: The specification of function printf_va_678 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:151:[eva:garbled-mix] warning: The specification of function printf_va_679 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:152:[eva:garbled-mix] warning: The specification of function printf_va_679 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:155:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:155:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:157:[eva:garbled-mix] warning: The specification of function printf_va_680 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:158:[eva:garbled-mix] warning: The specification of function printf_va_680 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:168:[eva:garbled-mix] warning: The specification of function printf_va_681 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:169:[eva:garbled-mix] warning: The specification of function printf_va_681 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:172:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:172:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:174:[eva:garbled-mix] warning: The specification of function printf_va_682 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:175:[eva:garbled-mix] warning: The specification of function printf_va_682 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:185:[eva:garbled-mix] warning: The specification of function printf_va_683 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:190:[eva:garbled-mix] warning: The specification of function printf_va_684 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:191:[eva:garbled-mix] warning: The specification of function printf_va_684 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:201:[eva:garbled-mix] warning: The specification of function printf_va_685 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:206:[eva:garbled-mix] warning: The specification of function printf_va_686 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:207:[eva:garbled-mix] warning: The specification of function printf_va_686 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:217:[eva:garbled-mix] warning: The specification of function printf_va_687 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:221:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:221:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:223:[eva:garbled-mix] warning: The specification of function printf_va_688 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:224:[eva:garbled-mix] warning: The specification of function printf_va_688 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:234:[eva:garbled-mix] warning: The specification of function printf_va_689 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:238:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:238:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:240:[eva:garbled-mix] warning: The specification of function printf_va_690 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:241:[eva:garbled-mix] warning: The specification of function printf_va_690 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:251:[eva:garbled-mix] warning: The specification of function printf_va_691 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:255:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:255:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:257:[eva:garbled-mix] warning: The specification of function printf_va_692 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:258:[eva:garbled-mix] warning: The specification of function printf_va_692 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:268:[eva:garbled-mix] warning: The specification of function printf_va_693 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:272:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:272:[eva:garbled-mix] warning: The specification of function strpbrk has generated a garbled mix for assigns clause assigns clause \result. +unittests/test_strpbrk_s.c:274:[eva:garbled-mix] warning: The specification of function printf_va_694 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strpbrk_s.c:275:[eva:garbled-mix] warning: The specification of function printf_va_694 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:73:[eva:garbled-mix] warning: The specification of function printf_va_700 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:84:[eva:garbled-mix] warning: The specification of function printf_va_701 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:95:[eva:garbled-mix] warning: The specification of function printf_va_702 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:106:[eva:garbled-mix] warning: The specification of function printf_va_703 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:117:[eva:garbled-mix] warning: The specification of function printf_va_704 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:140:[eva:garbled-mix] warning: The specification of function printf_va_706 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strprefix_s.c:153:[eva:garbled-mix] warning: The specification of function printf_va_707 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:73:[eva:garbled-mix] warning: The specification of function printf_va_713 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:85:[eva:garbled-mix] warning: The specification of function printf_va_714 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:86:[eva:garbled-mix] warning: The specification of function printf_va_714 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:90:[eva:garbled-mix] warning: The specification of function printf_va_715 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:91:[eva:garbled-mix] warning: The specification of function printf_va_715 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:102:[eva:garbled-mix] warning: The specification of function printf_va_716 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:103:[eva:garbled-mix] warning: The specification of function printf_va_716 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:137:[eva:garbled-mix] warning: The specification of function printf_va_720 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:138:[eva:garbled-mix] warning: The specification of function printf_va_720 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:149:[eva:garbled-mix] warning: The specification of function printf_va_721 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:154:[eva:garbled-mix] warning: The specification of function printf_va_722 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:155:[eva:garbled-mix] warning: The specification of function printf_va_722 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:166:[eva:garbled-mix] warning: The specification of function printf_va_723 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:172:[eva:garbled-mix] warning: The specification of function printf_va_724 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:173:[eva:garbled-mix] warning: The specification of function printf_va_724 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:184:[eva:garbled-mix] warning: The specification of function printf_va_725 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:190:[eva:garbled-mix] warning: The specification of function printf_va_726 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:191:[eva:garbled-mix] warning: The specification of function printf_va_726 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:202:[eva:garbled-mix] warning: The specification of function printf_va_727 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:208:[eva:garbled-mix] warning: The specification of function printf_va_728 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:209:[eva:garbled-mix] warning: The specification of function printf_va_728 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:220:[eva:garbled-mix] warning: The specification of function printf_va_729 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:226:[eva:garbled-mix] warning: The specification of function printf_va_730 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strremovews_s.c:227:[eva:garbled-mix] warning: The specification of function printf_va_730 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:138:[eva:garbled-mix] warning: The specification of function printf_va_747 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:154:[eva:garbled-mix] warning: The specification of function printf_va_749 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:155:[eva:garbled-mix] warning: The specification of function printf_va_749 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:170:[eva:garbled-mix] warning: The specification of function printf_va_751 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:171:[eva:garbled-mix] warning: The specification of function printf_va_751 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:187:[eva:garbled-mix] warning: The specification of function printf_va_753 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:188:[eva:garbled-mix] warning: The specification of function printf_va_753 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:204:[eva:garbled-mix] warning: The specification of function printf_va_755 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:205:[eva:garbled-mix] warning: The specification of function printf_va_755 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:222:[eva:garbled-mix] warning: The specification of function printf_va_757 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:223:[eva:garbled-mix] warning: The specification of function printf_va_757 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:239:[eva:garbled-mix] warning: The specification of function printf_va_759 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:240:[eva:garbled-mix] warning: The specification of function printf_va_759 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:256:[eva:garbled-mix] warning: The specification of function printf_va_761 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:257:[eva:garbled-mix] warning: The specification of function printf_va_761 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:273:[eva:garbled-mix] warning: The specification of function printf_va_763 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strspn_s.c:274:[eva:garbled-mix] warning: The specification of function printf_va_763 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:152:[eva:garbled-mix] warning: The specification of function printf_va_781 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:157:[eva:garbled-mix] warning: The specification of function printf_va_782 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:169:[eva:garbled-mix] warning: The specification of function printf_va_783 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:174:[eva:garbled-mix] warning: The specification of function printf_va_784 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:186:[eva:garbled-mix] warning: The specification of function printf_va_785 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:191:[eva:garbled-mix] warning: The specification of function printf_va_786 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:205:[eva:garbled-mix] warning: The specification of function printf_va_787 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:210:[eva:garbled-mix] warning: The specification of function printf_va_788 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:211:[eva:garbled-mix] warning: The specification of function printf_va_788 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:224:[eva:garbled-mix] warning: The specification of function printf_va_789 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:229:[eva:garbled-mix] warning: The specification of function printf_va_790 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:230:[eva:garbled-mix] warning: The specification of function printf_va_790 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:240:[eva:garbled-mix] warning: The specification of function printf_va_791 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:251:[eva:garbled-mix] warning: The specification of function printf_va_792 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:262:[eva:garbled-mix] warning: The specification of function printf_va_793 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:275:[eva:garbled-mix] warning: The specification of function printf_va_794 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:280:[eva:garbled-mix] warning: The specification of function printf_va_795 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:291:[eva:garbled-mix] warning: The specification of function printf_va_796 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:302:[eva:garbled-mix] warning: The specification of function printf_va_797 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:307:[eva:garbled-mix] warning: The specification of function printf_va_798 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strstr_s.c:314:[eva:garbled-mix] warning: The specification of function printf_va_799 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:84:[eva:garbled-mix] warning: The specification of function printf_va_805 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:98:[eva:garbled-mix] warning: The specification of function printf_va_806 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:99:[eva:garbled-mix] warning: The specification of function printf_va_806 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:103:[eva:garbled-mix] warning: The specification of function printf_va_807 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:136:[eva:garbled-mix] warning: The specification of function printf_va_810 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:137:[eva:garbled-mix] warning: The specification of function printf_va_810 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:147:[eva:garbled-mix] warning: The specification of function printf_va_811 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:148:[eva:garbled-mix] warning: The specification of function printf_va_811 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:166:[eva:garbled-mix] warning: The specification of function printf_va_812 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:167:[eva:garbled-mix] warning: The specification of function printf_va_812 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:183:[eva:garbled-mix] warning: The specification of function printf_va_813 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtok_s.c:184:[eva:garbled-mix] warning: The specification of function printf_va_813 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:54:[eva:garbled-mix] warning: The specification of function printf_va_817 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:59:[eva:garbled-mix] warning: The specification of function printf_va_818 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:60:[eva:garbled-mix] warning: The specification of function printf_va_818 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:70:[eva:garbled-mix] warning: The specification of function printf_va_819 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:75:[eva:garbled-mix] warning: The specification of function printf_va_820 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:76:[eva:garbled-mix] warning: The specification of function printf_va_820 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:90:[eva:garbled-mix] warning: The specification of function printf_va_822 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:91:[eva:garbled-mix] warning: The specification of function printf_va_822 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:101:[eva:garbled-mix] warning: The specification of function printf_va_823 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:106:[eva:garbled-mix] warning: The specification of function printf_va_824 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:107:[eva:garbled-mix] warning: The specification of function printf_va_824 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:117:[eva:garbled-mix] warning: The specification of function printf_va_825 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:122:[eva:garbled-mix] warning: The specification of function printf_va_826 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtolowercase_s.c:123:[eva:garbled-mix] warning: The specification of function printf_va_826 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:71:[eva:garbled-mix] warning: The specification of function printf_va_832 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:77:[eva:garbled-mix] warning: The specification of function printf_va_833 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:78:[eva:garbled-mix] warning: The specification of function printf_va_833 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:89:[eva:garbled-mix] warning: The specification of function printf_va_834 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:95:[eva:garbled-mix] warning: The specification of function printf_va_835 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:96:[eva:garbled-mix] warning: The specification of function printf_va_835 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:107:[eva:garbled-mix] warning: The specification of function printf_va_836 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:113:[eva:garbled-mix] warning: The specification of function printf_va_837 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:114:[eva:garbled-mix] warning: The specification of function printf_va_837 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:125:[eva:garbled-mix] warning: The specification of function printf_va_838 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:131:[eva:garbled-mix] warning: The specification of function printf_va_839 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strtouppercase_s.c:132:[eva:garbled-mix] warning: The specification of function printf_va_839 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_strzero_s.c:122:[eva:garbled-mix] warning: The specification of function printf_va_853 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:97:[eva:garbled-mix] warning: The specification of function printf_va_854 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:100:[eva:garbled-mix] warning: The specification of function printf_va_855 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:115:[eva:garbled-mix] warning: The specification of function printf_va_858 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:130:[eva:garbled-mix] warning: The specification of function printf_va_861 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:144:[eva:garbled-mix] warning: The specification of function printf_va_864 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:176:[eva:garbled-mix] warning: The specification of function printf_va_868 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:194:[eva:garbled-mix] warning: The specification of function printf_va_871 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:205:[eva:garbled-mix] warning: The specification of function printf_va_873 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:206:[eva:garbled-mix] warning: The specification of function printf_va_873 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:214:[eva:garbled-mix] warning: The specification of function printf_va_874 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:248:[eva:garbled-mix] warning: The specification of function printf_va_878 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:287:[eva:garbled-mix] warning: The specification of function printf_va_882 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:319:[eva:garbled-mix] warning: The specification of function printf_va_886 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:337:[eva:garbled-mix] warning: The specification of function printf_va_889 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:344:[eva:garbled-mix] warning: The specification of function printf_va_890 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:359:[eva:garbled-mix] warning: The specification of function printf_va_892 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:370:[eva:garbled-mix] warning: The specification of function printf_va_894 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:400:[eva:garbled-mix] warning: The specification of function printf_va_899 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:423:[eva:garbled-mix] warning: The specification of function printf_va_903 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:446:[eva:garbled-mix] warning: The specification of function printf_va_907 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:469:[eva:garbled-mix] warning: The specification of function printf_va_911 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcpcpy_s.c:493:[eva:garbled-mix] warning: The specification of function printf_va_915 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:54:[eva:garbled-mix] warning: The specification of function printf_va_919 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:57:[eva:garbled-mix] warning: The specification of function printf_va_920 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:67:[eva:garbled-mix] warning: The specification of function printf_va_922 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:77:[eva:garbled-mix] warning: The specification of function printf_va_924 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:87:[eva:garbled-mix] warning: The specification of function printf_va_926 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:98:[eva:garbled-mix] warning: The specification of function printf_va_928 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:115:[eva:garbled-mix] warning: The specification of function printf_va_931 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:133:[eva:garbled-mix] warning: The specification of function printf_va_934 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:151:[eva:garbled-mix] warning: The specification of function printf_va_937 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:169:[eva:garbled-mix] warning: The specification of function printf_va_940 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:192:[eva:garbled-mix] warning: The specification of function printf_va_943 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:210:[eva:garbled-mix] warning: The specification of function printf_va_946 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:228:[eva:garbled-mix] warning: The specification of function printf_va_949 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:241:[eva:garbled-mix] warning: The specification of function printf_va_951 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:248:[eva:garbled-mix] warning: The specification of function printf_va_952 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:266:[eva:garbled-mix] warning: The specification of function printf_va_955 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:279:[eva:garbled-mix] warning: The specification of function printf_va_957 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:285:[eva:garbled-mix] warning: The specification of function printf_va_958 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:298:[eva:garbled-mix] warning: The specification of function printf_va_960 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:304:[eva:garbled-mix] warning: The specification of function printf_va_961 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:317:[eva:garbled-mix] warning: The specification of function printf_va_963 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:330:[eva:garbled-mix] warning: The specification of function printf_va_965 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:337:[eva:garbled-mix] warning: The specification of function printf_va_966 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:355:[eva:garbled-mix] warning: The specification of function printf_va_969 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:368:[eva:garbled-mix] warning: The specification of function printf_va_971 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:374:[eva:garbled-mix] warning: The specification of function printf_va_972 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscat_s.c:394:[eva:garbled-mix] warning: The specification of function printf_va_975 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:96:[eva:garbled-mix] warning: The specification of function printf_va_978 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:99:[eva:garbled-mix] warning: The specification of function printf_va_979 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:109:[eva:garbled-mix] warning: The specification of function printf_va_981 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:119:[eva:garbled-mix] warning: The specification of function printf_va_983 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:129:[eva:garbled-mix] warning: The specification of function printf_va_985 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:131 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:131 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:156:[eva:garbled-mix] warning: The specification of function printf_va_988 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:162:[eva:garbled-mix] warning: The specification of function printf_va_989 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:168:[eva:garbled-mix] warning: The specification of function printf_va_990 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:174:[eva:garbled-mix] warning: The specification of function printf_va_991 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:183:[eva:garbled-mix] warning: The specification of function printf_va_992 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:185 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:185 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:189:[eva:garbled-mix] warning: The specification of function printf_va_993 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:202:[eva:garbled-mix] warning: The specification of function printf_va_994 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:212:[eva:garbled-mix] warning: The specification of function printf_va_995 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:214 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:214 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:219:[eva:garbled-mix] warning: The specification of function printf_va_996 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:232:[eva:garbled-mix] warning: The specification of function printf_va_997 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:242:[eva:garbled-mix] warning: The specification of function printf_va_998 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:244 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:244 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:270:[eva:garbled-mix] warning: The specification of function printf_va_1001 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:272 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:272 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:278:[eva:garbled-mix] warning: The specification of function printf_va_1002 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:284:[eva:garbled-mix] warning: The specification of function printf_va_1003 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:291:[eva:garbled-mix] warning: The specification of function printf_va_1004 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:294 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:294 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:299:[eva:garbled-mix] warning: The specification of function printf_va_1005 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:305:[eva:garbled-mix] warning: The specification of function printf_va_1006 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:311:[eva:garbled-mix] warning: The specification of function printf_va_1007 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:314 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:314 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:319:[eva:garbled-mix] warning: The specification of function printf_va_1008 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:325:[eva:garbled-mix] warning: The specification of function printf_va_1009 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:330:[eva:garbled-mix] warning: The specification of function printf_va_1010 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:331:[eva:garbled-mix] warning: The specification of function printf_va_1010 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:337:[eva:garbled-mix] warning: The specification of function printf_va_1011 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:341 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:341 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:345:[eva:garbled-mix] warning: The specification of function printf_va_1012 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:350:[eva:garbled-mix] warning: The specification of function printf_va_1013 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:351:[eva:garbled-mix] warning: The specification of function printf_va_1013 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:356:[eva:garbled-mix] warning: The specification of function printf_va_1014 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:359 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:359 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:374:[eva:garbled-mix] warning: The specification of function printf_va_1017 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:377 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:377 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:377 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:378 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:378 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:382:[eva:garbled-mix] warning: The specification of function printf_va_1018 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:388:[eva:garbled-mix] warning: The specification of function printf_va_1019 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:389:[eva:garbled-mix] warning: The specification of function printf_va_1019 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:394:[eva:garbled-mix] warning: The specification of function printf_va_1020 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:396 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:396 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:397 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:397 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:397 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:403:[eva:garbled-mix] warning: The specification of function printf_va_1021 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:409:[eva:garbled-mix] warning: The specification of function printf_va_1022 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:416:[eva:garbled-mix] warning: The specification of function printf_va_1023 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:418 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:418 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:418 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:419 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcscpy_s.c:419 <- + test_wcscpy_s :: unittests/Safe_String_UnitTestMain.c:157 <- + main +unittests/test_wcscpy_s.c:425:[eva:garbled-mix] warning: The specification of function printf_va_1024 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:430:[eva:garbled-mix] warning: The specification of function printf_va_1025 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcscpy_s.c:431:[eva:garbled-mix] warning: The specification of function printf_va_1025 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:97:[eva:garbled-mix] warning: The specification of function printf_va_1026 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:100:[eva:garbled-mix] warning: The specification of function printf_va_1027 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:110:[eva:garbled-mix] warning: The specification of function printf_va_1029 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:120:[eva:garbled-mix] warning: The specification of function printf_va_1031 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:129:[eva:garbled-mix] warning: The specification of function printf_va_1033 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:139:[eva:garbled-mix] warning: The specification of function printf_va_1035 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:151:[eva:garbled-mix] warning: The specification of function printf_va_1037 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:168:[eva:garbled-mix] warning: The specification of function printf_va_1040 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:185:[eva:garbled-mix] warning: The specification of function printf_va_1043 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:203:[eva:garbled-mix] warning: The specification of function printf_va_1046 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:225:[eva:garbled-mix] warning: The specification of function printf_va_1049 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:231:[eva:garbled-mix] warning: The specification of function printf_va_1050 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:253:[eva:garbled-mix] warning: The specification of function printf_va_1053 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:260:[eva:garbled-mix] warning: The specification of function printf_va_1054 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:278:[eva:garbled-mix] warning: The specification of function printf_va_1057 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:296:[eva:garbled-mix] warning: The specification of function printf_va_1060 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:309:[eva:garbled-mix] warning: The specification of function printf_va_1062 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:316:[eva:garbled-mix] warning: The specification of function printf_va_1063 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:334:[eva:garbled-mix] warning: The specification of function printf_va_1066 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:347:[eva:garbled-mix] warning: The specification of function printf_va_1068 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:353:[eva:garbled-mix] warning: The specification of function printf_va_1069 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:366:[eva:garbled-mix] warning: The specification of function printf_va_1071 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:372:[eva:garbled-mix] warning: The specification of function printf_va_1072 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:390:[eva:garbled-mix] warning: The specification of function printf_va_1075 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:408:[eva:garbled-mix] warning: The specification of function printf_va_1078 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:425:[eva:garbled-mix] warning: The specification of function printf_va_1081 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:438:[eva:garbled-mix] warning: The specification of function printf_va_1083 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:444:[eva:garbled-mix] warning: The specification of function printf_va_1084 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:457:[eva:garbled-mix] warning: The specification of function printf_va_1086 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncat_s.c:463:[eva:garbled-mix] warning: The specification of function printf_va_1087 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:96:[eva:garbled-mix] warning: The specification of function printf_va_1090 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:99:[eva:garbled-mix] warning: The specification of function printf_va_1091 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:109:[eva:garbled-mix] warning: The specification of function printf_va_1093 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:119:[eva:garbled-mix] warning: The specification of function printf_va_1095 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:129:[eva:garbled-mix] warning: The specification of function printf_va_1097 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:131 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:131 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:155:[eva:garbled-mix] warning: The specification of function printf_va_1100 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:178:[eva:garbled-mix] warning: The specification of function printf_va_1103 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:201:[eva:garbled-mix] warning: The specification of function printf_va_1106 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:226:[eva:garbled-mix] warning: The specification of function printf_va_1109 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:232:[eva:garbled-mix] warning: The specification of function printf_va_1110 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:244:[eva:garbled-mix] warning: The specification of function printf_va_1111 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:252:[eva:garbled-mix] warning: The specification of function printf_va_1112 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:254 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:254 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:264:[eva:garbled-mix] warning: The specification of function printf_va_1114 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:270:[eva:garbled-mix] warning: The specification of function printf_va_1115 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:277:[eva:garbled-mix] warning: The specification of function printf_va_1116 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:280 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:280 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:285:[eva:garbled-mix] warning: The specification of function printf_va_1117 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:290:[eva:garbled-mix] warning: The specification of function printf_va_1118 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:296:[eva:garbled-mix] warning: The specification of function printf_va_1119 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:297:[eva:garbled-mix] warning: The specification of function printf_va_1119 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:303:[eva:garbled-mix] warning: The specification of function printf_va_1120 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:306 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:306 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/wcsncpy_s.c:175:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: wcsncpy_s :: unittests/test_wcsncpy_s.c:309 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/wcsncpy_s.c:213:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: wcsncpy_s :: unittests/test_wcsncpy_s.c:309 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:311:[eva:garbled-mix] warning: The specification of function printf_va_1121 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:323:[eva:garbled-mix] warning: The specification of function printf_va_1122 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:330:[eva:garbled-mix] warning: The specification of function printf_va_1123 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:336:[eva:garbled-mix] warning: The specification of function printf_va_1124 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:348:[eva:garbled-mix] warning: The specification of function printf_va_1125 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:356:[eva:garbled-mix] warning: The specification of function printf_va_1126 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:358 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:358 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:374:[eva:garbled-mix] warning: The specification of function printf_va_1129 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:381:[eva:garbled-mix] warning: The specification of function printf_va_1130 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:384 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:384 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:389:[eva:garbled-mix] warning: The specification of function printf_va_1131 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:394:[eva:garbled-mix] warning: The specification of function printf_va_1132 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:400:[eva:garbled-mix] warning: The specification of function printf_va_1133 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:401:[eva:garbled-mix] warning: The specification of function printf_va_1133 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:407:[eva:garbled-mix] warning: The specification of function printf_va_1134 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:410 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:410 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/wcsncpy_s.c:175:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: wcsncpy_s :: unittests/test_wcsncpy_s.c:413 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/wcsncpy_s.c:213:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: wcsncpy_s :: unittests/test_wcsncpy_s.c:413 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:415:[eva:garbled-mix] warning: The specification of function printf_va_1135 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:427:[eva:garbled-mix] warning: The specification of function printf_va_1136 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:435:[eva:garbled-mix] warning: The specification of function printf_va_1137 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:438 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:438 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:443:[eva:garbled-mix] warning: The specification of function printf_va_1138 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:449:[eva:garbled-mix] warning: The specification of function printf_va_1139 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:454:[eva:garbled-mix] warning: The specification of function printf_va_1140 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:455:[eva:garbled-mix] warning: The specification of function printf_va_1140 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:462:[eva:garbled-mix] warning: The specification of function printf_va_1141 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:465 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:465 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:465 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:466 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:466 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:470:[eva:garbled-mix] warning: The specification of function printf_va_1142 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:476:[eva:garbled-mix] warning: The specification of function printf_va_1143 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:477:[eva:garbled-mix] warning: The specification of function printf_va_1143 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:484:[eva:garbled-mix] warning: The specification of function printf_va_1144 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:486 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:486 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:486 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:487 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsncpy_s.c:487 <- + test_wcsncpy_s :: unittests/Safe_String_UnitTestMain.c:159 <- + main +unittests/test_wcsncpy_s.c:493:[eva:garbled-mix] warning: The specification of function printf_va_1145 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:498:[eva:garbled-mix] warning: The specification of function printf_va_1146 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsncpy_s.c:499:[eva:garbled-mix] warning: The specification of function printf_va_1146 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:70:[eva:garbled-mix] warning: The specification of function printf_va_1147 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:73:[eva:garbled-mix] warning: The specification of function printf_va_1148 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:83:[eva:garbled-mix] warning: The specification of function printf_va_1150 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:93:[eva:garbled-mix] warning: The specification of function printf_va_1152 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:99:[eva:garbled-mix] warning: The specification of function printf_va_1153 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:105:[eva:garbled-mix] warning: The specification of function printf_va_1154 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:111:[eva:garbled-mix] warning: The specification of function printf_va_1155 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:117:[eva:garbled-mix] warning: The specification of function printf_va_1156 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:130:[eva:garbled-mix] warning: The specification of function printf_va_1158 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wcsnlen_s.c:143:[eva:garbled-mix] warning: The specification of function printf_va_1160 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:442:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:145 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:145 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wcsnlen_s.c:145 <- + test_wcsnlen_s :: unittests/Safe_String_UnitTestMain.c:160 <- + main +unittests/test_wcsnlen_s.c:149:[eva:garbled-mix] warning: The specification of function printf_va_1161 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:77:[eva:garbled-mix] warning: The specification of function printf_va_1207 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:80:[eva:garbled-mix] warning: The specification of function printf_va_1208 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:91:[eva:garbled-mix] warning: The specification of function printf_va_1210 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:101:[eva:garbled-mix] warning: The specification of function printf_va_1212 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:111:[eva:garbled-mix] warning: The specification of function printf_va_1214 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:121:[eva:garbled-mix] warning: The specification of function printf_va_1216 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:131:[eva:garbled-mix] warning: The specification of function printf_va_1218 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:141:[eva:garbled-mix] warning: The specification of function printf_va_1220 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:151:[eva:garbled-mix] warning: The specification of function printf_va_1222 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:162:[eva:garbled-mix] warning: The specification of function printf_va_1224 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:180:[eva:garbled-mix] warning: The specification of function printf_va_1227 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:188:[eva:garbled-mix] warning: The specification of function printf_va_1228 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:203:[eva:garbled-mix] warning: The specification of function printf_va_1230 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:204:[eva:garbled-mix] warning: The specification of function printf_va_1230 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:209:[eva:garbled-mix] warning: The specification of function printf_va_1231 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:217:[eva:garbled-mix] warning: The specification of function printf_va_1232 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:232:[eva:garbled-mix] warning: The specification of function printf_va_1234 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:233:[eva:garbled-mix] warning: The specification of function printf_va_1234 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:238:[eva:garbled-mix] warning: The specification of function printf_va_1235 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:245:[eva:garbled-mix] warning: The specification of function printf_va_1236 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:261:[eva:garbled-mix] warning: The specification of function printf_va_1238 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:262:[eva:garbled-mix] warning: The specification of function printf_va_1238 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:267:[eva:garbled-mix] warning: The specification of function printf_va_1239 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:275:[eva:garbled-mix] warning: The specification of function printf_va_1240 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:290:[eva:garbled-mix] warning: The specification of function printf_va_1242 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:291:[eva:garbled-mix] warning: The specification of function printf_va_1242 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:296:[eva:garbled-mix] warning: The specification of function printf_va_1243 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:304:[eva:garbled-mix] warning: The specification of function printf_va_1244 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:309 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:309 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +unittests/test_wmemcpy_s.c:317:[eva:garbled-mix] warning: The specification of function printf_va_1246 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:332:[eva:garbled-mix] warning: The specification of function printf_va_1248 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:333:[eva:garbled-mix] warning: The specification of function printf_va_1248 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:338:[eva:garbled-mix] warning: The specification of function printf_va_1249 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:346:[eva:garbled-mix] warning: The specification of function printf_va_1250 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:361:[eva:garbled-mix] warning: The specification of function printf_va_1252 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:362:[eva:garbled-mix] warning: The specification of function printf_va_1252 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:370:[eva:garbled-mix] warning: The specification of function printf_va_1253 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:376 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:376 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +unittests/test_wmemcpy_s.c:378:[eva:garbled-mix] warning: The specification of function printf_va_1254 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:384:[eva:garbled-mix] warning: The specification of function printf_va_1255 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:385:[eva:garbled-mix] warning: The specification of function printf_va_1255 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:393:[eva:garbled-mix] warning: The specification of function printf_va_1256 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:398 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemcpy_s.c:154 <- + wmemcpy_s :: unittests/test_wmemcpy_s.c:398 <- + test_wmemcpy_s :: unittests/Safe_String_UnitTestMain.c:161 <- + main +unittests/test_wmemcpy_s.c:400:[eva:garbled-mix] warning: The specification of function printf_va_1257 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcpy_s.c:406:[eva:garbled-mix] warning: The specification of function printf_va_1258 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:86:[eva:garbled-mix] warning: The specification of function printf_va_1259 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:89:[eva:garbled-mix] warning: The specification of function printf_va_1260 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:100:[eva:garbled-mix] warning: The specification of function printf_va_1262 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:110:[eva:garbled-mix] warning: The specification of function printf_va_1264 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:120:[eva:garbled-mix] warning: The specification of function printf_va_1266 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:130:[eva:garbled-mix] warning: The specification of function printf_va_1268 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:140:[eva:garbled-mix] warning: The specification of function printf_va_1270 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:150:[eva:garbled-mix] warning: The specification of function printf_va_1272 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:160:[eva:garbled-mix] warning: The specification of function printf_va_1274 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:171:[eva:garbled-mix] warning: The specification of function printf_va_1276 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:189:[eva:garbled-mix] warning: The specification of function printf_va_1279 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:197:[eva:garbled-mix] warning: The specification of function printf_va_1280 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:212:[eva:garbled-mix] warning: The specification of function printf_va_1282 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:213:[eva:garbled-mix] warning: The specification of function printf_va_1282 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:218:[eva:garbled-mix] warning: The specification of function printf_va_1283 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:226:[eva:garbled-mix] warning: The specification of function printf_va_1284 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:241:[eva:garbled-mix] warning: The specification of function printf_va_1286 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:242:[eva:garbled-mix] warning: The specification of function printf_va_1286 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:247:[eva:garbled-mix] warning: The specification of function printf_va_1287 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:254:[eva:garbled-mix] warning: The specification of function printf_va_1288 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:260 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:260 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:270:[eva:garbled-mix] warning: The specification of function printf_va_1290 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:276:[eva:garbled-mix] warning: The specification of function printf_va_1291 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:284:[eva:garbled-mix] warning: The specification of function printf_va_1292 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:299:[eva:garbled-mix] warning: The specification of function printf_va_1294 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:309:[eva:garbled-mix] warning: The specification of function printf_va_1295 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:323:[eva:garbled-mix] warning: The specification of function printf_va_1297 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:324:[eva:garbled-mix] warning: The specification of function printf_va_1297 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:329:[eva:garbled-mix] warning: The specification of function printf_va_1298 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:330:[eva:garbled-mix] warning: The specification of function printf_va_1298 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:335:[eva:garbled-mix] warning: The specification of function printf_va_1299 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:343:[eva:garbled-mix] warning: The specification of function printf_va_1300 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:348 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:348 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:357:[eva:garbled-mix] warning: The specification of function printf_va_1302 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:363 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:363 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:371:[eva:garbled-mix] warning: The specification of function printf_va_1304 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:380:[eva:garbled-mix] warning: The specification of function printf_va_1305 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:385 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +safeclib/mem_primitives_lib.c:467:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:385 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:393:[eva:garbled-mix] warning: The specification of function printf_va_1307 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:402:[eva:garbled-mix] warning: The specification of function printf_va_1308 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:407 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:414:[eva:garbled-mix] warning: The specification of function printf_va_1310 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:419:[eva:garbled-mix] warning: The specification of function printf_va_1311 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:420:[eva:garbled-mix] warning: The specification of function printf_va_1311 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:428:[eva:garbled-mix] warning: The specification of function printf_va_1312 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/mem_primitives_lib.c:456:[kernel] warning: all target addresses were invalid. This path is assumed to be dead. +stack: mem_prim_move :: safeclib/wmemmove_s.c:146 <- + wmemmove_s :: unittests/test_wmemmove_s.c:433 <- + test_wmemmove_s :: unittests/Safe_String_UnitTestMain.c:162 <- + main +unittests/test_wmemmove_s.c:440:[eva:garbled-mix] warning: The specification of function printf_va_1314 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:445:[eva:garbled-mix] warning: The specification of function printf_va_1315 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemmove_s.c:446:[eva:garbled-mix] warning: The specification of function printf_va_1315 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:74:[eva:garbled-mix] warning: The specification of function printf_va_1316 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:77:[eva:garbled-mix] warning: The specification of function printf_va_1317 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:89:[eva:garbled-mix] warning: The specification of function printf_va_1319 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:100:[eva:garbled-mix] warning: The specification of function printf_va_1321 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:112:[eva:garbled-mix] warning: The specification of function printf_va_1323 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:131:[eva:garbled-mix] warning: The specification of function printf_va_1326 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:138:[eva:garbled-mix] warning: The specification of function printf_va_1327 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:157:[eva:garbled-mix] warning: The specification of function printf_va_1330 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:165:[eva:garbled-mix] warning: The specification of function printf_va_1331 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:186:[eva:garbled-mix] warning: The specification of function printf_va_1334 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:187:[eva:garbled-mix] warning: The specification of function printf_va_1334 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:193:[eva:garbled-mix] warning: The specification of function printf_va_1335 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemset_s.c:215:[eva:garbled-mix] warning: The specification of function printf_va_1338 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:85:[eva:garbled-mix] warning: The specification of function printf_va_1162 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:89:[eva:garbled-mix] warning: The specification of function printf_va_1163 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:99:[eva:garbled-mix] warning: The specification of function printf_va_1165 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:109:[eva:garbled-mix] warning: The specification of function printf_va_1167 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:119:[eva:garbled-mix] warning: The specification of function printf_va_1169 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:129:[eva:garbled-mix] warning: The specification of function printf_va_1171 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:139:[eva:garbled-mix] warning: The specification of function printf_va_1173 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:149:[eva:garbled-mix] warning: The specification of function printf_va_1175 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:159:[eva:garbled-mix] warning: The specification of function printf_va_1177 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:177:[eva:garbled-mix] warning: The specification of function printf_va_1180 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:184:[eva:garbled-mix] warning: The specification of function printf_va_1181 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:202:[eva:garbled-mix] warning: The specification of function printf_va_1184 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:209:[eva:garbled-mix] warning: The specification of function printf_va_1185 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:220:[eva:garbled-mix] warning: The specification of function printf_va_1187 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:226:[eva:garbled-mix] warning: The specification of function printf_va_1188 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:233:[eva:garbled-mix] warning: The specification of function printf_va_1189 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:254:[eva:garbled-mix] warning: The specification of function printf_va_1192 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:274:[eva:garbled-mix] warning: The specification of function printf_va_1195 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:294:[eva:garbled-mix] warning: The specification of function printf_va_1198 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:314:[eva:garbled-mix] warning: The specification of function printf_va_1201 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:327:[eva:garbled-mix] warning: The specification of function printf_va_1203 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:334:[eva:garbled-mix] warning: The specification of function printf_va_1204 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/test_wmemcmp_s.c:347:[eva:garbled-mix] warning: The specification of function printf_va_1206 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +safeclib/snprintf_support.c:297:[kernel:annot:missing-spec] warning: Neither code nor specification for function snprintf, generating default assigns from the prototype +unittests/Safe_String_UnitTestMain.c:179:[eva:garbled-mix] warning: The specification of function puts has generated a garbled mix for assigns clause assigns clause *__fc_stdout. +unittests/Safe_String_UnitTestMain.c:181:[eva:garbled-mix] warning: The specification of function puts has generated a garbled mix for assigns clause assigns clause *__fc_stdout. +unittests/Safe_String_UnitTestMain.c:183:[eva:garbled-mix] warning: The specification of function printf_va_3 has generated a garbled mix for assigns clause assigns clause __fc_stdout->__fc_FILE_data. +unittests/Safe_String_UnitTestMain.c:186:[eva:garbled-mix] warning: The specification of function puts has generated a garbled mix for assigns clause assigns clause *__fc_stdout. +unittests/Safe_String_UnitTestMain.c:187:[eva:garbled-mix] warning: The specification of function puts has generated a garbled mix for assigns clause assigns clause *__fc_stdout. +unittests/Safe_String_UnitTestMain.c:189:[eva:garbled-mix] warning: The specification of function puts has generated a garbled mix for assigns clause assigns clause *__fc_stdout. +[eva:garbled-mix] warning: Garbled mix generated during analysis: +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:79}) }} +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem2_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem2_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem2_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem1_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem2_0} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem1_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{mem1_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem2_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem1_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem2_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem1_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem2_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem1_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem2_1} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem1_2} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{mem1_6} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str1_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str1_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{str1_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{str1_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{str1_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{str2_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str2_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{str2_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{str2_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{str2_13} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"qq12345weqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"qq12345weqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"qq12345weqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"qq12345weqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{str1_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str1_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{str1_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{str1_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{str1_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{str2_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str2_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{str2_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{str2_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{str2_15} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple--keep it simple--keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"keep it simple"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"it"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"qqweqeqeqeq"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{str1_16} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{str1_16} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{str1_16} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{str1_16} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{str1_16} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{L"12"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{L"12"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{L"12"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{L"12"} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem1_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{mem1_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem1_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem1_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem1_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem2_2} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem2_2} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem2_2} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem2_2} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem1_4} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:88}) }} +{{ garbled mix of &{mem1_4} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem1_4} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem1_4} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem1_4} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} +{{ garbled mix of &{mem2_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:352}) }} +{{ garbled mix of &{mem2_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:356}) }} +{{ garbled mix of &{mem2_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:424}) }} +{{ garbled mix of &{mem2_3} + (origin: Arithmetic {safeclib/mem_primitives_lib.c:426}) }} diff --git a/safestringlib/.frama-c/intelsafestringlib.parse/framac.ast b/safestringlib/.frama-c/intelsafestringlib.parse/framac.ast new file mode 100644 index 0000000000000000000000000000000000000000..26497d7f5fbdc5792256c83c82fe582640498a06 --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.parse/framac.ast @@ -0,0 +1,38613 @@ +/* Generated by Frama-C */ +#include "__fc_builtin.h" +#include "ctype.h" +#include "errno.h" +#include "inttypes.h" +#include "signal.h" +#include "stdarg.h" +#include "stddef.h" +#include "stdint.h" +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "strings.h" +#include "sys/types.h" +#include "time.h" +#include "wchar.h" +typedef int errno_t; +typedef size_t rsize_t; +typedef void (*constraint_handler_t)(char const *, void *, errno_t ); +void abort_handler_s(char const *msg, void *ptr, errno_t error); + +void ignore_handler_s(char const *msg, void *ptr, errno_t error); + +constraint_handler_t set_mem_constraint_handler_s(void (*handler)(char const *, + void *, + errno_t )); + +errno_t memcmp_s(void const *dest_0, rsize_t dmax, void const *src, + rsize_t smax, int *diff); + +errno_t memcmp16_s(uint16_t const *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax, int *diff); + +errno_t memcmp32_s(uint32_t const *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax, int *diff); + +errno_t wmemcmp_s(wchar_t const *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t smax, int *diff); + +errno_t memcpy_s(void *dest_0, rsize_t dmax, void const *src, rsize_t smax); + +errno_t memcpy16_s(uint16_t *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax); + +errno_t memcpy32_s(uint32_t *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax); + +errno_t wmemcpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t smax); + +errno_t memmove_s(void *dest_0, rsize_t dmax, void const *src, rsize_t smax); + +errno_t memmove16_s(uint16_t *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax); + +errno_t memmove32_s(uint32_t *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax); + +errno_t wmemmove_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + unsigned int smax); + +errno_t memset_s(void *dest_0, rsize_t len, uint8_t value); + +errno_t memset16_s(uint16_t *dest_0, rsize_t len, uint16_t value); + +errno_t memset32_s(uint32_t *dest_0, rsize_t len, uint32_t value); + +errno_t wmemset_s(wchar_t *dest_0, wchar_t value, rsize_t len); + +errno_t memzero_s(void *dest_0, rsize_t len); + +errno_t memzero16_s(uint16_t *dest_0, rsize_t len); + +errno_t memzero32_s(uint32_t *dest_0, rsize_t len); + +constraint_handler_t set_str_constraint_handler_s(void (*handler)(char const *, + void *, + errno_t )); + +errno_t strcasecmp_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator); + +errno_t strcasestr_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen, char **substring); + +errno_t strcat_s(char *dest_0, rsize_t dmax, char const *src); + +errno_t strcmp_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator); + +errno_t strcmpfld_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator); + +errno_t strcpy_s(char *dest_0, rsize_t dmax, char const *src); + +char *stpcpy_s(char *dest_0, rsize_t dmax, char const *src, errno_t *err); + +char *stpncpy_s(char *dest_0, rsize_t dmax, char const *src, rsize_t smax, + errno_t *err); + +errno_t strcpyfld_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen); + +errno_t strcpyfldin_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen); + +errno_t strcpyfldout_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen); + +errno_t strcspn_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t slen, rsize_t *count); + +errno_t strfirstchar_s(char *dest_0, rsize_t dmax, char c, char **first); + +errno_t strfirstdiff_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0); + +_Bool strisalphanumeric_s(char const *dest_0, rsize_t dmax); + +_Bool strisascii_s(char const *dest_0, rsize_t dmax); + +_Bool strisdigit_s(char const *dest_0, rsize_t dmax); + +_Bool strishex_s(char const *dest_0, rsize_t dmax); + +_Bool strislowercase_s(char const *dest_0, rsize_t dmax); + +_Bool strismixedcase_s(char const *dest_0, rsize_t dmax); + +_Bool strispassword_s(char const *dest_0, rsize_t dmax); + +_Bool strisuppercase_s(char const *dest_0, rsize_t dmax); + +errno_t strlastchar_s(char *dest_0, rsize_t dmax, char c, char **last); + +errno_t strlastdiff_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0); + +errno_t strljustify_s(char *dest_0, rsize_t dmax); + +errno_t strncat_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen); + +errno_t strncpy_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen); + +rsize_t strnlen_s(char const *dest_0, rsize_t dmax); + +rsize_t strnterminate_s(char *dest_0, rsize_t dmax); + +errno_t strpbrk_s(char *dest_0, rsize_t dmax, char *src, rsize_t slen, + char **first); + +errno_t strfirstsame_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0); + +errno_t strlastsame_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0); + +errno_t strprefix_s(char const *dest_0, rsize_t dmax, char const *src); + +errno_t strremovews_s(char *dest_0, rsize_t dmax); + +errno_t strspn_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t slen, rsize_t *count); + +errno_t strstr_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen, + char **substring); + +char *strtok_s(char *dest_0, rsize_t *dmax, char const *src, char **ptr); + +errno_t strtolowercase_s(char *dest_0, rsize_t dmax); + +errno_t strtouppercase_s(char *dest_0, rsize_t dmax); + +errno_t strzero_s(char *dest_0, rsize_t dmax); + +wchar_t *wcpcpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + errno_t *err); + +errno_t wcscat_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src); + +errno_t wcsncat_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t slen); + +errno_t wcscpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src); + +errno_t wcsncpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t slen); + +rsize_t wcsnlen_s(wchar_t const *dest_0, rsize_t dmax); + +/*@ requires valid_read_string(format); + requires valid_read_string(param1); + assigns \result, stream->__fc_FILE_data; + assigns \result + \from (indirect: stream->__fc_FILE_id), + (indirect: stream->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param1 + (0 ..))), + (indirect: param0); + assigns stream->__fc_FILE_data + \from (indirect: stream->__fc_FILE_id), stream->__fc_FILE_data, + (indirect: *(format + (0 ..))), *(param1 + (0 ..)), param0; + */ +int fprintf_va_1(FILE * __restrict stream, char const * __restrict format, + unsigned int param0, char *param1); + +void abort_handler_s(char const *msg, void *ptr, errno_t error) +{ + char const *tmp; + if (msg) tmp = msg; else tmp = "Null message"; + ; + ; + fprintf_va_1(__fc_stderr,"ABORT CONSTRAINT HANDLER: (%u) %s\n", + (unsigned int)error,(char *)tmp); + abort(); + return; +} + +void ignore_handler_s(char const *msg, void *ptr, errno_t error) +{ + return; +} + +void mem_prim_move(void *dest_0, void const *src, uint32_t len); + +void mem_prim_move8(uint8_t *dp, uint8_t const *sp, uint32_t len); + +void mem_prim_move16(uint16_t *dp, uint16_t const *sp, uint32_t len); + +void mem_prim_move32(uint32_t *dp, uint32_t const *sp, uint32_t len); + +void mem_prim_set(void *dest_0, uint32_t len, uint8_t value); + +void mem_prim_set16(uint16_t *dp, uint32_t len, uint16_t value); + +void mem_prim_set32(uint32_t *dp, uint32_t len, uint32_t value); + +void mem_prim_set(void *dest_0, uint32_t len, uint8_t value) +{ + uint8_t *dp; + uint32_t count; + uint32_t lcount; + uint32_t *lp; + uint32_t value32; + count = len; + dp = (uint8_t *)dest_0; + value32 = (unsigned int)((((int)value | ((int)value << 8)) | ((int)value << 16)) | ( + (int)value << 24)); + while (1) { + if (count) { + if (! ((unsigned int)dp & (sizeof(uint32_t) - (unsigned int)1))) + break; + } + else break; + { + uint8_t *tmp; + tmp = dp; + dp ++; + *tmp = value; + } + count -= (uint32_t)1; + } + lp = (uint32_t *)dp; + lcount = count >> 2; + while (lcount != (uint32_t)0) + switch (lcount) { + uint32_t *tmp_0; + uint32_t *tmp_1; + uint32_t *tmp_2; + uint32_t *tmp_3; + uint32_t *tmp_4; + uint32_t *tmp_5; + uint32_t *tmp_6; + uint32_t *tmp_7; + uint32_t *tmp_8; + uint32_t *tmp_9; + uint32_t *tmp_10; + uint32_t *tmp_11; + uint32_t *tmp_12; + uint32_t *tmp_13; + uint32_t *tmp_14; + uint32_t *tmp_15; + uint32_t *tmp_16; + uint32_t *tmp_17; + uint32_t *tmp_18; + uint32_t *tmp_19; + uint32_t *tmp_20; + uint32_t *tmp_21; + uint32_t *tmp_22; + uint32_t *tmp_23; + uint32_t *tmp_24; + uint32_t *tmp_25; + uint32_t *tmp_26; + uint32_t *tmp_27; + uint32_t *tmp_28; + uint32_t *tmp_29; + uint32_t *tmp_30; + default: { /* sequence */ + tmp_0 = lp; + lp ++; + *tmp_0 = value32; + } + tmp_1 = lp; + lp ++; + *tmp_1 = value32; + tmp_2 = lp; + lp ++; + *tmp_2 = value32; + tmp_3 = lp; + lp ++; + *tmp_3 = value32; + tmp_4 = lp; + lp ++; + *tmp_4 = value32; + tmp_5 = lp; + lp ++; + *tmp_5 = value32; + tmp_6 = lp; + lp ++; + *tmp_6 = value32; + tmp_7 = lp; + lp ++; + *tmp_7 = value32; + tmp_8 = lp; + lp ++; + *tmp_8 = value32; + tmp_9 = lp; + lp ++; + *tmp_9 = value32; + tmp_10 = lp; + lp ++; + *tmp_10 = value32; + tmp_11 = lp; + lp ++; + *tmp_11 = value32; + tmp_12 = lp; + lp ++; + *tmp_12 = value32; + tmp_13 = lp; + lp ++; + *tmp_13 = value32; + tmp_14 = lp; + lp ++; + *tmp_14 = value32; + tmp_15 = lp; + lp ++; + *tmp_15 = value32; + lcount -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_16 = lp; + lp ++; + *tmp_16 = value32; + } + case (uint32_t)14: + { /* sequence */ + tmp_17 = lp; + lp ++; + *tmp_17 = value32; + } + case (uint32_t)13: + { /* sequence */ + tmp_18 = lp; + lp ++; + *tmp_18 = value32; + } + case (uint32_t)12: + { /* sequence */ + tmp_19 = lp; + lp ++; + *tmp_19 = value32; + } + case (uint32_t)11: + { /* sequence */ + tmp_20 = lp; + lp ++; + *tmp_20 = value32; + } + case (uint32_t)10: + { /* sequence */ + tmp_21 = lp; + lp ++; + *tmp_21 = value32; + } + case (uint32_t)9: + { /* sequence */ + tmp_22 = lp; + lp ++; + *tmp_22 = value32; + } + case (uint32_t)8: + { /* sequence */ + tmp_23 = lp; + lp ++; + *tmp_23 = value32; + } + case (uint32_t)7: + { /* sequence */ + tmp_24 = lp; + lp ++; + *tmp_24 = value32; + } + case (uint32_t)6: + { /* sequence */ + tmp_25 = lp; + lp ++; + *tmp_25 = value32; + } + case (uint32_t)5: + { /* sequence */ + tmp_26 = lp; + lp ++; + *tmp_26 = value32; + } + case (uint32_t)4: + { /* sequence */ + tmp_27 = lp; + lp ++; + *tmp_27 = value32; + } + case (uint32_t)3: + { /* sequence */ + tmp_28 = lp; + lp ++; + *tmp_28 = value32; + } + case (uint32_t)2: + { /* sequence */ + tmp_29 = lp; + lp ++; + *tmp_29 = value32; + } + case (uint32_t)1: + { /* sequence */ + tmp_30 = lp; + lp ++; + *tmp_30 = value32; + } + lcount = (unsigned int)0; + break; + } + dp = (uint8_t *)lp; + count &= sizeof(uint32_t) - (unsigned int)1; + while (count) { + *dp = value; + dp ++; + count -= (uint32_t)1; + } + return; +} + +void mem_prim_set16(uint16_t *dp, uint32_t len, uint16_t value) +{ + while (len != (uint32_t)0) + switch (len) { + uint16_t *tmp; + uint16_t *tmp_0; + uint16_t *tmp_1; + uint16_t *tmp_2; + uint16_t *tmp_3; + uint16_t *tmp_4; + uint16_t *tmp_5; + uint16_t *tmp_6; + uint16_t *tmp_7; + uint16_t *tmp_8; + uint16_t *tmp_9; + uint16_t *tmp_10; + uint16_t *tmp_11; + uint16_t *tmp_12; + uint16_t *tmp_13; + uint16_t *tmp_14; + uint16_t *tmp_15; + uint16_t *tmp_16; + uint16_t *tmp_17; + uint16_t *tmp_18; + uint16_t *tmp_19; + uint16_t *tmp_20; + uint16_t *tmp_21; + uint16_t *tmp_22; + uint16_t *tmp_23; + uint16_t *tmp_24; + uint16_t *tmp_25; + uint16_t *tmp_26; + uint16_t *tmp_27; + uint16_t *tmp_28; + uint16_t *tmp_29; + default: { /* sequence */ + tmp = dp; + dp ++; + *tmp = value; + } + tmp_0 = dp; + dp ++; + *tmp_0 = value; + tmp_1 = dp; + dp ++; + *tmp_1 = value; + tmp_2 = dp; + dp ++; + *tmp_2 = value; + tmp_3 = dp; + dp ++; + *tmp_3 = value; + tmp_4 = dp; + dp ++; + *tmp_4 = value; + tmp_5 = dp; + dp ++; + *tmp_5 = value; + tmp_6 = dp; + dp ++; + *tmp_6 = value; + tmp_7 = dp; + dp ++; + *tmp_7 = value; + tmp_8 = dp; + dp ++; + *tmp_8 = value; + tmp_9 = dp; + dp ++; + *tmp_9 = value; + tmp_10 = dp; + dp ++; + *tmp_10 = value; + tmp_11 = dp; + dp ++; + *tmp_11 = value; + tmp_12 = dp; + dp ++; + *tmp_12 = value; + tmp_13 = dp; + dp ++; + *tmp_13 = value; + tmp_14 = dp; + dp ++; + *tmp_14 = value; + len -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_15 = dp; + dp ++; + *tmp_15 = value; + } + case (uint32_t)14: + { /* sequence */ + tmp_16 = dp; + dp ++; + *tmp_16 = value; + } + case (uint32_t)13: + { /* sequence */ + tmp_17 = dp; + dp ++; + *tmp_17 = value; + } + case (uint32_t)12: + { /* sequence */ + tmp_18 = dp; + dp ++; + *tmp_18 = value; + } + case (uint32_t)11: + { /* sequence */ + tmp_19 = dp; + dp ++; + *tmp_19 = value; + } + case (uint32_t)10: + { /* sequence */ + tmp_20 = dp; + dp ++; + *tmp_20 = value; + } + case (uint32_t)9: + { /* sequence */ + tmp_21 = dp; + dp ++; + *tmp_21 = value; + } + case (uint32_t)8: + { /* sequence */ + tmp_22 = dp; + dp ++; + *tmp_22 = value; + } + case (uint32_t)7: + { /* sequence */ + tmp_23 = dp; + dp ++; + *tmp_23 = value; + } + case (uint32_t)6: + { /* sequence */ + tmp_24 = dp; + dp ++; + *tmp_24 = value; + } + case (uint32_t)5: + { /* sequence */ + tmp_25 = dp; + dp ++; + *tmp_25 = value; + } + case (uint32_t)4: + { /* sequence */ + tmp_26 = dp; + dp ++; + *tmp_26 = value; + } + case (uint32_t)3: + { /* sequence */ + tmp_27 = dp; + dp ++; + *tmp_27 = value; + } + case (uint32_t)2: + { /* sequence */ + tmp_28 = dp; + dp ++; + *tmp_28 = value; + } + case (uint32_t)1: + { /* sequence */ + tmp_29 = dp; + dp ++; + *tmp_29 = value; + } + len = (unsigned int)0; + break; + } + return; +} + +void mem_prim_set32(uint32_t *dp, uint32_t len, uint32_t value) +{ + while (len != (uint32_t)0) + switch (len) { + uint32_t *tmp; + uint32_t *tmp_0; + uint32_t *tmp_1; + uint32_t *tmp_2; + uint32_t *tmp_3; + uint32_t *tmp_4; + uint32_t *tmp_5; + uint32_t *tmp_6; + uint32_t *tmp_7; + uint32_t *tmp_8; + uint32_t *tmp_9; + uint32_t *tmp_10; + uint32_t *tmp_11; + uint32_t *tmp_12; + uint32_t *tmp_13; + uint32_t *tmp_14; + uint32_t *tmp_15; + uint32_t *tmp_16; + uint32_t *tmp_17; + uint32_t *tmp_18; + uint32_t *tmp_19; + uint32_t *tmp_20; + uint32_t *tmp_21; + uint32_t *tmp_22; + uint32_t *tmp_23; + uint32_t *tmp_24; + uint32_t *tmp_25; + uint32_t *tmp_26; + uint32_t *tmp_27; + uint32_t *tmp_28; + uint32_t *tmp_29; + default: { /* sequence */ + tmp = dp; + dp ++; + *tmp = value; + } + tmp_0 = dp; + dp ++; + *tmp_0 = value; + tmp_1 = dp; + dp ++; + *tmp_1 = value; + tmp_2 = dp; + dp ++; + *tmp_2 = value; + tmp_3 = dp; + dp ++; + *tmp_3 = value; + tmp_4 = dp; + dp ++; + *tmp_4 = value; + tmp_5 = dp; + dp ++; + *tmp_5 = value; + tmp_6 = dp; + dp ++; + *tmp_6 = value; + tmp_7 = dp; + dp ++; + *tmp_7 = value; + tmp_8 = dp; + dp ++; + *tmp_8 = value; + tmp_9 = dp; + dp ++; + *tmp_9 = value; + tmp_10 = dp; + dp ++; + *tmp_10 = value; + tmp_11 = dp; + dp ++; + *tmp_11 = value; + tmp_12 = dp; + dp ++; + *tmp_12 = value; + tmp_13 = dp; + dp ++; + *tmp_13 = value; + tmp_14 = dp; + dp ++; + *tmp_14 = value; + len -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_15 = dp; + dp ++; + *tmp_15 = value; + } + case (uint32_t)14: + { /* sequence */ + tmp_16 = dp; + dp ++; + *tmp_16 = value; + } + case (uint32_t)13: + { /* sequence */ + tmp_17 = dp; + dp ++; + *tmp_17 = value; + } + case (uint32_t)12: + { /* sequence */ + tmp_18 = dp; + dp ++; + *tmp_18 = value; + } + case (uint32_t)11: + { /* sequence */ + tmp_19 = dp; + dp ++; + *tmp_19 = value; + } + case (uint32_t)10: + { /* sequence */ + tmp_20 = dp; + dp ++; + *tmp_20 = value; + } + case (uint32_t)9: + { /* sequence */ + tmp_21 = dp; + dp ++; + *tmp_21 = value; + } + case (uint32_t)8: + { /* sequence */ + tmp_22 = dp; + dp ++; + *tmp_22 = value; + } + case (uint32_t)7: + { /* sequence */ + tmp_23 = dp; + dp ++; + *tmp_23 = value; + } + case (uint32_t)6: + { /* sequence */ + tmp_24 = dp; + dp ++; + *tmp_24 = value; + } + case (uint32_t)5: + { /* sequence */ + tmp_25 = dp; + dp ++; + *tmp_25 = value; + } + case (uint32_t)4: + { /* sequence */ + tmp_26 = dp; + dp ++; + *tmp_26 = value; + } + case (uint32_t)3: + { /* sequence */ + tmp_27 = dp; + dp ++; + *tmp_27 = value; + } + case (uint32_t)2: + { /* sequence */ + tmp_28 = dp; + dp ++; + *tmp_28 = value; + } + case (uint32_t)1: + { /* sequence */ + tmp_29 = dp; + dp ++; + *tmp_29 = value; + } + len = (unsigned int)0; + break; + } + return; +} + +void mem_prim_move(void *dest_0, void const *src, uint32_t len) +{ + uint32_t tsp; + uint8_t *dp = (uint8_t *)dest_0; + uint8_t const *sp = (uint8_t const *)src; + if ((unsigned int)dp < (unsigned int)sp) { + tsp = (unsigned int)sp; + if ((tsp | (unsigned int)dp) & (sizeof(uint32_t) - (unsigned int)1)) { + if ((tsp ^ (unsigned int)dp) & (sizeof(uint32_t) - (unsigned int)1)) + goto _LOR; + else + if (len < sizeof(uint32_t)) _LOR: tsp = len; + else { + int tmp; + tmp = Frama_C_interval(0,3); + tsp = sizeof(uint32_t) - (unsigned int)tmp; + } + len -= tsp; + while (1) { + { + uint8_t *tmp_0; + uint8_t const *tmp_1; + tmp_0 = dp; + dp ++; + tmp_1 = sp; + sp ++; + *tmp_0 = *tmp_1; + } + tsp -= (uint32_t)1; + if (! tsp) break; + } + } + tsp = len / sizeof(uint32_t); + if (tsp > (uint32_t)0) + while (1) { + *((uint32_t *)dp) = *((uint32_t *)sp); + sp += sizeof(uint32_t); + dp += sizeof(uint32_t); + tsp -= (uint32_t)1; + if (! tsp) break; + } + tsp = len & (sizeof(uint32_t) - (unsigned int)1); + if (tsp > (uint32_t)0) + while (1) { + { + uint8_t *tmp_2; + uint8_t const *tmp_3; + tmp_2 = dp; + dp ++; + tmp_3 = sp; + sp ++; + *tmp_2 = *tmp_3; + } + tsp -= (uint32_t)1; + if (! tsp) break; + } + } + else { + sp += len; + dp += len; + tsp = (unsigned int)sp; + if ((tsp | (unsigned int)dp) & (sizeof(uint32_t) - (unsigned int)1)) { + if ((tsp ^ (unsigned int)dp) & (sizeof(uint32_t) - (unsigned int)1)) + goto _LOR_0; + else + if (len <= sizeof(uint32_t)) _LOR_0: tsp = len; + else { + int tmp_4; + tmp_4 = Frama_C_interval(0,3); + tsp = (unsigned int)tmp_4; + } + len -= tsp; + while (1) { + dp --; + sp --; + *dp = *sp; + tsp -= (uint32_t)1; + if (! tsp) break; + } + } + tsp = len / sizeof(uint32_t); + if (tsp > (uint32_t)0) + while (1) { + sp -= sizeof(uint32_t); + dp -= sizeof(uint32_t); + *((uint32_t *)dp) = *((uint32_t *)sp); + tsp -= (uint32_t)1; + if (! tsp) break; + } + tsp = len & (sizeof(uint32_t) - (unsigned int)1); + if (tsp > (uint32_t)0) { + tsp = len & (sizeof(uint32_t) - (unsigned int)1); + while (1) { + dp --; + sp --; + *dp = *sp; + tsp -= (uint32_t)1; + if (! tsp) break; + } + } + } + return; +} + +void mem_prim_move8(uint8_t *dp, uint8_t const *sp, uint32_t len) +{ + if ((void *)dp < (void *)sp) + while (len != (uint32_t)0) + switch (len) { + uint8_t *tmp; + uint8_t const *tmp_0; + uint8_t *tmp_1; + uint8_t const *tmp_2; + uint8_t *tmp_3; + uint8_t const *tmp_4; + uint8_t *tmp_5; + uint8_t const *tmp_6; + uint8_t *tmp_7; + uint8_t const *tmp_8; + uint8_t *tmp_9; + uint8_t const *tmp_10; + uint8_t *tmp_11; + uint8_t const *tmp_12; + uint8_t *tmp_13; + uint8_t const *tmp_14; + uint8_t *tmp_15; + uint8_t const *tmp_16; + uint8_t *tmp_17; + uint8_t const *tmp_18; + uint8_t *tmp_19; + uint8_t const *tmp_20; + uint8_t *tmp_21; + uint8_t const *tmp_22; + uint8_t *tmp_23; + uint8_t const *tmp_24; + uint8_t *tmp_25; + uint8_t const *tmp_26; + uint8_t *tmp_27; + uint8_t const *tmp_28; + uint8_t *tmp_29; + uint8_t const *tmp_30; + uint8_t *tmp_31; + uint8_t const *tmp_32; + uint8_t *tmp_33; + uint8_t const *tmp_34; + uint8_t *tmp_35; + uint8_t const *tmp_36; + uint8_t *tmp_37; + uint8_t const *tmp_38; + uint8_t *tmp_39; + uint8_t const *tmp_40; + uint8_t *tmp_41; + uint8_t const *tmp_42; + uint8_t *tmp_43; + uint8_t const *tmp_44; + uint8_t *tmp_45; + uint8_t const *tmp_46; + uint8_t *tmp_47; + uint8_t const *tmp_48; + uint8_t *tmp_49; + uint8_t const *tmp_50; + uint8_t *tmp_51; + uint8_t const *tmp_52; + uint8_t *tmp_53; + uint8_t const *tmp_54; + uint8_t *tmp_55; + uint8_t const *tmp_56; + uint8_t *tmp_57; + uint8_t const *tmp_58; + uint8_t *tmp_59; + uint8_t const *tmp_60; + default: + { /* sequence */ + tmp = dp; + dp ++; + tmp_0 = sp; + sp ++; + *tmp = *tmp_0; + } + tmp_1 = dp; + dp ++; + tmp_2 = sp; + sp ++; + *tmp_1 = *tmp_2; + tmp_3 = dp; + dp ++; + tmp_4 = sp; + sp ++; + *tmp_3 = *tmp_4; + tmp_5 = dp; + dp ++; + tmp_6 = sp; + sp ++; + *tmp_5 = *tmp_6; + tmp_7 = dp; + dp ++; + tmp_8 = sp; + sp ++; + *tmp_7 = *tmp_8; + tmp_9 = dp; + dp ++; + tmp_10 = sp; + sp ++; + *tmp_9 = *tmp_10; + tmp_11 = dp; + dp ++; + tmp_12 = sp; + sp ++; + *tmp_11 = *tmp_12; + tmp_13 = dp; + dp ++; + tmp_14 = sp; + sp ++; + *tmp_13 = *tmp_14; + tmp_15 = dp; + dp ++; + tmp_16 = sp; + sp ++; + *tmp_15 = *tmp_16; + tmp_17 = dp; + dp ++; + tmp_18 = sp; + sp ++; + *tmp_17 = *tmp_18; + tmp_19 = dp; + dp ++; + tmp_20 = sp; + sp ++; + *tmp_19 = *tmp_20; + tmp_21 = dp; + dp ++; + tmp_22 = sp; + sp ++; + *tmp_21 = *tmp_22; + tmp_23 = dp; + dp ++; + tmp_24 = sp; + sp ++; + *tmp_23 = *tmp_24; + tmp_25 = dp; + dp ++; + tmp_26 = sp; + sp ++; + *tmp_25 = *tmp_26; + tmp_27 = dp; + dp ++; + tmp_28 = sp; + sp ++; + *tmp_27 = *tmp_28; + tmp_29 = dp; + dp ++; + tmp_30 = sp; + sp ++; + *tmp_29 = *tmp_30; + len -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_31 = dp; + dp ++; + tmp_32 = sp; + sp ++; + *tmp_31 = *tmp_32; + } + case (uint32_t)14: + { /* sequence */ + tmp_33 = dp; + dp ++; + tmp_34 = sp; + sp ++; + *tmp_33 = *tmp_34; + } + case (uint32_t)13: + { /* sequence */ + tmp_35 = dp; + dp ++; + tmp_36 = sp; + sp ++; + *tmp_35 = *tmp_36; + } + case (uint32_t)12: + { /* sequence */ + tmp_37 = dp; + dp ++; + tmp_38 = sp; + sp ++; + *tmp_37 = *tmp_38; + } + case (uint32_t)11: + { /* sequence */ + tmp_39 = dp; + dp ++; + tmp_40 = sp; + sp ++; + *tmp_39 = *tmp_40; + } + case (uint32_t)10: + { /* sequence */ + tmp_41 = dp; + dp ++; + tmp_42 = sp; + sp ++; + *tmp_41 = *tmp_42; + } + case (uint32_t)9: + { /* sequence */ + tmp_43 = dp; + dp ++; + tmp_44 = sp; + sp ++; + *tmp_43 = *tmp_44; + } + case (uint32_t)8: + { /* sequence */ + tmp_45 = dp; + dp ++; + tmp_46 = sp; + sp ++; + *tmp_45 = *tmp_46; + } + case (uint32_t)7: + { /* sequence */ + tmp_47 = dp; + dp ++; + tmp_48 = sp; + sp ++; + *tmp_47 = *tmp_48; + } + case (uint32_t)6: + { /* sequence */ + tmp_49 = dp; + dp ++; + tmp_50 = sp; + sp ++; + *tmp_49 = *tmp_50; + } + case (uint32_t)5: + { /* sequence */ + tmp_51 = dp; + dp ++; + tmp_52 = sp; + sp ++; + *tmp_51 = *tmp_52; + } + case (uint32_t)4: + { /* sequence */ + tmp_53 = dp; + dp ++; + tmp_54 = sp; + sp ++; + *tmp_53 = *tmp_54; + } + case (uint32_t)3: + { /* sequence */ + tmp_55 = dp; + dp ++; + tmp_56 = sp; + sp ++; + *tmp_55 = *tmp_56; + } + case (uint32_t)2: + { /* sequence */ + tmp_57 = dp; + dp ++; + tmp_58 = sp; + sp ++; + *tmp_57 = *tmp_58; + } + case (uint32_t)1: + { /* sequence */ + tmp_59 = dp; + dp ++; + tmp_60 = sp; + sp ++; + *tmp_59 = *tmp_60; + } + len = (unsigned int)0; + break; + } + else { + sp += len; + dp += len; + while (len != (uint32_t)0) + switch (len) { + default: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + len -= (uint32_t)16; + break; + case (uint32_t)15: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)14: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)13: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)12: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)11: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)10: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)9: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)8: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)7: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)6: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)5: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)4: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)3: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)2: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)1: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + len = (unsigned int)0; + break; + } + } + return; +} + +void mem_prim_move16(uint16_t *dp, uint16_t const *sp, uint32_t len) +{ + if ((void *)dp < (void *)sp) + while (len != (uint32_t)0) + switch (len) { + uint16_t *tmp; + uint16_t const *tmp_0; + uint16_t *tmp_1; + uint16_t const *tmp_2; + uint16_t *tmp_3; + uint16_t const *tmp_4; + uint16_t *tmp_5; + uint16_t const *tmp_6; + uint16_t *tmp_7; + uint16_t const *tmp_8; + uint16_t *tmp_9; + uint16_t const *tmp_10; + uint16_t *tmp_11; + uint16_t const *tmp_12; + uint16_t *tmp_13; + uint16_t const *tmp_14; + uint16_t *tmp_15; + uint16_t const *tmp_16; + uint16_t *tmp_17; + uint16_t const *tmp_18; + uint16_t *tmp_19; + uint16_t const *tmp_20; + uint16_t *tmp_21; + uint16_t const *tmp_22; + uint16_t *tmp_23; + uint16_t const *tmp_24; + uint16_t *tmp_25; + uint16_t const *tmp_26; + uint16_t *tmp_27; + uint16_t const *tmp_28; + uint16_t *tmp_29; + uint16_t const *tmp_30; + uint16_t *tmp_31; + uint16_t const *tmp_32; + uint16_t *tmp_33; + uint16_t const *tmp_34; + uint16_t *tmp_35; + uint16_t const *tmp_36; + uint16_t *tmp_37; + uint16_t const *tmp_38; + uint16_t *tmp_39; + uint16_t const *tmp_40; + uint16_t *tmp_41; + uint16_t const *tmp_42; + uint16_t *tmp_43; + uint16_t const *tmp_44; + uint16_t *tmp_45; + uint16_t const *tmp_46; + uint16_t *tmp_47; + uint16_t const *tmp_48; + uint16_t *tmp_49; + uint16_t const *tmp_50; + uint16_t *tmp_51; + uint16_t const *tmp_52; + uint16_t *tmp_53; + uint16_t const *tmp_54; + uint16_t *tmp_55; + uint16_t const *tmp_56; + uint16_t *tmp_57; + uint16_t const *tmp_58; + uint16_t *tmp_59; + uint16_t const *tmp_60; + default: + { /* sequence */ + tmp = dp; + dp ++; + tmp_0 = sp; + sp ++; + *tmp = *tmp_0; + } + tmp_1 = dp; + dp ++; + tmp_2 = sp; + sp ++; + *tmp_1 = *tmp_2; + tmp_3 = dp; + dp ++; + tmp_4 = sp; + sp ++; + *tmp_3 = *tmp_4; + tmp_5 = dp; + dp ++; + tmp_6 = sp; + sp ++; + *tmp_5 = *tmp_6; + tmp_7 = dp; + dp ++; + tmp_8 = sp; + sp ++; + *tmp_7 = *tmp_8; + tmp_9 = dp; + dp ++; + tmp_10 = sp; + sp ++; + *tmp_9 = *tmp_10; + tmp_11 = dp; + dp ++; + tmp_12 = sp; + sp ++; + *tmp_11 = *tmp_12; + tmp_13 = dp; + dp ++; + tmp_14 = sp; + sp ++; + *tmp_13 = *tmp_14; + tmp_15 = dp; + dp ++; + tmp_16 = sp; + sp ++; + *tmp_15 = *tmp_16; + tmp_17 = dp; + dp ++; + tmp_18 = sp; + sp ++; + *tmp_17 = *tmp_18; + tmp_19 = dp; + dp ++; + tmp_20 = sp; + sp ++; + *tmp_19 = *tmp_20; + tmp_21 = dp; + dp ++; + tmp_22 = sp; + sp ++; + *tmp_21 = *tmp_22; + tmp_23 = dp; + dp ++; + tmp_24 = sp; + sp ++; + *tmp_23 = *tmp_24; + tmp_25 = dp; + dp ++; + tmp_26 = sp; + sp ++; + *tmp_25 = *tmp_26; + tmp_27 = dp; + dp ++; + tmp_28 = sp; + sp ++; + *tmp_27 = *tmp_28; + tmp_29 = dp; + dp ++; + tmp_30 = sp; + sp ++; + *tmp_29 = *tmp_30; + len -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_31 = dp; + dp ++; + tmp_32 = sp; + sp ++; + *tmp_31 = *tmp_32; + } + case (uint32_t)14: + { /* sequence */ + tmp_33 = dp; + dp ++; + tmp_34 = sp; + sp ++; + *tmp_33 = *tmp_34; + } + case (uint32_t)13: + { /* sequence */ + tmp_35 = dp; + dp ++; + tmp_36 = sp; + sp ++; + *tmp_35 = *tmp_36; + } + case (uint32_t)12: + { /* sequence */ + tmp_37 = dp; + dp ++; + tmp_38 = sp; + sp ++; + *tmp_37 = *tmp_38; + } + case (uint32_t)11: + { /* sequence */ + tmp_39 = dp; + dp ++; + tmp_40 = sp; + sp ++; + *tmp_39 = *tmp_40; + } + case (uint32_t)10: + { /* sequence */ + tmp_41 = dp; + dp ++; + tmp_42 = sp; + sp ++; + *tmp_41 = *tmp_42; + } + case (uint32_t)9: + { /* sequence */ + tmp_43 = dp; + dp ++; + tmp_44 = sp; + sp ++; + *tmp_43 = *tmp_44; + } + case (uint32_t)8: + { /* sequence */ + tmp_45 = dp; + dp ++; + tmp_46 = sp; + sp ++; + *tmp_45 = *tmp_46; + } + case (uint32_t)7: + { /* sequence */ + tmp_47 = dp; + dp ++; + tmp_48 = sp; + sp ++; + *tmp_47 = *tmp_48; + } + case (uint32_t)6: + { /* sequence */ + tmp_49 = dp; + dp ++; + tmp_50 = sp; + sp ++; + *tmp_49 = *tmp_50; + } + case (uint32_t)5: + { /* sequence */ + tmp_51 = dp; + dp ++; + tmp_52 = sp; + sp ++; + *tmp_51 = *tmp_52; + } + case (uint32_t)4: + { /* sequence */ + tmp_53 = dp; + dp ++; + tmp_54 = sp; + sp ++; + *tmp_53 = *tmp_54; + } + case (uint32_t)3: + { /* sequence */ + tmp_55 = dp; + dp ++; + tmp_56 = sp; + sp ++; + *tmp_55 = *tmp_56; + } + case (uint32_t)2: + { /* sequence */ + tmp_57 = dp; + dp ++; + tmp_58 = sp; + sp ++; + *tmp_57 = *tmp_58; + } + case (uint32_t)1: + { /* sequence */ + tmp_59 = dp; + dp ++; + tmp_60 = sp; + sp ++; + *tmp_59 = *tmp_60; + } + len = (unsigned int)0; + break; + } + else { + sp += len; + dp += len; + while (len != (uint32_t)0) + switch (len) { + default: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + len -= (uint32_t)16; + break; + case (uint32_t)15: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)14: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)13: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)12: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)11: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)10: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)9: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)8: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)7: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)6: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)5: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)4: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)3: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)2: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)1: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + len = (unsigned int)0; + break; + } + } + return; +} + +void mem_prim_move32(uint32_t *dp, uint32_t const *sp, uint32_t len) +{ + if ((void *)dp < (void *)sp) + while (len != (uint32_t)0) + switch (len) { + uint32_t *tmp; + uint32_t const *tmp_0; + uint32_t *tmp_1; + uint32_t const *tmp_2; + uint32_t *tmp_3; + uint32_t const *tmp_4; + uint32_t *tmp_5; + uint32_t const *tmp_6; + uint32_t *tmp_7; + uint32_t const *tmp_8; + uint32_t *tmp_9; + uint32_t const *tmp_10; + uint32_t *tmp_11; + uint32_t const *tmp_12; + uint32_t *tmp_13; + uint32_t const *tmp_14; + uint32_t *tmp_15; + uint32_t const *tmp_16; + uint32_t *tmp_17; + uint32_t const *tmp_18; + uint32_t *tmp_19; + uint32_t const *tmp_20; + uint32_t *tmp_21; + uint32_t const *tmp_22; + uint32_t *tmp_23; + uint32_t const *tmp_24; + uint32_t *tmp_25; + uint32_t const *tmp_26; + uint32_t *tmp_27; + uint32_t const *tmp_28; + uint32_t *tmp_29; + uint32_t const *tmp_30; + uint32_t *tmp_31; + uint32_t const *tmp_32; + uint32_t *tmp_33; + uint32_t const *tmp_34; + uint32_t *tmp_35; + uint32_t const *tmp_36; + uint32_t *tmp_37; + uint32_t const *tmp_38; + uint32_t *tmp_39; + uint32_t const *tmp_40; + uint32_t *tmp_41; + uint32_t const *tmp_42; + uint32_t *tmp_43; + uint32_t const *tmp_44; + uint32_t *tmp_45; + uint32_t const *tmp_46; + uint32_t *tmp_47; + uint32_t const *tmp_48; + uint32_t *tmp_49; + uint32_t const *tmp_50; + uint32_t *tmp_51; + uint32_t const *tmp_52; + uint32_t *tmp_53; + uint32_t const *tmp_54; + uint32_t *tmp_55; + uint32_t const *tmp_56; + uint32_t *tmp_57; + uint32_t const *tmp_58; + uint32_t *tmp_59; + uint32_t const *tmp_60; + default: + { /* sequence */ + tmp = dp; + dp ++; + tmp_0 = sp; + sp ++; + *tmp = *tmp_0; + } + tmp_1 = dp; + dp ++; + tmp_2 = sp; + sp ++; + *tmp_1 = *tmp_2; + tmp_3 = dp; + dp ++; + tmp_4 = sp; + sp ++; + *tmp_3 = *tmp_4; + tmp_5 = dp; + dp ++; + tmp_6 = sp; + sp ++; + *tmp_5 = *tmp_6; + tmp_7 = dp; + dp ++; + tmp_8 = sp; + sp ++; + *tmp_7 = *tmp_8; + tmp_9 = dp; + dp ++; + tmp_10 = sp; + sp ++; + *tmp_9 = *tmp_10; + tmp_11 = dp; + dp ++; + tmp_12 = sp; + sp ++; + *tmp_11 = *tmp_12; + tmp_13 = dp; + dp ++; + tmp_14 = sp; + sp ++; + *tmp_13 = *tmp_14; + tmp_15 = dp; + dp ++; + tmp_16 = sp; + sp ++; + *tmp_15 = *tmp_16; + tmp_17 = dp; + dp ++; + tmp_18 = sp; + sp ++; + *tmp_17 = *tmp_18; + tmp_19 = dp; + dp ++; + tmp_20 = sp; + sp ++; + *tmp_19 = *tmp_20; + tmp_21 = dp; + dp ++; + tmp_22 = sp; + sp ++; + *tmp_21 = *tmp_22; + tmp_23 = dp; + dp ++; + tmp_24 = sp; + sp ++; + *tmp_23 = *tmp_24; + tmp_25 = dp; + dp ++; + tmp_26 = sp; + sp ++; + *tmp_25 = *tmp_26; + tmp_27 = dp; + dp ++; + tmp_28 = sp; + sp ++; + *tmp_27 = *tmp_28; + tmp_29 = dp; + dp ++; + tmp_30 = sp; + sp ++; + *tmp_29 = *tmp_30; + len -= (uint32_t)16; + break; + case (uint32_t)15: + { /* sequence */ + tmp_31 = dp; + dp ++; + tmp_32 = sp; + sp ++; + *tmp_31 = *tmp_32; + } + case (uint32_t)14: + { /* sequence */ + tmp_33 = dp; + dp ++; + tmp_34 = sp; + sp ++; + *tmp_33 = *tmp_34; + } + case (uint32_t)13: + { /* sequence */ + tmp_35 = dp; + dp ++; + tmp_36 = sp; + sp ++; + *tmp_35 = *tmp_36; + } + case (uint32_t)12: + { /* sequence */ + tmp_37 = dp; + dp ++; + tmp_38 = sp; + sp ++; + *tmp_37 = *tmp_38; + } + case (uint32_t)11: + { /* sequence */ + tmp_39 = dp; + dp ++; + tmp_40 = sp; + sp ++; + *tmp_39 = *tmp_40; + } + case (uint32_t)10: + { /* sequence */ + tmp_41 = dp; + dp ++; + tmp_42 = sp; + sp ++; + *tmp_41 = *tmp_42; + } + case (uint32_t)9: + { /* sequence */ + tmp_43 = dp; + dp ++; + tmp_44 = sp; + sp ++; + *tmp_43 = *tmp_44; + } + case (uint32_t)8: + { /* sequence */ + tmp_45 = dp; + dp ++; + tmp_46 = sp; + sp ++; + *tmp_45 = *tmp_46; + } + case (uint32_t)7: + { /* sequence */ + tmp_47 = dp; + dp ++; + tmp_48 = sp; + sp ++; + *tmp_47 = *tmp_48; + } + case (uint32_t)6: + { /* sequence */ + tmp_49 = dp; + dp ++; + tmp_50 = sp; + sp ++; + *tmp_49 = *tmp_50; + } + case (uint32_t)5: + { /* sequence */ + tmp_51 = dp; + dp ++; + tmp_52 = sp; + sp ++; + *tmp_51 = *tmp_52; + } + case (uint32_t)4: + { /* sequence */ + tmp_53 = dp; + dp ++; + tmp_54 = sp; + sp ++; + *tmp_53 = *tmp_54; + } + case (uint32_t)3: + { /* sequence */ + tmp_55 = dp; + dp ++; + tmp_56 = sp; + sp ++; + *tmp_55 = *tmp_56; + } + case (uint32_t)2: + { /* sequence */ + tmp_57 = dp; + dp ++; + tmp_58 = sp; + sp ++; + *tmp_57 = *tmp_58; + } + case (uint32_t)1: + { /* sequence */ + tmp_59 = dp; + dp ++; + tmp_60 = sp; + sp ++; + *tmp_59 = *tmp_60; + } + len = (unsigned int)0; + break; + } + else { + sp += len; + dp += len; + while (len != (uint32_t)0) + switch (len) { + default: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + dp --; + sp --; + *dp = *sp; + len -= (uint32_t)16; + break; + case (uint32_t)15: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)14: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)13: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)12: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)11: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)10: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)9: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)8: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)7: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)6: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)5: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)4: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)3: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)2: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + case (uint32_t)1: { /* sequence */ + dp --; + sp --; + *dp = *sp; + } + len = (unsigned int)0; + break; + } + } + return; +} + +void invoke_safe_mem_constraint_handler(char const *msg, void *ptr, + errno_t error); + +errno_t memcmp16_s(uint16_t const *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax, int *diff) +{ + errno_t __retres; + uint16_t const *dp; + uint16_t const *sp; + dp = dest_0; + sp = src; + if (diff == (int *)0) { + invoke_safe_mem_constraint_handler("memcmp16_s: diff is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *diff = -1; + if (dp == (uint16_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp16_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (sp == (uint16_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp16_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp16_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)2) { + invoke_safe_mem_constraint_handler("memcmp16_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp16_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp16_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dp == sp) { + *diff = 0; + __retres = 0; + goto return_label; + } + *diff = 0; + while (1) { + if (dmax != (rsize_t)0) { + if (! (smax != (rsize_t)0)) break; + } + else break; + if ((int)*dp != (int)*sp) { + *diff = (int)*dp - (int)*sp; + break; + } + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + dp ++; + sp ++; + } + __retres = 0; + return_label: return __retres; +} + +errno_t memcmp32_s(uint32_t const *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax, int *diff) +{ + errno_t __retres; + if (diff == (int *)0) { + invoke_safe_mem_constraint_handler("memcmp32_s: diff is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *diff = -1; + if (dest_0 == (uint32_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp32_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (uint32_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp32_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp32_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("memcmp32_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp32_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp32_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dest_0 == src) { + *diff = 0; + __retres = 0; + goto return_label; + } + *diff = 0; + while (1) { + if (dmax != (rsize_t)0) { + if (! (smax != (rsize_t)0)) break; + } + else break; + if (*dest_0 != *src) { + *diff = (int)(*dest_0 - *src); + break; + } + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + dest_0 ++; + src ++; + } + __retres = 0; + return_label: return __retres; +} + +errno_t memcmp_s(void const *dest_0, rsize_t dmax, void const *src, + rsize_t smax, int *diff) +{ + errno_t __retres; + uint8_t const *dp; + uint8_t const *sp; + dp = (uint8_t const *)dest_0; + sp = (uint8_t const *)src; + if (diff == (int *)0) { + invoke_safe_mem_constraint_handler("memcmp_s: diff is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *diff = -1; + if (dp == (uint8_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (sp == (uint8_t const *)0) { + invoke_safe_mem_constraint_handler("memcmp_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 256UL << 20) { + invoke_safe_mem_constraint_handler("memcmp_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcmp_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dp == sp) { + *diff = 0; + __retres = 0; + goto return_label; + } + *diff = 0; + while (1) { + if (dmax > (rsize_t)0) { + if (! (smax > (rsize_t)0)) break; + } + else break; + if ((int)*dp != (int)*sp) { + if ((int)*dp < (int)*sp) *diff = -1; else *diff = 1; + break; + } + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + dp ++; + sp ++; + } + __retres = 0; + return_label: return __retres; +} + +errno_t memcpy16_s(uint16_t *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax) +{ + errno_t __retres; + if (dest_0 == (uint16_t *)0) { + invoke_safe_mem_constraint_handler("memcpy16_s: dest is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcpy16_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)2) { + invoke_safe_mem_constraint_handler("memcpy16_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set16(dest_0,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memcpy16_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set16(dest_0,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memcpy16_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (uint16_t const *)0) { + mem_prim_set16(dest_0,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memcpy16_s: src is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if ((void *)dest_0 > (void *)src) { + if ((void *)dest_0 < (void *)(src + smax)) goto _LOR; else goto _LAND; + } + else { + _LAND: ; + if ((void *)src > (void *)dest_0) + if ((void *)src < (void *)(dest_0 + dmax)) { + _LOR: + { + mem_prim_set16(dest_0,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memcpy16_s: overlap undefined", + (void *)0,404); + __retres = 404; + goto return_label; + } + } + } + mem_prim_move16(dest_0,src,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memcpy32_s(uint32_t *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax) +{ + errno_t __retres; + if (dest_0 == (uint32_t *)0) { + invoke_safe_mem_constraint_handler("memcpy32_s: dest is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcpy32_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("memcpy32_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set32(dest_0,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memcpy32_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set32(dest_0,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memcpy32_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (uint32_t const *)0) { + mem_prim_set32(dest_0,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memcpy32_s: src is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if ((void *)dest_0 > (void *)src) { + if ((void *)dest_0 < (void *)(src + smax)) goto _LOR; else goto _LAND; + } + else { + _LAND: ; + if ((void *)src > (void *)dest_0) + if ((void *)src < (void *)(dest_0 + dmax)) { + _LOR: + { + mem_prim_set32(dest_0,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memcpy32_s: overlap undefined", + (void *)0,404); + __retres = 404; + goto return_label; + } + } + } + mem_prim_move32(dest_0,src,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memcpy_s(void *dest_0, rsize_t dmax, void const *src, rsize_t smax) +{ + errno_t __retres; + uint8_t *dp; + uint8_t const *sp; + dp = (uint8_t *)dest_0; + sp = (uint8_t const *)src; + if (dp == (uint8_t *)0) { + invoke_safe_mem_constraint_handler("memcpy_s: dest is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memcpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 256UL << 20) { + invoke_safe_mem_constraint_handler("memcpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memcpy_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memcpy_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (uint8_t const *)0) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memcpy_s: src is NULL",(void *)0,400); + __retres = 400; + goto return_label; + } + if ((void *)dp > (void *)sp) { + if ((void *)dp < (void *)(sp + smax)) goto _LOR; else goto _LAND; + } + else { + _LAND: ; + if ((void *)sp > (void *)dp) + if ((void *)sp < (void *)(dp + dmax)) { + _LOR: + { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memcpy_s: overlap undefined", + (void *)0,404); + __retres = 404; + goto return_label; + } + } + } + mem_prim_move((void *)dp,(void const *)sp,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memmove16_s(uint16_t *dest_0, rsize_t dmax, uint16_t const *src, + rsize_t smax) +{ + errno_t __retres; + uint16_t *dp; + uint16_t const *sp; + dp = dest_0; + sp = src; + if (dp == (uint16_t *)0) { + invoke_safe_mem_constraint_handler("memove16_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memove16_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)2) { + invoke_safe_mem_constraint_handler("memove16_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set16(dp,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memove16_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set16(dp,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memove16_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (uint16_t const *)0) { + mem_prim_set16(dp,dmax,(unsigned short)0); + invoke_safe_mem_constraint_handler("memove16_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + mem_prim_move16(dp,sp,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memmove32_s(uint32_t *dest_0, rsize_t dmax, uint32_t const *src, + rsize_t smax) +{ + errno_t __retres; + uint32_t *dp; + uint32_t const *sp; + dp = dest_0; + sp = src; + if (dp == (uint32_t *)0) { + invoke_safe_mem_constraint_handler("memove32_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memove32_s: dest is zero",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("memove32_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set32(dp,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memove32_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set32(dp,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memove32_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (uint32_t const *)0) { + mem_prim_set32(dp,dmax,(unsigned int)0); + invoke_safe_mem_constraint_handler("memove32_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + mem_prim_move32(dp,sp,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memmove_s(void *dest_0, rsize_t dmax, void const *src, rsize_t smax) +{ + errno_t __retres; + uint8_t *dp; + uint8_t const *sp; + dp = (uint8_t *)dest_0; + sp = (uint8_t const *)src; + if (dp == (uint8_t *)0) { + invoke_safe_mem_constraint_handler("memmove_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memmove_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 256UL << 20) { + invoke_safe_mem_constraint_handler("memmove_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memmove_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memmove_s: smax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (uint8_t const *)0) { + mem_prim_set((void *)dp,dmax,(unsigned char)0); + invoke_safe_mem_constraint_handler("memmove_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + mem_prim_move((void *)dp,(void const *)sp,smax); + __retres = 0; + return_label: return __retres; +} + +errno_t memset16_s(uint16_t *dest_0, rsize_t len, uint16_t value) +{ + errno_t __retres; + if (dest_0 == (uint16_t *)0) { + invoke_safe_mem_constraint_handler("memset16_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memset16_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > (256UL << 20) / (unsigned long)2) { + invoke_safe_mem_constraint_handler("memset16_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set16(dest_0,len,value); + __retres = 0; + return_label: return __retres; +} + +errno_t memset32_s(uint32_t *dest_0, rsize_t len, uint32_t value) +{ + errno_t __retres; + if (dest_0 == (uint32_t *)0) { + invoke_safe_mem_constraint_handler("memset32_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memset32_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("memset32_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set32(dest_0,len,value); + __retres = 0; + return_label: return __retres; +} + +errno_t memset_s(void *dest_0, rsize_t len, uint8_t value) +{ + errno_t __retres; + if (dest_0 == (void *)0) { + invoke_safe_mem_constraint_handler("memset_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memset_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > 256UL << 20) { + invoke_safe_mem_constraint_handler("memset_s: len exceeds max",(void *)0, + 403); + __retres = 403; + goto return_label; + } + mem_prim_set(dest_0,len,value); + __retres = 0; + return_label: return __retres; +} + +errno_t memzero16_s(uint16_t *dest_0, rsize_t len) +{ + errno_t __retres; + if (dest_0 == (uint16_t *)0) { + invoke_safe_mem_constraint_handler("memzero16_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memzero16_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > (256UL << 20) / (unsigned long)2) { + invoke_safe_mem_constraint_handler("memzero16_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set16(dest_0,len,(unsigned short)0); + __retres = 0; + return_label: return __retres; +} + +errno_t memzero32_s(uint32_t *dest_0, rsize_t len) +{ + errno_t __retres; + if (dest_0 == (uint32_t *)0) { + invoke_safe_mem_constraint_handler("memzero32_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memzero32_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("memzero32_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set32(dest_0,len,(unsigned int)0); + __retres = 0; + return_label: return __retres; +} + +errno_t memzero_s(void *dest_0, rsize_t len) +{ + errno_t __retres; + if (dest_0 == (void *)0) { + invoke_safe_mem_constraint_handler("memzero_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("memzero_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)len > 256UL << 20) { + invoke_safe_mem_constraint_handler("memzero_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set(dest_0,len,(unsigned char)0); + __retres = 0; + return_label: return __retres; +} + +static void (*mem_handler)(char const *, void *, errno_t ) = + (void (*)(char const *, void *, errno_t ))0; +constraint_handler_t set_mem_constraint_handler_s(void (*handler)(char const *, + void *, + errno_t )) +{ + void (*prev_handler)(char const *, void *, errno_t ) = mem_handler; + if ((void (*)(char const *, void *, errno_t ))0 == handler) mem_handler = & ignore_handler_s; + else mem_handler = handler; + return prev_handler; +} + +void invoke_safe_mem_constraint_handler(char const *msg, void *ptr, + errno_t error) +{ + if ((void (*)(char const *, void *, errno_t ))0 != mem_handler) (*mem_handler) + (msg,ptr, + error); + else ignore_handler_s(msg,ptr,error); + return; +} + +void invoke_safe_str_constraint_handler(char const *msg, void *ptr, + errno_t error); + +__inline static void handle_error(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +static void (*str_handler)(char const *, void *, errno_t ) = + (void (*)(char const *, void *, errno_t ))0; +constraint_handler_t set_str_constraint_handler_s(void (*handler)(char const *, + void *, + errno_t )) +{ + void (*prev_handler)(char const *, void *, errno_t ) = str_handler; + if ((void (*)(char const *, void *, errno_t ))0 == handler) str_handler = & ignore_handler_s; + else str_handler = handler; + return prev_handler; +} + +void invoke_safe_str_constraint_handler(char const *msg, void *ptr, + errno_t error) +{ + if ((void (*)(char const *, void *, errno_t ))0 != str_handler) (*str_handler) + (msg,ptr, + error); + else ignore_handler_s(msg,ptr,error); + return; +} + +__inline static void handle_error_0(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_0(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +int snprintf_s_i(char *dest_0, rsize_t dmax, char const *format, int a); + +int snprintf_s_si(char *dest_0, rsize_t dmax, char const *format, char *s, + int a); + +int snprintf_s_l(char *dest_0, rsize_t dmax, char const *format, long a); + +int snprintf_s_sl(char *dest_0, rsize_t dmax, char const *format, char *s, + long a); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_2(char const * __restrict format, int param0); + +unsigned int parse_format(char const *format, char *pformatList, + unsigned int maxFormats) +{ + unsigned int numFormats = (unsigned int)0; + unsigned int index_0 = (unsigned int)0; + unsigned int start = (unsigned int)0; + char lmod = (char)0; + while (1) { + if ((unsigned long)index_0 < 4UL << 10) + if ((int)*(format + index_0) != '\000') { + if (! (numFormats < maxFormats)) break; + } + else break; + else break; + if ((int)*(format + index_0) == '%') { + start = index_0; + index_0 ++; + ; + switch ((int)*(format + index_0)) { + case '\000': continue; + case '%': continue; + case '#': case '0': case '-': case ' ': case '+': index_0 ++; + break; + } + while (1) { + if ((int)*(format + index_0) != '\000') + if ((int)*(format + index_0) >= '0') { + if (! ((int)*(format + index_0) <= '9')) break; + } + else break; + else break; + index_0 ++; + } + if ((int)*(format + index_0) != '\000') + if ((int)*(format + index_0) == '.') { + index_0 ++; + while (1) { + if ((int)*(format + index_0) != '\000') + if ((int)*(format + index_0) >= '0') { + if (! ((int)*(format + index_0) <= '9')) break; + } + else break; + else break; + index_0 ++; + } + } + lmod = (char)' '; + switch ((int)*(format + index_0)) { + case 'h': { /* sequence */ + index_0 ++; + ; + } + if ((int)*(format + index_0) == 'h') { + index_0 ++; + lmod = (char)'H'; + } + else lmod = (char)'h'; + break; + case 'l': { /* sequence */ + index_0 ++; + ; + } + if ((int)*(format + index_0) == 'l') { + index_0 ++; + lmod = (char)'d'; + } + else lmod = (char)'l'; + break; + case 'L': lmod = (char)'L'; + break; + case 'j': case 'z': case 't': index_0 ++; + break; + } + switch ((int)*(format + index_0)) { + case 'c': ; + if ((int)lmod == 'l') *(pformatList + numFormats) = (char)'C'; + else *(pformatList + numFormats) = (char)'c'; + numFormats ++; + index_0 ++; + break; + case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': ; + if ((int)lmod == 'H') *(pformatList + numFormats) = (char)'c'; + else + if ((int)lmod == 'l') *(pformatList + numFormats) = (char)'l'; + else + if ((int)lmod == 'h') *(pformatList + numFormats) = (char)'h'; + else *(pformatList + numFormats) = (char)'d'; + numFormats ++; + index_0 ++; + break; + case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': case 'a': + case 'A': + ; + if ((int)lmod == 'L') *(pformatList + numFormats) = (char)'G'; + else *(pformatList + numFormats) = (char)'g'; + numFormats ++; + index_0 ++; + break; + case 's': ; + if ((int)lmod == 'l') goto _LOR; + else + if ((int)lmod == 'L') _LOR: + *(pformatList + numFormats) = (char)'S'; + else *(pformatList + numFormats) = (char)'s'; + numFormats ++; + index_0 ++; + break; + case 'p': *(pformatList + numFormats) = (char)'p'; + numFormats ++; + index_0 ++; + break; + case 'n': ; + if ((int)lmod == 'H') *(pformatList + numFormats) = (char)'1'; + else + if ((int)lmod == 'l') *(pformatList + numFormats) = (char)'4'; + else + if ((int)lmod == 'h') *(pformatList + numFormats) = (char)'2'; + else *(pformatList + numFormats) = (char)'3'; + numFormats ++; + index_0 ++; + break; + case 'm': index_0 ++; + continue; + default: printf_va_1("failed to recognize format string ["); + while (start < index_0) { + printf_va_2("%c",(int)*(format + start)); + start ++; + } + puts("]"); + break; + } + } + else index_0 ++; + } + return numFormats; +} + +unsigned int check_integer_format(char const format) +{ + unsigned int retValue = (unsigned int)0; + switch ((int)format) { + case 'c': case 'h': case 'd': retValue = (unsigned int)1; + break; + } + return retValue; +} + +int snprintf_s_i(char *dest_0, rsize_t dmax, char const *format, int a) +{ + int __retres; + char pformatList[16]; + unsigned int tmp_0; + int tmp_1; + unsigned int index_0 = (unsigned int)0; + unsigned int nfo = parse_format(format,pformatList,(unsigned int)16); + if (nfo != (unsigned int)1) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 410; + goto return_label; + } + tmp_0 = check_integer_format(pformatList[index_0]); + if (tmp_0 == (unsigned int)0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + { + int __va_arg0 = a; + void *__va_args[1] = {& __va_arg0}; + tmp_1 = snprintf(dest_0,dmax,format,(void * const *)(__va_args)); + } + __retres = tmp_1; + return_label: return __retres; +} + +int snprintf_s_l(char *dest_0, rsize_t dmax, char const *format, long a) +{ + int __retres; + char pformatList[16]; + int tmp_0; + int tmp_1; + unsigned int index_0 = (unsigned int)0; + unsigned int nfo = parse_format(format,pformatList,(unsigned int)16); + if (nfo != (unsigned int)1) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 410; + goto return_label; + } + if ('l' == (int)pformatList[index_0]) tmp_0 = 1; else tmp_0 = 0; + if (tmp_0 == 0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + { + long __va_arg0 = a; + void *__va_args[1] = {& __va_arg0}; + tmp_1 = snprintf(dest_0,dmax,format,(void * const *)(__va_args)); + } + __retres = tmp_1; + return_label: return __retres; +} + +int snprintf_s_si(char *dest_0, rsize_t dmax, char const *format, char *s, + int a) +{ + int __retres; + char pformatList[16]; + int tmp_0; + unsigned int tmp_1; + int tmp_2; + unsigned int index_0 = (unsigned int)0; + unsigned int nfo = parse_format(format,pformatList,(unsigned int)16); + if (nfo != (unsigned int)2) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 410; + goto return_label; + } + if ('s' == (int)pformatList[index_0]) tmp_0 = 1; else tmp_0 = 0; + if (tmp_0 == 0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + tmp_1 = check_integer_format(pformatList[index_0]); + if (tmp_1 == (unsigned int)0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + { + char *__va_arg0 = s; + int __va_arg1 = a; + void *__va_args[2] = {& __va_arg0, & __va_arg1}; + tmp_2 = snprintf(dest_0,dmax,format,(void * const *)(__va_args)); + } + __retres = tmp_2; + return_label: return __retres; +} + +int snprintf_s_sl(char *dest_0, rsize_t dmax, char const *format, char *s, + long a) +{ + int __retres; + char pformatList[16]; + int tmp_0; + int tmp_1; + int tmp_2; + unsigned int index_0 = (unsigned int)0; + unsigned int nfo = parse_format(format,pformatList,(unsigned int)16); + if (nfo != (unsigned int)2) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 410; + goto return_label; + } + if ('s' == (int)pformatList[index_0]) tmp_0 = 1; else tmp_0 = 0; + if (tmp_0 == 0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + if ('l' == (int)pformatList[index_0]) tmp_1 = 1; else tmp_1 = 0; + if (tmp_1 == 0) { + *(dest_0 + 0) = (char)'\000'; + __retres = -1 * 411; + goto return_label; + } + index_0 ++; + { + char *__va_arg0 = s; + long __va_arg1 = a; + void *__va_args[2] = {& __va_arg0, & __va_arg1}; + tmp_2 = snprintf(dest_0,dmax,format,(void * const *)(__va_args)); + } + __retres = tmp_2; + return_label: return __retres; +} + +__inline static void handle_error_1(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_1(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +char *stpcpy_s(char *dest_0, rsize_t dmax, char const *src, errno_t *err) +{ + char *__retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("stpcpy_s: dest is null",(void *)0, + 400); + *err = 400; + __retres = (char *)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("stpcpy_s: dmax is 0",(void *)0,401); + *err = 401; + __retres = (char *)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("stpcpy_s: dmax exceeds max", + (void *)0,403); + *err = 403; + __retres = (char *)0; + goto return_label; + } + if (src == (char const *)0) { + *dest_0 = (char)'\000'; + invoke_safe_str_constraint_handler("stpcpy_s: src is null",(void *)0,400); + *err = 400; + __retres = (char *)0; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 == (void *)src) { + while (dmax > (rsize_t)0) { + if ((int)*dest_0 == '\000') { + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + } + handle_error_1(orig_dest,orig_dmax, + (char *)"stpcpy_s: not enough space for src",406); + *err = 406; + __retres = (char *)0; + goto return_label; + } + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_1(orig_dest,orig_dmax, + (char *)"stpcpy_s: overlapping objects",404); + *err = 404; + __retres = (char *)0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (char const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_error_1(orig_dest,orig_dmax, + (char *)"stpcpy_s: overlapping objects",404); + *err = 404; + __retres = (char *)0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_error_1(orig_dest,orig_dmax, + (char *)"stpcpy_s: not enough space for src",406); + *err = 406; + __retres = (char *)0; + return_label: return __retres; +} + +__inline static void handle_error_2(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_2(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +char *stpncpy_s(char *dest_0, rsize_t dmax, char const *src, rsize_t smax, + errno_t *err) +{ + char *__retres; + rsize_t orig_dmax; + char *orig_dest; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("stpncpy_s: dest is null",(void *)0, + 400); + *err = 400; + __retres = (char *)0; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("stpncpy_s: src is null",(void *)0, + 400); + *err = 400; + *(dest_0 + 0) = (char)'\000'; + __retres = (char *)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax is 0",(void *)0,401); + *err = 401; + __retres = (char *)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax exceeds max", + (void *)0,403); + *err = 403; + __retres = (char *)0; + goto return_label; + } + if ((unsigned long)smax > 4UL << 10) { + invoke_safe_str_constraint_handler("stpncpy_s: smax exceeds max", + (void *)0,403); + *err = 403; + __retres = (char *)0; + goto return_label; + } + if (dmax < smax + (rsize_t)1) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax too short for smax", + (void *)0,406); + *err = 406; + *(dest_0 + 0) = (char)'\000'; + __retres = (char *)0; + goto return_label; + } + if ((void *)src < (void *)dest_0) + if ((void *)(src + smax) >= (void *)dest_0) { + invoke_safe_str_constraint_handler("stpncpy_s: src+smax overlaps into dest", + (void *)0,404); + *err = 404; + *(dest_0 + 0) = (char)'\000'; + __retres = (char *)0; + goto return_label; + } + if ((void *)dest_0 < (void *)src) + if ((void *)(dest_0 + smax) >= (void *)src) { + invoke_safe_str_constraint_handler("stpncpy_s: dest+smax overlaps into src", + (void *)0,404); + *err = 404; + *(dest_0 + 0) = (char)'\000'; + __retres = (char *)0; + goto return_label; + } + if (src == (char const *)0) { + *dest_0 = (char)'\000'; + invoke_safe_str_constraint_handler("stpncpy_s: src is null",(void *)0, + 400); + *err = 400; + __retres = (char *)0; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 == (void *)src) { + while (dmax > (rsize_t)0) { + if ((int)*dest_0 == '\000') { + char *filler = dest_0; + while (smax) { + *filler = (char)'\000'; + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + filler ++; + } + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + smax -= (rsize_t)1; + if (smax == (rsize_t)0) *dest_0 = (char)'\000'; + } + handle_error_2(orig_dest,orig_dmax, + (char *)"stpncpy_s: not enough space for src",406); + *err = 406; + __retres = (char *)0; + goto return_label; + } + while (dmax > (rsize_t)0) { + *dest_0 = *src; + if (smax == (rsize_t)0) *dest_0 = (char)'\000'; + if ((int)*dest_0 == '\000') { + char *filler_0 = dest_0; + while (smax) { + *filler_0 = (char)'\000'; + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + filler_0 ++; + } + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + dest_0 ++; + src ++; + } + handle_error_2(orig_dest,orig_dmax, + (char *)"stpncpy_s: not enough space for src",406); + *err = 406; + __retres = (char *)0; + return_label: return __retres; +} + +__inline static void handle_error_3(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_3(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcasecmp_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator) +{ + errno_t __retres; + int tmp_1; + int tmp_2; + unsigned char const *udest = (unsigned char const *)dest_0; + unsigned char const *usrc = (unsigned char const *)src; + if (indicator == (int *)0) { + invoke_safe_str_constraint_handler("strcasecmp_s: indicator is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *indicator = 0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strcasecmp_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcasecmp_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcasecmp_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcasecmp_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*udest) + if (*usrc) { + if (! dmax) break; + } + else break; + else break; + { + int tmp; + int tmp_0; + tmp = toupper((int)*udest); + tmp_0 = toupper((int)*usrc); + if (tmp != tmp_0) break; + udest ++; + usrc ++; + dmax -= (rsize_t)1; + } + } + tmp_1 = toupper((int)*udest); + tmp_2 = toupper((int)*usrc); + *indicator = tmp_1 - tmp_2; + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_4(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_4(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcasestr_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen, char **substring) +{ + errno_t __retres; + rsize_t len; + rsize_t dlen; + int i; + if (substring == (char **)0) { + invoke_safe_str_constraint_handler("strcasestr_s: substring is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *substring = (char *)0; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcasestr_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcasestr_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcasestr_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcasestr_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcasestr_s: slen is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strcasestr_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if ((int)*src == '\000') goto _LOR; + else + if ((void *)dest_0 == (void *)src) { + _LOR: { + *substring = dest_0; + __retres = 0; + goto return_label; + } + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + i = 0; + len = slen; + dlen = dmax; + while (1) { + if (*(dest_0 + i)) { + if (! dlen) break; + } + else break; + { + int tmp; + int tmp_0; + tmp = toupper((int)*(dest_0 + i)); + tmp_0 = toupper((int)*(src + i)); + if (tmp != tmp_0) break; + i ++; + len -= (rsize_t)1; + dlen -= (rsize_t)1; + if ((int)*(src + i) == '\000') goto _LOR_0; + else + if (! len) { + _LOR_0: { + *substring = dest_0; + __retres = 0; + goto return_label; + } + } + } + } + dest_0 ++; + dmax -= (rsize_t)1; + } + *substring = (char *)0; + __retres = 409; + return_label: return __retres; +} + +__inline static void handle_error_5(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_5(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcat_s(char *dest_0, rsize_t dmax, char const *src) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcat_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcat_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcat_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcat_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while ((int)*dest_0 != '\000') { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (char const *)dest_0; + while ((int)*dest_0 != '\000') { + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_error_5(orig_dest,orig_dmax, + (char *)"strcat_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_6(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_6(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcmp_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator) +{ + errno_t __retres; + if (indicator == (int *)0) { + invoke_safe_str_constraint_handler("strcmp_s: indicator is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *indicator = 0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strcmp_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcmp_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcmp_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcmp_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) + if (*src) { + if (! dmax) break; + } + else break; + else break; + if ((int)*dest_0 != (int)*src) break; + dest_0 ++; + src ++; + dmax -= (rsize_t)1; + } + *indicator = (int)*dest_0 - (int)*src; + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_7(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_7(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcmpfld_s(char const *dest_0, rsize_t dmax, char const *src, + int *indicator) +{ + errno_t __retres; + if (indicator == (int *)0) { + invoke_safe_str_constraint_handler("strcmpfld_s: indicator is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *indicator = 0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strcmpfld_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcmpfld_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcmpfld_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcmpfld_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (dmax) { + if ((int)*dest_0 != (int)*src) break; + dest_0 ++; + src ++; + dmax -= (rsize_t)1; + } + *indicator = (int)*dest_0 - (int)*src; + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_8(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_8(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcpy_s(char *dest_0, rsize_t dmax, char const *src) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcpy_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + *dest_0 = (char)'\000'; + invoke_safe_str_constraint_handler("strcpy_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if ((void *)dest_0 == (void *)src) { + __retres = 0; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_8(orig_dest,orig_dmax, + (char *)"strcpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (char const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_error_8(orig_dest,orig_dmax, + (char *)"strcpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_error_8(orig_dest,orig_dmax, + (char *)"strcpy_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_9(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_9(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcpyfld_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcpyfld_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcpyfld_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcpyfld_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfld_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfld_s: slen is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if (slen > dmax) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfld_s: src exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (slen > (rsize_t)0) { + char *tmp; + char const *tmp_0; + if ((void *)dest_0 == (void *)overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfld_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + tmp = dest_0; + dest_0 ++; + tmp_0 = src; + src ++; + *tmp = *tmp_0; + slen -= (rsize_t)1; + dmax -= (rsize_t)1; + } + } + else { + overlap_bumper = (char const *)dest_0; + while (slen > (rsize_t)0) { + char *tmp_1; + char const *tmp_2; + if (src == overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfld_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + tmp_1 = dest_0; + dest_0 ++; + tmp_2 = src; + src ++; + *tmp_1 = *tmp_2; + slen -= (rsize_t)1; + dmax -= (rsize_t)1; + } + } + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_10(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_10(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcpyfldin_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldin_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldin_s: slen is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if (slen > dmax) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldin_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (1) { + if (dmax > (rsize_t)0) { + if (! *src) break; + } + else break; + { + char *tmp; + char const *tmp_0; + if ((void *)dest_0 == (void *)overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldin_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + dmax -= (rsize_t)1; + tmp = dest_0; + dest_0 ++; + tmp_0 = src; + src ++; + *tmp = *tmp_0; + } + } + } + else { + overlap_bumper = (char const *)dest_0; + while (1) { + if (dmax > (rsize_t)0) { + if (! *src) break; + } + else break; + { + char *tmp_1; + char const *tmp_2; + if (src == overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldin_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + dmax -= (rsize_t)1; + tmp_1 = dest_0; + dest_0 ++; + tmp_2 = src; + src ++; + *tmp_1 = *tmp_2; + } + } + } + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_11(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_11(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcpyfldout_s(char *dest_0, rsize_t dmax, char const *src, + rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldout_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldout_s: slen is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if (slen > dmax) { + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldout_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (1) { + if (dmax > (rsize_t)1) { + if (! slen) break; + } + else break; + { + char *tmp; + char const *tmp_0; + if ((void *)dest_0 == (void *)overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldout_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + tmp = dest_0; + dest_0 ++; + tmp_0 = src; + src ++; + *tmp = *tmp_0; + } + } + } + else { + overlap_bumper = (char const *)dest_0; + while (1) { + if (dmax > (rsize_t)1) { + if (! slen) break; + } + else break; + { + char *tmp_1; + char const *tmp_2; + if (src == overlap_bumper) { + dmax = orig_dmax; + dest_0 = orig_dest; + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + invoke_safe_str_constraint_handler("strcpyfldout_s: overlapping objects", + (void *)0,404); + __retres = 404; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + tmp_1 = dest_0; + dest_0 ++; + tmp_2 = src; + src ++; + *tmp_1 = *tmp_2; + } + } + } + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_12(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_12(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strcspn_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t slen, rsize_t *count) +{ + errno_t __retres; + char const *scan2; + rsize_t smax; + if (count == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strcspn_s: count is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *count = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strcspn_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strcspn_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcspn_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strcspn_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (slen == (rsize_t)0) { + invoke_safe_str_constraint_handler("strcspn_s: slen is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strcspn_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + smax = slen; + scan2 = src; + while (1) { + if (*scan2) { + if (! smax) break; + } + else break; + if ((int)*dest_0 == (int)*scan2) { + __retres = 0; + goto return_label; + } + scan2 ++; + smax -= (rsize_t)1; + } + *count += (rsize_t)1; + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_13(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_13(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strfirstchar_s(char *dest_0, rsize_t dmax, char c, char **first) +{ + errno_t __retres; + if (first == (char **)0) { + invoke_safe_str_constraint_handler("strfirstchar_s: index is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *first = (char *)0; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strfirstchar_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strfirstchar_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strfirstchar_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 == (int)c) { + *first = dest_0; + __retres = 0; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 409; + return_label: return __retres; +} + +__inline static void handle_error_14(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_14(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strfirstdiff_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0) +{ + errno_t __retres; + char const *rp; + if (index_0 == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strfirstdiff_s: index is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *index_0 = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strfirstdiff_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + rp = dest_0; + while (1) { + if (*dest_0) + if (*src) { + if (! dmax) break; + } + else break; + else break; + if ((int)*dest_0 != (int)*src) { + *index_0 = (unsigned int)(dest_0 - rp); + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + __retres = 408; + return_label: return __retres; +} + +__inline static void handle_error_15(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_15(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strfirstsame_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0) +{ + errno_t __retres; + char const *rp = (char const *)0; + if (index_0 == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strfirstsame_s: index is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *index_0 = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strfirstsame_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strfirstsame_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strfirstsame_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strfirstsame_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + rp = dest_0; + while (1) { + if (*dest_0) + if (*src) { + if (! dmax) break; + } + else break; + else break; + if ((int)*dest_0 == (int)*src) { + *index_0 = (unsigned int)(dest_0 - rp); + __retres = 0; + goto return_label; + } + dest_0 ++; + src ++; + dmax -= (rsize_t)1; + } + __retres = 409; + return_label: return __retres; +} + +__inline static void handle_error_16(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_16(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strisalphanumeric_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: dmax is 0", + (void *)0,401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 >= '0') { + if ((int)*dest_0 <= '9') goto _LOR; else goto _LAND_1; + } + else { + _LAND_1: ; + if ((int)*dest_0 >= 'a') { + if ((int)*dest_0 <= 'z') goto _LOR; else goto _LAND_0; + } + else { + _LAND_0: ; + if ((int)*dest_0 >= 'A') { + if ((int)*dest_0 <= 'Z') { + _LOR: { + dest_0 ++; + dmax -= (rsize_t)1; + } + } + else goto _LAND; + } + else { + _LAND: { + __retres = (_Bool)0; + goto return_label; + } + } + } + } + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_17(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_17(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strisascii_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strisascii_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strisascii_s: dmax is 0",(void *)0, + 401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strisascii_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)((unsigned char)*dest_0) > 127) { + __retres = (_Bool)0; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_18(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_18(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strisdigit_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strisdigit_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strisdigit_s: dmax is 0",(void *)0, + 401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strisdigit_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (*dest_0) { + if ((int)*dest_0 < '0') goto _LOR; + else + if ((int)*dest_0 > '9') { + _LOR: { + __retres = (_Bool)0; + goto return_label; + } + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_19(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_19(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strishex_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strishex_s: dest is null",(void *)0, + 400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strishex_s: dmax is 0",(void *)0,401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strishex_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 >= '0') { + if ((int)*dest_0 <= '9') goto _LOR; else goto _LAND_1; + } + else { + _LAND_1: ; + if ((int)*dest_0 >= 'a') { + if ((int)*dest_0 <= 'f') goto _LOR; else goto _LAND_0; + } + else { + _LAND_0: ; + if ((int)*dest_0 >= 'A') { + if ((int)*dest_0 <= 'F') { + _LOR: { + dest_0 ++; + dmax -= (rsize_t)1; + } + } + else goto _LAND; + } + else { + _LAND: { + __retres = (_Bool)0; + goto return_label; + } + } + } + } + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_20(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_20(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strislowercase_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strislowercase_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strislowercase_s: dmax is 0", + (void *)0,401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strislowercase_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 < 'a') goto _LOR; + else + if ((int)*dest_0 > 'z') { + _LOR: { + __retres = (_Bool)0; + goto return_label; + } + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_21(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_21(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strismixedcase_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strismixedcase_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strismixedcase_s: dmax is 0", + (void *)0,401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strismixedcase_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (*dest_0) + if ((int)*dest_0 >= 'a') { + if ((int)*dest_0 <= 'z') goto _LOR; else goto _LAND_0; + } + else { + _LAND_0: ; + if ((int)*dest_0 >= 'A') { + if ((int)*dest_0 <= 'Z') { + _LOR: { + dest_0 ++; + dmax -= (rsize_t)1; + } + } + else goto _LAND; + } + else { + _LAND: { + __retres = (_Bool)0; + goto return_label; + } + } + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_22(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_22(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strispassword_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + uint32_t cnt_all; + uint32_t cnt_lowercase; + uint32_t cnt_uppercase; + uint32_t cnt_numbers; + uint32_t cnt_specials; + if (! dest_0) { + invoke_safe_str_constraint_handler("strispassword_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax < (rsize_t)6) { + invoke_safe_str_constraint_handler("strispassword_s: dest is too short", + (void *)0,402); + __retres = (_Bool)0; + goto return_label; + } + if (dmax > (rsize_t)32) { + invoke_safe_str_constraint_handler("strispassword_s: dest exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + cnt_uppercase = (unsigned int)0; + cnt_lowercase = cnt_uppercase; + cnt_all = cnt_lowercase; + cnt_specials = (unsigned int)0; + cnt_numbers = cnt_specials; + while (*dest_0) { + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strispassword_s: dest is unterminated", + (void *)0,407); + __retres = (_Bool)0; + goto return_label; + } + dmax -= (rsize_t)1; + cnt_all += (uint32_t)1; + if ((int)*dest_0 >= '0') { + if ((int)*dest_0 <= '9') cnt_numbers += (uint32_t)1; else goto _LAND_6; + } + else { + _LAND_6: ; + if ((int)*dest_0 >= 'a') { + if ((int)*dest_0 <= 'z') cnt_lowercase += (uint32_t)1; + else goto _LAND_5; + } + else { + _LAND_5: ; + if ((int)*dest_0 >= 'A') { + if ((int)*dest_0 <= 'Z') cnt_uppercase += (uint32_t)1; + else goto _LAND_4; + } + else { + _LAND_4: ; + if ((int)*dest_0 >= 33) { + if ((int)*dest_0 <= 47) cnt_specials += (uint32_t)1; + else goto _LAND_3; + } + else { + _LAND_3: ; + if ((int)*dest_0 >= 58) { + if ((int)*dest_0 <= 64) cnt_specials += (uint32_t)1; + else goto _LAND_2; + } + else { + _LAND_2: ; + if ((int)*dest_0 >= 91) { + if ((int)*dest_0 <= 94) cnt_specials += (uint32_t)1; + else goto _LAND_1; + } + else { + _LAND_1: ; + if ((int)*dest_0 >= 95) { + if ((int)*dest_0 <= 96) cnt_specials += (uint32_t)1; + else goto _LAND_0; + } + else { + _LAND_0: ; + if ((int)*dest_0 >= 123) { + if ((int)*dest_0 <= 126) cnt_specials += (uint32_t)1; + else goto _LAND; + } + else { + _LAND: { + __retres = (_Bool)0; + goto return_label; + } + } + } + } + } + } + } + } + } + dest_0 ++; + } + if (cnt_all < (uint32_t)32) { + if (cnt_numbers >= (uint32_t)1) { + if (cnt_lowercase >= (uint32_t)2) { + if (cnt_uppercase >= (uint32_t)2) { + if (cnt_specials >= (uint32_t)1) { + __retres = (_Bool)1; + goto return_label; + } + else goto _LAND_10; + } + else goto _LAND_10; + } + else goto _LAND_10; + } + else goto _LAND_10; + } + else { + _LAND_10: { + __retres = (_Bool)0; + goto return_label; + } + } + return_label: return __retres; +} + +__inline static void handle_error_23(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_23(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +_Bool strisuppercase_s(char const *dest_0, rsize_t dmax) +{ + _Bool __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strisuppercase_s: dest is null", + (void *)0,400); + __retres = (_Bool)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strisuppercase_s: dmax is 0", + (void *)0,401); + __retres = (_Bool)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strisuppercase_s: dmax exceeds max", + (void *)0,403); + __retres = (_Bool)0; + goto return_label; + } + if ((int)*dest_0 == '\000') { + __retres = (_Bool)0; + goto return_label; + } + while (*dest_0) { + if ((int)*dest_0 < 'A') goto _LOR; + else + if ((int)*dest_0 > 'Z') { + _LOR: { + __retres = (_Bool)0; + goto return_label; + } + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = (_Bool)1; + return_label: return __retres; +} + +__inline static void handle_error_24(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_24(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strlastchar_s(char *dest_0, rsize_t dmax, char c, char **last) +{ + errno_t __retres; + if (last == (char **)0) { + invoke_safe_str_constraint_handler("strlastchar_s: last is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *last = (char *)0; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strlastchar_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strlastchar_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strlastchar_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 == (int)c) *last = dest_0; + dest_0 ++; + dmax -= (rsize_t)1; + } + if (*last == (char *)0) { + __retres = 409; + goto return_label; + } + else { + __retres = 0; + goto return_label; + } + return_label: return __retres; +} + +__inline static void handle_error_25(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_25(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strlastdiff_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0) +{ + errno_t __retres; + char const *rp; + _Bool there_is_a_diff = (_Bool)0; + if (index_0 == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strlastdiff_s: index is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *index_0 = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strlastdiff_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strlastdiff_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strlastdiff_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strlastdiff_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + rp = dest_0; + while (1) { + if (*dest_0) + if (*src) { + if (! dmax) break; + } + else break; + else break; + if ((int)*dest_0 != (int)*src) { + there_is_a_diff = (_Bool)1; + *index_0 = (unsigned int)(dest_0 - rp); + } + dest_0 ++; + src ++; + dmax -= (rsize_t)1; + } + if (there_is_a_diff) { + __retres = 0; + goto return_label; + } + else { + __retres = 408; + goto return_label; + } + return_label: return __retres; +} + +__inline static void handle_error_26(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_26(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strlastsame_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t *index_0) +{ + errno_t __retres; + char const *rp; + _Bool similarity; + if (index_0 == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strlastsame_s: index is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *index_0 = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strlastsame_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strlastsame_s: src is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strlastsame_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strlastsame_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + rp = dest_0; + similarity = (_Bool)0; + while (1) { + if (*dest_0) + if (*src) { + if (! dmax) break; + } + else break; + else break; + if ((int)*dest_0 == (int)*src) { + similarity = (_Bool)1; + *index_0 = (unsigned int)(dest_0 - rp); + } + dest_0 ++; + src ++; + dmax -= (rsize_t)1; + } + if (similarity) { + __retres = 0; + goto return_label; + } + else { + __retres = 409; + goto return_label; + } + return_label: return __retres; +} + +__inline static void handle_error_27(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_27(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strljustify_s(char *dest_0, rsize_t dmax) +{ + errno_t __retres; + char *orig_dest; + rsize_t orig_dmax; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strljustify_s_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strljustify_s_s: dmax is 0", + (void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strljustify_s_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if ((int)*dest_0 == '\000') goto _LOR; + else + if (dmax <= (rsize_t)1) { + _LOR: { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + } + orig_dmax = dmax; + orig_dest = dest_0; + while (*dest_0) { + if (dmax == (rsize_t)0) { + while (orig_dmax) { + char *tmp; + tmp = orig_dest; + orig_dest ++; + *tmp = (char)'\000'; + orig_dmax -= (rsize_t)1; + } + invoke_safe_str_constraint_handler("strljustify_s: dest is unterminated", + (void *)0,407); + __retres = 407; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + } + dest_0 = orig_dest; + while (1) { + if (! ((int)*dest_0 == ' ')) + if (! ((int)*dest_0 == '\t')) break; + dest_0 ++; + } + if (orig_dest != dest_0) + if (*dest_0) { + while (*dest_0) { + char *tmp_0; + char *tmp_1; + tmp_0 = orig_dest; + orig_dest ++; + *tmp_0 = *dest_0; + tmp_1 = dest_0; + dest_0 ++; + *tmp_1 = (char)' '; + } + *orig_dest = (char)'\000'; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_28(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_28(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strncat_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strncat_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strncat_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strncat_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strncat_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strncat_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while ((int)*dest_0 != '\000') { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (char const *)dest_0; + while ((int)*dest_0 != '\000') { + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_error_28(orig_dest,orig_dmax, + (char *)"strncat_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_29(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_29(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strncpy_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + char *orig_dest; + char const *overlap_bumper; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strncpy_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strncpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strncpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if (src == (char const *)0) { + handle_error_29(orig_dest,orig_dmax,(char *)"strncpy_s: src is null",400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + handle_error_29(orig_dest,orig_dmax,(char *)"strncpy_s: slen is zero", + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + handle_error_29(orig_dest,orig_dmax, + (char *)"strncpy_s: slen exceeds max",403); + __retres = 403; + goto return_label; + } + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_error_29(orig_dest,orig_dmax, + (char *)"strncpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (char const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_error_29(orig_dest,orig_dmax, + (char *)"strncpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if ((int)*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_error_29(orig_dest,orig_dmax, + (char *)"strncpy_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_30(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_30(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +rsize_t strnlen_s(char const *dest_0, rsize_t dmax) +{ + rsize_t __retres; + rsize_t count; + if (dest_0 == (char const *)0) { + __retres = (unsigned int)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strnlen_s: dmax is 0",(void *)0,401); + __retres = (unsigned int)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strnlen_s: dmax exceeds max", + (void *)0,403); + __retres = (unsigned int)0; + goto return_label; + } + count = (unsigned int)0; + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + count += (rsize_t)1; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = count; + return_label: return __retres; +} + +__inline static void handle_error_31(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_31(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +rsize_t strnterminate_s(char *dest_0, rsize_t dmax) +{ + rsize_t __retres; + rsize_t count; + if (dest_0 == (char *)0) { + __retres = (unsigned int)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strnterminate_s: dmax is 0", + (void *)0,401); + __retres = (unsigned int)0; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strnterminate_s: dmax exceeds max", + (void *)0,403); + __retres = (unsigned int)0; + goto return_label; + } + count = (unsigned int)0; + while (dmax > (rsize_t)1) + if (*dest_0) { + count += (rsize_t)1; + dmax -= (rsize_t)1; + dest_0 ++; + } + else break; + *dest_0 = (char)'\000'; + __retres = count; + return_label: return __retres; +} + +__inline static void handle_error_32(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_32(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strpbrk_s(char *dest_0, rsize_t dmax, char *src, rsize_t slen, + char **first) +{ + errno_t __retres; + char *ps; + rsize_t len; + if (first == (char **)0) { + invoke_safe_str_constraint_handler("strpbrk_s: count is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *first = (char *)0; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strpbrk_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char *)0) { + invoke_safe_str_constraint_handler("strpbrk_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strpbrk_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strpbrk_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (slen == (rsize_t)0) { + invoke_safe_str_constraint_handler("strpbrk_s: slen is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strpbrk_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + ps = src; + len = slen; + while (*ps) { + if ((int)*dest_0 == (int)*ps) { + *first = dest_0; + __retres = 0; + goto return_label; + } + ps ++; + len -= (rsize_t)1; + } + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 409; + return_label: return __retres; +} + +__inline static void handle_error_33(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_33(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strprefix_s(char const *dest_0, rsize_t dmax, char const *src) +{ + errno_t __retres; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strprefix_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strprefix_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strprefix_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strprefix_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if ((int)*src == '\000') { + __retres = 409; + goto return_label; + } + while (1) { + if (*src) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 != (int)*src) { + __retres = 409; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_34(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_34(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strremovews_s(char *dest_0, rsize_t dmax) +{ + errno_t __retres; + char *orig_dest; + char *orig_end; + rsize_t orig_dmax; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strremovews_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strremovews_s: dmax is 0",(void *)0, + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strremovews_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if ((int)*dest_0 == '\000') goto _LOR; + else + if (dmax <= (rsize_t)1) { + _LOR: { + *dest_0 = (char)'\000'; + __retres = 0; + goto return_label; + } + } + orig_dest = dest_0; + orig_dmax = dmax; + while (*dest_0) { + if (dmax == (rsize_t)0) { + while (orig_dmax) { + char *tmp; + tmp = orig_dest; + orig_dest ++; + *tmp = (char)'\000'; + orig_dmax -= (rsize_t)1; + } + invoke_safe_str_constraint_handler("strremovews_s: dest is unterminated", + (void *)0,407); + __retres = 407; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + } + orig_end = dest_0 - 1; + dest_0 = orig_dest; + while (1) { + if (! ((int)*dest_0 == ' ')) + if (! ((int)*dest_0 == '\t')) break; + dest_0 ++; + } + if (orig_dest != dest_0) + if (*dest_0) { + while (*dest_0) { + char *tmp_0; + char *tmp_1; + tmp_0 = orig_dest; + orig_dest ++; + *tmp_0 = *dest_0; + tmp_1 = dest_0; + dest_0 ++; + *tmp_1 = (char)' '; + } + *dest_0 = (char)'\000'; + } + dest_0 = orig_end; + while (1) { + if (! ((int)*dest_0 == ' ')) + if (! ((int)*dest_0 == '\t')) break; + *dest_0 = (char)'\000'; + dest_0 --; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_35(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_35(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strspn_s(char const *dest_0, rsize_t dmax, char const *src, + rsize_t slen, rsize_t *count) +{ + errno_t __retres; + char const *scan2; + rsize_t smax; + _Bool match_found; + if (count == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strspn_s: count is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *count = (unsigned int)0; + if (dest_0 == (char const *)0) { + invoke_safe_str_constraint_handler("strspn_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strspn_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strspn_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strspn_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (slen == (rsize_t)0) { + invoke_safe_str_constraint_handler("strspn_s: slen is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strspn_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + match_found = (_Bool)0; + smax = slen; + scan2 = src; + while (1) { + if (*scan2) { + if (! smax) break; + } + else break; + if ((int)*dest_0 == (int)*scan2) { + match_found = (_Bool)1; + break; + } + scan2 ++; + smax -= (rsize_t)1; + } + if (match_found) *count += (rsize_t)1; else break; + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_36(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_36(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strstr_s(char *dest_0, rsize_t dmax, char const *src, rsize_t slen, + char **substring) +{ + errno_t __retres; + rsize_t len; + rsize_t dlen; + int i; + if (substring == (char **)0) { + invoke_safe_str_constraint_handler("strstr_s: substring is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + *substring = (char *)0; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strstr_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strstr_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strstr_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strstr_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + invoke_safe_str_constraint_handler("strstr_s: slen is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)slen > 4UL << 10) { + invoke_safe_str_constraint_handler("strstr_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if ((int)*src == '\000') goto _LOR; + else + if ((void *)dest_0 == (void *)src) { + _LOR: { + *substring = dest_0; + __retres = 0; + goto return_label; + } + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + i = 0; + len = slen; + dlen = dmax; + while (1) { + if (*(src + i)) { + if (! dlen) break; + } + else break; + if ((int)*(dest_0 + i) != (int)*(src + i)) break; + i ++; + len -= (rsize_t)1; + dlen -= (rsize_t)1; + if ((int)*(src + i) == '\000') goto _LOR_0; + else + if (! len) { + _LOR_0: { + *substring = dest_0; + __retres = 0; + goto return_label; + } + } + } + dest_0 ++; + dmax -= (rsize_t)1; + } + *substring = (char *)0; + __retres = 409; + return_label: return __retres; +} + +__inline static void handle_error_37(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_37(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +char *strtok_s(char *dest_0, rsize_t *dmax, char const *src, char **ptr) +{ + char *__retres; + char const *pt; + char *ptoken; + rsize_t dlen; + rsize_t slen; + if (dmax == (rsize_t *)0) { + invoke_safe_str_constraint_handler("strtok_s: dmax is NULL",(void *)0, + 400); + __retres = (char *)0; + goto return_label; + } + if (*dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strtok_s: dmax is 0",(void *)0,401); + __retres = (char *)0; + goto return_label; + } + if ((unsigned long)*dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strtok_s: dmax exceeds max", + (void *)0,403); + __retres = (char *)0; + goto return_label; + } + if (src == (char const *)0) { + invoke_safe_str_constraint_handler("strtok_s: src is null",(void *)0,400); + __retres = (char *)0; + goto return_label; + } + if (ptr == (char **)0) { + invoke_safe_str_constraint_handler("strtok_s: ptr is null",(void *)0,400); + __retres = (char *)0; + goto return_label; + } + if (dest_0 == (char *)0) dest_0 = *ptr; + dlen = *dmax; + ptoken = (char *)0; + while (1) { + if ((int)*dest_0 != '\000') { + if (! (! ptoken)) break; + } + else break; + if (dlen == (rsize_t)0) { + *ptr = (char *)0; + invoke_safe_str_constraint_handler("strtok_s: dest is unterminated", + (void *)0,407); + __retres = (char *)0; + goto return_label; + } + slen = (unsigned int)16; + pt = src; + while ((int)*pt != '\000') { + if (slen == (rsize_t)0) { + *ptr = (char *)0; + invoke_safe_str_constraint_handler("strtok_s: src is unterminated", + (void *)0,407); + __retres = (char *)0; + goto return_label; + } + slen -= (rsize_t)1; + if ((int)*dest_0 == (int)*pt) { + ptoken = (char *)0; + break; + } + else { + pt ++; + ptoken = dest_0; + } + } + dest_0 ++; + dlen -= (rsize_t)1; + } + if (ptoken == (char *)0) { + *dmax = dlen; + __retres = ptoken; + goto return_label; + } + while ((int)*dest_0 != '\000') { + if (dlen == (rsize_t)0) { + *ptr = (char *)0; + invoke_safe_str_constraint_handler("strtok_s: dest is unterminated", + (void *)0,407); + __retres = (char *)0; + goto return_label; + } + slen = (unsigned int)16; + pt = src; + while ((int)*pt != '\000') { + if (slen == (rsize_t)0) { + *ptr = (char *)0; + invoke_safe_str_constraint_handler("strtok_s: src is unterminated", + (void *)0,407); + __retres = (char *)0; + goto return_label; + } + slen -= (rsize_t)1; + if ((int)*dest_0 == (int)*pt) { + *dest_0 = (char)'\000'; + *ptr = dest_0 + 1; + *dmax = dlen - (rsize_t)1; + __retres = ptoken; + goto return_label; + } + else pt ++; + } + dest_0 ++; + dlen -= (rsize_t)1; + } + *dmax = dlen; + __retres = ptoken; + return_label: return __retres; +} + +__inline static void handle_error_38(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_38(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strtolowercase_s(char *dest_0, rsize_t dmax) +{ + errno_t __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strtolowercase_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strtolowercase_s: dmax is 0", + (void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strtolowercase_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 >= 'A') + if ((int)*dest_0 <= 'Z') *dest_0 = (char)((int)*dest_0 + (int)((char)32)); + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_39(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_39(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strtouppercase_s(char *dest_0, rsize_t dmax) +{ + errno_t __retres; + if (! dest_0) { + invoke_safe_str_constraint_handler("strtouppercase_s: dest is null", + (void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strtouppercase_s: dmax is 0", + (void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strtouppercase_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + if ((int)*dest_0 >= 'a') + if ((int)*dest_0 <= 'z') *dest_0 = (char)((int)*dest_0 - 32); + dest_0 ++; + dmax -= (rsize_t)1; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_40(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_40(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t strzero_s(char *dest_0, rsize_t dmax) +{ + errno_t __retres; + if (dest_0 == (char *)0) { + invoke_safe_str_constraint_handler("strzero_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("strzero_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 4UL << 10) { + invoke_safe_str_constraint_handler("strzero_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + while (dmax) { + *dest_0 = (char)'\000'; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = 0; + return_label: return __retres; +} + +__inline static void handle_error_41(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_41(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +wchar_t *wcpcpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + errno_t *err) +{ + wchar_t *__retres; + rsize_t orig_dmax; + wchar_t *orig_dest; + wchar_t const *overlap_bumper; + if (dest_0 == (wchar_t *)0) { + invoke_safe_str_constraint_handler("wcpcpy_s: dest is null",(void *)0, + 400); + *err = 400; + __retres = (wchar_t *)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcpcpy_s: dmax is 0",(void *)0,401); + *err = 401; + __retres = (wchar_t *)0; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcpcpy_s: dmax exceeds max", + (void *)0,403); + *err = 403; + __retres = (wchar_t *)0; + goto return_label; + } + if (src == (wchar_t const *)0) { + *dest_0 = 0; + invoke_safe_str_constraint_handler("wcpcpy_s: src is null",(void *)0,400); + *err = 400; + __retres = (wchar_t *)0; + goto return_label; + } + if ((void *)dest_0 == (void *)src) { + while (1) { + if (dmax) { + if (! (*dest_0 != 0)) break; + } + else break; + dmax -= (rsize_t)1; + dest_0 ++; + } + if (*dest_0 != 0) { + invoke_safe_str_constraint_handler("wcpcpy_s: no null terminator in dest", + (void *)0,403); + *err = 403; + __retres = (wchar_t *)0; + goto return_label; + } + *err = 0; + __retres = dest_0; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_41(orig_dest,orig_dmax, + (char *)"wcpcpy_s: overlapping objects",404); + *err = 404; + __retres = (wchar_t *)0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (wchar_t const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_wc_error_41(orig_dest,orig_dmax, + (char *)"wcpcpy_s: overlapping objects",404); + *err = 404; + __retres = (wchar_t *)0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + *err = 0; + __retres = dest_0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_wc_error_41(orig_dest,orig_dmax, + (char *)"wcpcpy_s: not enough space for src",406); + *err = 406; + __retres = (wchar_t *)0; + return_label: return __retres; +} + +__inline static void handle_error_42(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_42(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t wcscat_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src) +{ + errno_t __retres; + rsize_t orig_dmax; + wchar_t *orig_dest; + wchar_t const *overlap_bumper; + if (dest_0 == (wchar_t *)0) { + invoke_safe_str_constraint_handler("wcscat_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (wchar_t const *)0) { + invoke_safe_str_constraint_handler("wcscat_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcscat_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcscat_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (*dest_0 != 0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (wchar_t const *)dest_0; + while (*dest_0 != 0) { + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_wc_error_42(orig_dest,orig_dmax, + (char *)"wcscat_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_43(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_43(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t wcscpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src) +{ + errno_t __retres; + rsize_t orig_dmax; + wchar_t *orig_dest; + wchar_t const *overlap_bumper; + if (dest_0 == (wchar_t *)0) { + invoke_safe_str_constraint_handler("wcscpy_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcscpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcscpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (src == (wchar_t const *)0) { + *dest_0 = '\000'; + invoke_safe_str_constraint_handler("wcscpy_s: src is null",(void *)0,400); + __retres = 400; + goto return_label; + } + if ((void *)dest_0 == (void *)src) { + while (1) { + if (*src != 0) { + if (! (dmax != (rsize_t)0)) break; + } + else break; + src ++; + dmax -= (rsize_t)1; + } + if (*src != 0) { + invoke_safe_str_constraint_handler("wcscpy_s: src exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + __retres = 0; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_43(orig_dest,orig_dmax, + (char *)"wcscpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (wchar_t const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_wc_error_43(orig_dest,orig_dmax, + (char *)"wcscpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_wc_error_43(orig_dest,orig_dmax, + (char *)"wcscpy_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_44(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_44(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t wcsncat_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + wchar_t *orig_dest; + wchar_t const *overlap_bumper; + if (dest_0 == (wchar_t *)0) { + invoke_safe_str_constraint_handler("wcsncat_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (wchar_t const *)0) { + invoke_safe_str_constraint_handler("wcsncat_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if ((unsigned long)(slen * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcsncat_s: slen exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcsncat_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcsncat_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (*dest_0 != 0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = 0; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (wchar_t const *)dest_0; + while (*dest_0 != 0) { + dest_0 ++; + dmax -= (rsize_t)1; + if (dmax == (rsize_t)0) { + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: dest unterminated",407); + __retres = 407; + goto return_label; + } + } + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = 0; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == 0) { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_wc_error_44(orig_dest,orig_dmax, + (char *)"wcsncat_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_45(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_45(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +errno_t wcsncpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t slen) +{ + errno_t __retres; + rsize_t orig_dmax; + wchar_t *orig_dest; + wchar_t const *overlap_bumper; + if (dest_0 == (wchar_t *)0) { + invoke_safe_str_constraint_handler("wcsncpy_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcsncpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcsncpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + orig_dmax = dmax; + orig_dest = dest_0; + if (src == (wchar_t const *)0) { + handle_wc_error_45(orig_dest,orig_dmax,(char *)"wcsncpy_s: src is null", + 400); + __retres = 400; + goto return_label; + } + if (slen == (rsize_t)0) { + handle_wc_error_45(orig_dest,orig_dmax,(char *)"wcsncpy_s: slen is zero", + 401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(slen * sizeof(wchar_t)) > 4UL << 10) { + handle_wc_error_45(orig_dest,orig_dmax, + (char *)"wcsncpy_s: slen exceeds max",403); + __retres = 403; + goto return_label; + } + if ((void *)dest_0 < (void *)src) { + overlap_bumper = src; + while (dmax > (rsize_t)0) { + if ((void *)dest_0 == (void *)overlap_bumper) { + handle_wc_error_45(orig_dest,orig_dmax, + (char *)"wcsncpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = '\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + else { + overlap_bumper = (wchar_t const *)dest_0; + while (dmax > (rsize_t)0) { + if (src == overlap_bumper) { + handle_wc_error_45(orig_dest,orig_dmax, + (char *)"wcsncpy_s: overlapping objects",404); + __retres = 404; + goto return_label; + } + if (slen == (rsize_t)0) { + *dest_0 = '\000'; + __retres = 0; + goto return_label; + } + *dest_0 = *src; + if (*dest_0 == '\000') { + __retres = 0; + goto return_label; + } + dmax -= (rsize_t)1; + slen -= (rsize_t)1; + dest_0 ++; + src ++; + } + } + handle_wc_error_45(orig_dest,orig_dmax, + (char *)"wcsncpy_s: not enough space for src",406); + __retres = 406; + return_label: return __retres; +} + +__inline static void handle_error_46(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ + *orig_dest = (char)'\000'; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +__inline static void handle_wc_error_46(wchar_t *orig_dest, + rsize_t orig_dmax, char *err_msg, + errno_t err_code) +{ + *orig_dest = 0; + invoke_safe_str_constraint_handler((char const *)err_msg,(void *)0, + err_code); + return; +} + +rsize_t wcsnlen_s(wchar_t const *dest_0, rsize_t dmax) +{ + rsize_t __retres; + rsize_t count; + if (dest_0 == (wchar_t const *)0) { + __retres = (unsigned int)0; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_str_constraint_handler("wcsnlen_s: dmax is 0",(void *)0,401); + __retres = (unsigned int)0; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 4UL << 10) { + invoke_safe_str_constraint_handler("wcsnlen_s: dmax exceeds max", + (void *)0,403); + __retres = (unsigned int)0; + goto return_label; + } + count = (unsigned int)0; + while (1) { + if (*dest_0) { + if (! dmax) break; + } + else break; + count += (rsize_t)1; + dmax -= (rsize_t)1; + dest_0 ++; + } + __retres = count; + return_label: return __retres; +} + +errno_t wmemcmp_s(wchar_t const *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t smax, int *diff) +{ + errno_t __retres; + if (diff == (int *)0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: diff is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + *diff = -1; + if (dest_0 == (wchar_t const *)0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (src == (wchar_t const *)0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > (256UL << 20) / (unsigned long)4) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + invoke_safe_mem_constraint_handler("wmemcmp_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (dest_0 == src) { + *diff = 0; + __retres = 0; + goto return_label; + } + *diff = 0; + while (1) { + if (dmax != (rsize_t)0) { + if (! (smax != (rsize_t)0)) break; + } + else break; + if (*dest_0 != *src) { + *diff = *dest_0 - *src; + break; + } + dmax -= (rsize_t)1; + smax -= (rsize_t)1; + dest_0 ++; + src ++; + } + __retres = 0; + return_label: return __retres; +} + +errno_t wmemcpy_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + rsize_t smax) +{ + errno_t __retres; + wchar_t *dp; + wchar_t const *sp; + dp = dest_0; + sp = src; + if (dp == (wchar_t *)0) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dest is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)dmax > 256UL << 20) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (rsize_t)0) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemcpy_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemcpy_s: smax exceeds dmax", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (wchar_t const *)0) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemcpy_s: src is NULL",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if ((void *)dp > (void *)sp) { + if ((void *)dp < (void *)(sp + smax)) goto _LOR; else goto _LAND; + } + else { + _LAND: ; + if ((void *)sp > (void *)dp) + if ((void *)sp < (void *)(dp + dmax)) { + _LOR: + { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemcpy_s: overlap undefined", + (void *)0,404); + __retres = 404; + goto return_label; + } + } + } + mem_prim_move((void *)dp,(void const *)sp,smax * sizeof(wchar_t)); + __retres = 0; + return_label: return __retres; +} + +errno_t wmemmove_s(wchar_t *dest_0, rsize_t dmax, wchar_t const *src, + unsigned int smax) +{ + errno_t __retres; + wchar_t *dp; + wchar_t const *sp; + dp = dest_0; + sp = src; + if (dp == (wchar_t *)0) { + invoke_safe_mem_constraint_handler("wmemmove_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (dmax == (rsize_t)0) { + invoke_safe_mem_constraint_handler("wmemmove_s: dmax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(dmax * sizeof(wchar_t)) > 256UL << 20) { + invoke_safe_mem_constraint_handler("wmemmove_s: dmax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (smax == (unsigned int)0) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemmove_s: smax is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if (smax > dmax) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemmove_s: smax exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + if (sp == (wchar_t const *)0) { + mem_prim_set((void *)dp,dmax * sizeof(wchar_t),(unsigned char)0); + invoke_safe_mem_constraint_handler("wmemmove_s: src is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + mem_prim_move((void *)dp,(void const *)sp,smax * sizeof(wchar_t)); + __retres = 0; + return_label: return __retres; +} + +errno_t wmemset_s(wchar_t *dest_0, wchar_t value, rsize_t len) +{ + errno_t __retres; + if (dest_0 == (wchar_t *)0) { + invoke_safe_mem_constraint_handler("wmemset_s: dest is null",(void *)0, + 400); + __retres = 400; + goto return_label; + } + if (len == (rsize_t)0) { + invoke_safe_mem_constraint_handler("wmemset_s: len is 0",(void *)0,401); + __retres = 401; + goto return_label; + } + if ((unsigned long)(len * sizeof(wchar_t)) > 256UL << 20) { + invoke_safe_mem_constraint_handler("wmemset_s: len exceeds max", + (void *)0,403); + __retres = 403; + goto return_label; + } + mem_prim_set32((uint32_t *)dest_0,len,(unsigned int)value); + __retres = 0; + return_label: return __retres; +} + +int test_memcmp_s(void); + +int test_memcmp16_s(void); + +int test_memcmp32_s(void); + +int test_memcpy_s(void); + +int test_memcpy16_s(void); + +int test_memcpy32_s(void); + +int test_memmove_s(void); + +int test_memmove16_s(void); + +int test_memmove32_s(void); + +int test_memset_s(void); + +int test_memset16_s(void); + +int test_memset32_s(void); + +int test_memzero_s(void); + +int test_memzero16_s(void); + +int test_memzero32_s(void); + +int test_strcasecmp_s(void); + +int test_strcasestr_s(void); + +int test_strcat_s(void); + +int test_strcmp_s(void); + +int test_strcmpfld_s(void); + +int test_strcpy_s(void); + +int test_strcpyfld_s(void); + +int test_strcpyfldin_s(void); + +int test_strcpyfldout_s(void); + +int test_strcspn_s(void); + +int test_strfirstchar_s(void); + +int test_strfirstdiff_s(void); + +int test_strfirstsame_s(void); + +int test_strisalphanumeric_s(void); + +int test_strisascii_s(void); + +int test_strisdigit_s(void); + +int test_strishex_s(void); + +int test_strislowercase_s(void); + +int test_strismixed_s(void); + +int test_strispassword_s(void); + +int test_strisuppercase_s(void); + +int test_strlastchar_s(void); + +int test_strlastdiff_s(void); + +int test_strlastsame_s(void); + +int test_strljustify_s(void); + +int test_strncat_s(void); + +int test_strncpy_s(void); + +int test_strnlen_s(void); + +int test_strnterminate_s(void); + +int test_strpbrk_s(void); + +int test_strprefix_s(void); + +int test_strremovews_s(void); + +int test_strspn_s(void); + +int test_strstr_s(void); + +int test_strtok_s(void); + +int test_strtolowercase_s(void); + +int test_strtouppercase_s(void); + +int test_strzero_s(void); + +int test_stpncpy_s(void); + +int test_stpcpy_s(void); + +int test_wcpcpy_s(void); + +int test_wcscat_s(void); + +int test_wcscpy_s(void); + +int test_wcsncat_s(void); + +int test_wcsncpy_s(void); + +int test_wcsnlen_s(void); + +int test_wmemcpy_s(void); + +int test_wmemmove_s(void); + +int test_wmemset_s(void); + +int test_wmemcmp_s(void); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_3(char const * __restrict format, int param0); + +int main(void) +{ + int __retres; + char dest_0[128]; + char src[128]; + errno_t err; + rsize_t dmax = (unsigned int)128; + rsize_t smax = (unsigned int)21; + puts("!!!Basic Test Suite for Safe String Operations!!!"); + puts(" ERRORS PRINT TO CONSOLE"); + puts("----------------BEGIN TEST--------------------"); + test_memcmp_s(); + test_memcmp16_s(); + test_memcmp32_s(); + test_memcpy_s(); + test_memcpy16_s(); + test_memcpy32_s(); + test_memmove_s(); + test_memmove16_s(); + test_memmove32_s(); + test_memset_s(); + test_memset16_s(); + test_memset32_s(); + test_memzero_s(); + test_memzero16_s(); + test_memzero32_s(); + test_stpcpy_s(); + test_stpncpy_s(); + test_strcasecmp_s(); + test_strcasestr_s(); + test_strcat_s(); + test_strcmp_s(); + test_strcmpfld_s(); + test_strcpy_s(); + test_strcpyfld_s(); + test_strcpyfldin_s(); + test_strcpyfldout_s(); + test_strcspn_s(); + test_strfirstchar_s(); + test_strfirstdiff_s(); + test_strfirstsame_s(); + test_strisalphanumeric_s(); + test_strisascii_s(); + test_strisdigit_s(); + test_strishex_s(); + test_strislowercase_s(); + test_strismixed_s(); + test_strispassword_s(); + test_strisuppercase_s(); + test_strlastchar_s(); + test_strlastdiff_s(); + test_strlastsame_s(); + test_strljustify_s(); + test_strncat_s(); + test_strncpy_s(); + test_strnlen_s(); + test_strnterminate_s(); + test_strpbrk_s(); + test_strprefix_s(); + test_strremovews_s(); + test_strspn_s(); + test_strstr_s(); + test_strtok_s(); + test_strtolowercase_s(); + test_strtouppercase_s(); + test_strzero_s(); + test_wcpcpy_s(); + test_wcscat_s(); + test_wcscpy_s(); + test_wcsncat_s(); + test_wcsncpy_s(); + test_wcsnlen_s(); + test_wmemcpy_s(); + test_wmemmove_s(); + test_wmemset_s(); + test_wmemcmp_s(); + char str[21] = + {(char)'T', + (char)'h', + (char)'i', + (char)'s', + (char)' ', + (char)'i', + (char)'s', + (char)' ', + (char)'a', + (char)' ', + (char)'c', + (char)'h', + (char)'a', + (char)'r', + (char)' ', + (char)'a', + (char)'r', + (char)'r', + (char)'a', + (char)'y', + (char)'\000'}; + char str2_16[20] = + {(char)'.', + (char)'.', + (char)'.', + (char)'A', + (char)'n', + (char)'d', + (char)' ', + (char)'a', + (char)'n', + (char)'o', + (char)'t', + (char)'h', + (char)'e', + (char)'r', + (char)' ', + (char)'o', + (char)'n', + (char)'e', + (char)'.', + (char)'\000'}; + int indicator = -1; + strcpy_s(dest_0,dmax,(char const *)(str)); + char *ret = + stpcpy_s(& dest_0[20],(unsigned int)108,(char const *)(str2_16),& err); + if (err != 0) puts("stpcpy_s returned failure"); + int val = 55; + err = snprintf_s_si(src,(unsigned int)128, + "Test sprintf_s_si() with simple format string [%s] and %d", + dest_0,val); + if (err < 0) + if (-1 * 410 == err) puts("snprintf_s_si returned failure: Error Bad Format String."); + else + if (-1 * 411 == err) puts("snprintf_s_si returned failure: Error Bad Argument Type for format string."); + else printf_va_3("snprintf_s_si failed with unknown error: %d\n",err); + else { + errno_t tmp_0; + tmp_0 = strcmp_s((char const *)(src),smax, + "Test sprintf_s_si() with simple format string [This is a char array...And another one.] and 55", + & indicator); + if (tmp_0 != 0) goto _LOR; + else + if (indicator != 0) { + _LOR: + { + puts("snprintf_s_si() failed - output was:"); + puts((char const *)(src)); + } + } + } + puts("----------------END TEST--------------------"); + __retres = 0; + return __retres; +} + +int test_memcmp16_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + int32_t ind; + int32_t std_ind; + uint32_t i; + uint16_t mem1_6[128]; + uint16_t mem2_4[128]; + rc = memcmp16_s((uint16_t const *)0,(unsigned int)128, + (uint16_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 400) ; + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)0,(unsigned int)128,(int *)(& ind)); + if (rc != 400) ; + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)(mem2_4),(unsigned int)128,(int *)0); + if (rc != 400) ; + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)0, + (uint16_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 401) ; + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)(mem2_4),(unsigned int)0,(int *)(& ind)); + if (rc != 401) ; + rc = memcmp16_s((uint16_t const *)(mem1_6), + (unsigned int)((256UL << 20) + (unsigned long)1), + (uint16_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 403) ; + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)(mem2_4), + (unsigned int)((256UL << 20) + (unsigned long)1), + (int *)(& ind)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (unsigned short)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (unsigned short)i; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memcmp16_s((uint16_t const *)(mem1_6),len,(uint16_t const *)(mem2_4), + len,(int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)2); + if (ind != std_ind) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (unsigned short)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (unsigned short)i; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memcmp16_s((uint16_t const *)(mem1_6),len,(uint16_t const *)(mem2_4), + len,(int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)2); + if (ind != std_ind) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (unsigned short)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (unsigned short)i; + i += (uint32_t)1; + } + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + (unsigned int)(128 * 2)); + if (ind != std_ind) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (unsigned short)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (unsigned short)i; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(128 - 10)) { + mem2_4[i] = (unsigned short)5; + i += (uint32_t)1; + } + rc = memcmp16_s((uint16_t const *)(mem1_6),(unsigned int)128, + (uint16_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 0) ; + if (ind == 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + (unsigned int)(128 * 2)); + if (ind != std_ind) ; + __retres = 0; + return __retres; +} + +int test_memcmp32_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + int32_t ind; + int32_t std_ind; + uint32_t i; + uint32_t mem1_6[128]; + uint32_t mem2_4[128]; + rc = memcmp32_s((uint32_t const *)0,(unsigned int)128, + (uint32_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 400) ; + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)0,(unsigned int)128,(int *)(& ind)); + if (rc != 400) ; + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)(mem2_4),(unsigned int)128,(int *)0); + if (rc != 400) ; + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)0, + (uint32_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 401) ; + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)(mem2_4),(unsigned int)0,(int *)(& ind)); + if (rc != 401) ; + rc = memcmp32_s((uint32_t const *)(mem1_6), + (unsigned int)((256UL << 20) + (unsigned long)1), + (uint32_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 403) ; + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)(mem2_4), + (unsigned int)((256UL << 20) + (unsigned long)1), + (int *)(& ind)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = i; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memcmp32_s((uint32_t const *)(mem1_6),len,(uint32_t const *)(mem2_4), + len,(int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)4); + if (ind != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = i; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memcmp32_s((uint32_t const *)(mem1_6),len,(uint32_t const *)(mem2_4), + len,(int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)4); + if (ind != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = i; + i += (uint32_t)1; + } + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + (unsigned int)(128 * 4)); + if (ind != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = i; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(128 - 10)) { + mem2_4[i] = (unsigned int)5; + i += (uint32_t)1; + } + rc = memcmp32_s((uint32_t const *)(mem1_6),(unsigned int)128, + (uint32_t const *)(mem2_4),(unsigned int)128, + (int *)(& ind)); + if (rc != 0) ; + if (ind == 0) ; + __retres = 0; + return __retres; +} + +static uint8_t mem1[128]; +static uint8_t mem2[128]; +int test_memcmp_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + int32_t std_ind; + uint32_t len; + rc = memcmp_s((void const *)0,(unsigned int)128,(void const *)(mem2), + (unsigned int)128,(int *)(& ind)); + if (rc != 400) ; + rc = memcmp_s((void const *)(mem1),(unsigned int)128,(void const *)0, + (unsigned int)128,(int *)(& ind)); + if (rc != 400) ; + rc = memcmp_s((void const *)(mem1),(unsigned int)128,(void const *)(mem2), + (unsigned int)128,(int *)0); + if (rc != 400) ; + rc = memcmp_s((void const *)(mem1),(unsigned int)0,(void const *)(mem2), + (unsigned int)128,(int *)(& ind)); + if (rc != 401) ; + rc = memcmp_s((void const *)(mem1),(unsigned int)128,(void const *)(mem2), + (unsigned int)0,(int *)(& ind)); + if (rc != 401) ; + rc = memcmp_s((void const *)(mem1),(unsigned int)128,(void const *)(mem2), + (unsigned int)((256UL << 20) + (unsigned long)1), + (int *)(& ind)); + if (rc != 403) ; + rc = memcmp_s((void const *)(mem1), + (unsigned int)((256UL << 20) + (unsigned long)1), + (void const *)(mem2),(unsigned int)128,(int *)(& ind)); + if (rc != 403) ; + len = (unsigned int)1; + memset((void *)(mem1),55,len); + memset((void *)(mem2),55,len); + rc = memcmp_s((void const *)(mem1),len,(void const *)(mem2),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1),(void const *)(mem2),len); + if (ind != std_ind) ; + len = (unsigned int)2; + memset((void *)(mem1),55,(unsigned int)128); + memset((void *)(mem2),55,(unsigned int)128); + rc = memcmp_s((void const *)(& mem1[1]),len,(void const *)(& mem2[1]),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1),(void const *)(mem2),len); + if (ind != std_ind) ; + len = (unsigned int)32; + memset((void *)(mem1),55,len); + memset((void *)(mem2),55,len); + rc = memcmp_s((void const *)(mem1),len,(void const *)(mem2),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + std_ind = memcmp((void const *)(mem1),(void const *)(mem2),len); + if (ind != std_ind) ; + len = (unsigned int)32; + memset((void *)(mem1),55,len); + memset((void *)(mem2),55,len); + memset((void *)(& mem2[len / (uint32_t)2]),35,len); + rc = memcmp_s((void const *)(mem1),len,(void const *)(mem2),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind < 1) ; + len = (unsigned int)32; + memset((void *)(mem1),55,len); + memset((void *)(mem2),55,len); + memset((void *)(& mem2[len / (uint32_t)2]),65,len); + rc = memcmp_s((void const *)(mem1),len,(void const *)(mem2),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind > -1) ; + len = (unsigned int)3; + memset((void *)(mem1),55,len); + memset((void *)(mem2),55,len); + rc = memcmp_s((void const *)(mem1),len,(void const *)(mem2),len, + (int *)(& ind)); + if (rc != 0) ; + if (ind != 0) ; + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_4(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_5(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_6(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_7(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_8(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_9(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_10(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_11(char const * __restrict format, int param0, int param1, + int param2, int param3); + +int test_memcpy16_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + uint16_t mem1_6[1024]; + uint16_t mem2_4[1024]; + rc = memcpy16_s((uint16_t *)0,(unsigned int)1024, + (uint16_t const *)(mem2_4),(unsigned int)1024); + if (rc != 400) ; + rc = memcpy16_s(mem1_6,(unsigned int)0,(uint16_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 401) ; + rc = memcpy16_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1), + (uint16_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memcpy16_s(mem1_6,(unsigned int)10,(uint16_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memcpy16_s(mem1_6,len,(uint16_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)mem2_4[i]) printf_va_4("%d - %d m1=%d m2=%d \n", + 86,(int)i, + (int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memcpy16_s(mem1_6,len,(uint16_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)mem2_4[i]) printf_va_5("%d - %d m1=%d m2=%d \n", + 105,(int)i, + (int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)(1024 / 2),(uint16_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)(1024 / 2)) { + if ((int)mem1_6[i] != 0) printf_va_6("%d - %d m1=%d m2=%d \n",125, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + if ((int)mem1_6[i] != 0) printf_va_7("%d - %d m1=%d m2=%d \n",144, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + if ((int)mem1_6[i] != 0) printf_va_8("%d - %d m1=%d m2=%d \n",163, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)55; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)65; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem1_6), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)100) { + mem1_6[i] = (unsigned short)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)100) { + mem1_6[i] = (unsigned short)35; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)100,(uint16_t const *)(& mem1_6[10]), + (unsigned int)100); + if (rc != 404) ; + i = (unsigned int)0; + while (i < (uint32_t)100) { + if ((int)mem1_6[i] != 0) printf_va_9("%d - %d m1=%d \n",195,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)100) { + mem1_6[i] = (unsigned short)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)100) { + mem1_6[i] = (unsigned short)45; + i += (uint32_t)1; + } + rc = memcpy16_s(& mem1_6[10],(unsigned int)100,(uint16_t const *)(mem1_6), + (unsigned int)100); + if (rc != 404) ; + i = (unsigned int)10; + while (i < (uint32_t)100) { + if ((int)mem1_6[i] != 0) printf_va_10("%d - %d m1=%d \n",215,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + rc = memcpy16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem2_4), + (unsigned int)(1024 / 2)); + if (rc != 0) ; + i = (unsigned int)10; + while (i < (uint32_t)(1024 / 2)) { + if ((int)mem1_6[i] != 44) printf_va_11("%d - %d m1=%d m2=%d \n",233, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_12(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_13(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_14(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_15(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_16(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_17(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_18(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_19(char const * __restrict format, int param0, int param1, + int param2, int param3); + +int test_memcpy32_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + uint32_t mem1_6[1024]; + uint32_t mem2_4[1024]; + rc = memcpy32_s((uint32_t *)0,(unsigned int)1024, + (uint32_t const *)(mem2_4),(unsigned int)1024); + if (rc != 400) ; + rc = memcpy32_s(mem1_6,(unsigned int)0,(uint32_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 401) ; + rc = memcpy32_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)4 + (unsigned long)1), + (uint32_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memcpy32_s(mem1_6,(unsigned int)10,(uint32_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)4 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memcpy32_s(mem1_6,len,(uint32_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != mem2_4[i]) printf_va_12("%d - %d m1=%d m2=%d \n",85, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memcpy32_s(mem1_6,len,(uint32_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != mem2_4[i]) printf_va_13("%d - %d m1=%d m2=%d \n",104, + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)(1024 / 2),(uint32_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)(1024 / 2)) { + if (mem1_6[i] != (uint32_t)0) printf_va_14("%d - %d m1=%d m2=%d \n", + 124,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + if (mem1_6[i] != (uint32_t)0) printf_va_15("%d - %d m1=%d m2=%d \n", + 143,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)4 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + if (mem1_6[i] != (uint32_t)0) printf_va_16("%d - %d m1=%d m2=%d \n", + 162,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)25; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)35; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem1_6), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)25; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)35; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)100,(uint32_t const *)(& mem1_6[10]), + (unsigned int)100); + if (rc != 404) ; + i = (unsigned int)0; + while (i < (uint32_t)100) { + if (mem1_6[i] != (uint32_t)0) printf_va_17("%d - %d m1=%d m2=%d \n", + 194,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)65; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)75; + i += (uint32_t)1; + } + rc = memcpy32_s(& mem1_6[10],(unsigned int)100,(uint32_t const *)(mem1_6), + (unsigned int)100); + if (rc != 404) ; + i = (unsigned int)10; + while (i < (uint32_t)100) { + if (mem1_6[i] != (uint32_t)0) printf_va_18("%d - %d m1=%d m2=%d \n", + 214,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)65; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)75; + i += (uint32_t)1; + } + rc = memcpy32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem2_4), + (unsigned int)(1024 / 2)); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)(1024 / 2)) { + if (mem1_6[i] != (uint32_t)75) printf_va_19("%d - %d m1=%d m2=%d \n", + 232,(int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static uint8_t mem1_0[1024 + 2]; +static uint8_t mem2_0[1024 + 2]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_20(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_21(char const * __restrict format, int param0, size_t param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_22(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_23(char const * __restrict format, int param0, size_t param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_24(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_25(char const * __restrict format, int param0, size_t param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_26(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_27(char const * __restrict format, int param0, size_t param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_28(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_29(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_30(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_31(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_32(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_33(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_34(char const * __restrict format, int param0, int param1, + int param2, int param3); + +int test_memcpy_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + rc = memcpy_s((void *)0,(unsigned int)1024,(void const *)(mem2_0), + (unsigned int)1024); + if (rc != 400) ; + rc = memcpy_s((void *)(mem1_0),(unsigned int)0,(void const *)(mem2_0), + (unsigned int)1024); + if (rc != 401) ; + rc = memcpy_s((void *)(mem1_0), + (unsigned int)((256UL << 20) + (unsigned long)1), + (void const *)(mem2_0),(unsigned int)1024); + if (rc != 403) ; + rc = memcpy_s((void *)(mem1_0),(unsigned int)1024,(void const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memcpy_s((void *)(mem1_0),(unsigned int)10,(void const *)(mem2_0), + (unsigned int)0); + if (rc != 401) ; + rc = memcpy_s((void *)(mem1_0),(unsigned int)1024,(void const *)(mem2_0), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)(1024 + 1)) { + mem1_0[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0),len); + if (! (rc != 0)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != (int)mem2_0[i]) printf_va_20("%d - %d m1=%d m2=%d \n", + 85,(int)i, + (int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[i] != 33) printf_va_21("%d - %zu m1=%d m2=%d \n",91, + len,(int)mem1_0[len], + (int)mem2_0[len]); + } + i = (unsigned int)0; + while (i < (uint32_t)(1024 + 1)) { + mem1_0[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0),len + (rsize_t)1); + if (! (rc == 0)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 0) printf_va_22("%d - %d m1=%d m2=%d \n",112, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[i] != 33) printf_va_23("%d - %zu m1=%d m2=%d \n",118, + len,(int)mem1_0[len], + (int)mem2_0[len]); + } + i = (unsigned int)0; + while (i < (uint32_t)(1024 + 2)) { + mem1_0[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)(1024 / 2); + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0), + (unsigned int)1024); + if (! (rc != 403)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 0) printf_va_24("%d - %d m1=%d m2=%d \n",139, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[len] != 33) printf_va_25("%d - %zu m1=%d m2=%d \n",145, + len,(int)mem1_0[len], + (int)mem2_0[len]); + } + i = (unsigned int)0; + while (i < (uint32_t)(1024 + 2)) { + mem1_0[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0),(unsigned int)0); + if (! (rc != 401)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 0) printf_va_26("%d - %d m1=%d m2=%d \n",166, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[len] != 33) printf_va_27("%d - %zu m1=%d m2=%d \n",172, + len,(int)mem1_0[len], + (int)mem2_0[len]); + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (! (rc != 403)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 0) printf_va_28("%d - %d m1=%d m2=%d \n",193, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[len] == 0) printf_va_29("%d - %d m1=%d m2=%d \n",199, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)55; + i += (uint32_t)1; + } + rc = memcpy_s((void *)(mem1_0),(unsigned int)1024,(void const *)(mem1_0), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)55; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)65; + i += (uint32_t)1; + } + len = (unsigned int)100; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(& mem1_0[10]),len); + if (! (rc != 404)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 0) printf_va_30("%d - %d m1=%d m2=%d \n",231, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + if ((int)mem1_0[len] == 0) printf_va_31("%d - %d m1=%d m2=%d \n",237, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)55; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)65; + i += (uint32_t)1; + } + len = (unsigned int)100; + rc = memcpy_s((void *)(& mem1_0[10]),len,(void const *)(mem1_0),len); + if (! (rc != 404)) { + i = (unsigned int)10; + while (i < len + (rsize_t)10) { + if ((int)mem1_0[i] != 0) printf_va_32("%d - %d m1=%d m2=%d \n",258, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)55; + i += (uint32_t)1; + } + len = (unsigned int)5; + rc = memcpy_s((void *)(mem1_0),len,(void const *)(mem2_0),len); + if (! (rc != 0)) { + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_0[i] != 55) printf_va_33("%d - %d m1=%d\n",279,(int)i, + (int)mem1_0[i]); + i += (uint32_t)1; + } + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_0[i] = (unsigned char)35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_0[i] = (unsigned char)55; + i += (uint32_t)1; + } + rc = memcpy_s((void *)(mem1_0),(unsigned int)1024,(void const *)(mem2_0), + (unsigned int)(1024 / 2)); + if (! (rc != 0)) { + i = (unsigned int)0; + while (i < (uint32_t)(1024 / 2)) { + if ((int)mem1_0[i] != 55) printf_va_34("%d - %d m1=%d m2=%d \n",299, + (int)i,(int)mem1_0[i], + (int)mem2_0[i]); + i += (uint32_t)1; + } + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_35(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_36(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_37(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_38(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_39(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_40(char const * __restrict format, int param0, int param1, + int param2); + +int test_memmove16_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + uint16_t mem1_6[1024]; + uint16_t mem2_4[1024]; + rc = memmove16_s((uint16_t *)0,(unsigned int)1024, + (uint16_t const *)(mem2_4),(unsigned int)1024); + if (rc != 400) ; + rc = memmove16_s(mem1_6,(unsigned int)0,(uint16_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 401) ; + rc = memmove16_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1), + (uint16_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + rc = memmove16_s(mem1_6,(unsigned int)1024,(uint16_t const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memmove16_s(mem1_6,(unsigned int)10,(uint16_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + rc = memmove16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove16_s(mem1_6,len,(uint16_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)mem2_4[i]) printf_va_35("%d m1=%d m2=%d \n", + (int)i,(int)mem1_6[i], + (int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)(1024 / 2); + rc = memmove16_s(mem1_6,len,(uint16_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_36("%d - %d m1=%d \n",110,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove16_s(mem1_6,len,(uint16_t const *)(mem2_4),(unsigned int)0); + if (rc != 401) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_37("%d - %d m1=%d \n",131,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove16_s(mem1_6,len,(uint16_t const *)(mem2_4), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_38("%d - %d m1=%d \n",154,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned short)44; + i += (uint32_t)1; + } + rc = memmove16_s(mem1_6,(unsigned int)1024,(uint16_t const *)(mem1_6), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_6[i] = (unsigned short)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove16_s(mem1_6,len,(uint16_t const *)(& mem1_6[10]),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 35) printf_va_39("%d - %d m1=%d \n",186,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned short)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_6[i] = (unsigned short)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove16_s(& mem1_6[10],len,(uint16_t const *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)10) { + if ((int)mem1_6[i] != 25) printf_va_40("%d - %d m1=%d \n",206,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_41(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_42(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_43(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_44(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_45(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_46(char const * __restrict format, int param0, int param1, + int param2); + +int test_memmove32_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + uint32_t mem1_6[1024]; + uint32_t mem2_4[1024]; + rc = memmove32_s((uint32_t *)0,(unsigned int)1024, + (uint32_t const *)(mem2_4),(unsigned int)1024); + if (rc != 400) ; + rc = memmove32_s(mem1_6,(unsigned int)0,(uint32_t const *)(mem2_4), + (unsigned int)1024); + if (rc != 401) ; + rc = memmove32_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1), + (uint32_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + rc = memmove32_s(mem1_6,(unsigned int)1024,(uint32_t const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memmove32_s(mem1_6,(unsigned int)10,(uint32_t const *)(mem2_4), + (unsigned int)0); + if (rc != 401) ; + rc = memmove32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem2_4), + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove32_s(mem1_6,len,(uint32_t const *)(mem2_4),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != mem2_4[i]) printf_va_41("%d m1=%d m2=%d \n",(int)i, + (int)mem1_6[i],(int)mem2_4[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)(1024 / 2); + rc = memmove32_s(mem1_6,len,(uint32_t const *)(mem2_4),(unsigned int)1024); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_42("%d - %d m1=%d \n",110,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove32_s(mem1_6,len,(uint32_t const *)(mem2_4),(unsigned int)0); + if (rc != 401) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_43("%d - %d m1=%d \n",131,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove32_s(mem1_6,len,(uint32_t const *)(mem2_4), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_44("%d - %d m1=%d \n",154,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_4[i] = (unsigned int)44; + i += (uint32_t)1; + } + rc = memmove32_s(mem1_6,(unsigned int)1024,(uint32_t const *)(mem1_6), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_6[i] = (unsigned int)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove32_s(mem1_6,len,(uint32_t const *)(& mem1_6[10]),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)35) printf_va_45("%d - %d m1=%d \n",186, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_6[i] = (unsigned int)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_6[i] = (unsigned int)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove32_s(& mem1_6[10],len,(uint32_t const *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)10) { + if (mem1_6[i] != (uint32_t)25) printf_va_46("%d - %d m1=%d \n",206, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static uint8_t mem1_1[1024]; +static uint8_t mem2_1[1024]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_47(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_48(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_49(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_50(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_51(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_52(char const * __restrict format, int param0, int param1, + int param2); + +int test_memmove_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + rc = memmove_s((void *)0,(unsigned int)1024,(void const *)(mem2_1), + (unsigned int)1024); + if (rc != 400) ; + rc = memmove_s((void *)(mem1_1),(unsigned int)0,(void const *)(mem2_1), + (unsigned int)1024); + if (rc != 401) ; + rc = memmove_s((void *)(mem1_1), + (unsigned int)((256UL << 20) + (unsigned long)1), + (void const *)(mem2_1),(unsigned int)1024); + if (rc != 403) ; + rc = memmove_s((void *)(mem1_1),(unsigned int)1024,(void const *)0, + (unsigned int)1024); + if (rc != 400) ; + rc = memmove_s((void *)(mem1_1),(unsigned int)10,(void const *)(mem2_1), + (unsigned int)0); + if (rc != 401) ; + rc = memmove_s((void *)(mem1_1),(unsigned int)1024,(void const *)(mem2_1), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove_s((void *)(mem1_1),len,(void const *)(mem2_1), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_1[i] != (int)mem2_1[i]) printf_va_47("%d m1=%d m2=%d \n", + (int)i,(int)mem1_1[i], + (int)mem2_1[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)(1024 / 2); + rc = memmove_s((void *)(mem1_1),len,(void const *)(mem2_1), + (unsigned int)1024); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_1[i] != 0) printf_va_48("%d - %d m1=%d \n",107,(int)i, + (int)mem1_1[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove_s((void *)(mem1_1),len,(void const *)(mem2_1),(unsigned int)0); + if (rc != 401) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_1[i] != 0) printf_va_49("%d - %d m1=%d \n",128,(int)i, + (int)mem1_1[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)44; + i += (uint32_t)1; + } + len = (unsigned int)1024; + rc = memmove_s((void *)(mem1_1),len,(void const *)(mem2_1), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_1[i] != 0) printf_va_50("%d - %d m1=%d \n",149,(int)i, + (int)mem1_1[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)44; + i += (uint32_t)1; + } + rc = memmove_s((void *)(mem1_1),(unsigned int)1024,(void const *)(mem1_1), + (unsigned int)1024); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_1[i] = (unsigned char)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove_s((void *)(mem1_1),len,(void const *)(& mem1_1[10]),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_1[i] != 35) printf_va_51("%d - %d m1=%d \n",181,(int)i, + (int)mem1_1[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem1_1[i] = (unsigned char)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem1_1[i] = (unsigned char)35; + i += (uint32_t)1; + } + len = (unsigned int)20; + rc = memmove_s((void *)(& mem1_1[10]),len,(void const *)(mem1_1),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < (uint32_t)1024) { + mem2_1[i] = (unsigned char)25; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(1024 - 10)) { + mem2_1[i] = (unsigned char)35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)10) { + if ((int)mem1_1[i] != 25) printf_va_52("%d - %d m1=%d \n",204,(int)i, + (int)mem1_1[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_53(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_54(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_55(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_56(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_57(char const * __restrict format, int param0, int param1, + int param2); + +int test_memset16_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + uint16_t value; + uint16_t mem1_6[256]; + value = (unsigned short)34; + rc = memset16_s((uint16_t *)0,(unsigned int)256,value); + if (rc != 400) ; + value = (unsigned short)34; + rc = memset16_s(mem1_6,(unsigned int)0,value); + if (rc != 401) ; + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned short)99; + i += (uint32_t)1; + } + len = (unsigned int)1; + value = (unsigned short)34; + rc = memset16_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)value) printf_va_53("%d - %d m1=%d \n",59, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned short)99; + i += (uint32_t)1; + } + len = (unsigned int)2; + value = (unsigned short)34; + rc = memset16_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)value) printf_va_54("%d - %d m1=%d \n",79, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned short)99; + i += (uint32_t)1; + } + len = (unsigned int)12; + value = (unsigned short)34; + rc = memset16_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)value) printf_va_55("%d - %d m1=%d \n",99, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned short)99; + i += (uint32_t)1; + } + len = (unsigned int)31; + value = (unsigned short)34; + rc = memset16_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)value) printf_va_56("%d - %d m1=%d \n",119, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned short)99; + i += (uint32_t)1; + } + len = (unsigned int)133; + value = (unsigned short)34; + rc = memset16_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != (int)value) printf_va_57("%d - %d m1=%d \n",139, + (int)i,(int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_58(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_59(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_60(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_61(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_62(char const * __restrict format, int param0, int param1, + int param2); + +int test_memset32_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + uint32_t value; + uint32_t mem1_6[256]; + value = (unsigned int)34; + rc = memset32_s((uint32_t *)0,(unsigned int)256,value); + if (rc != 400) ; + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + value = (unsigned int)34; + rc = memset32_s(mem1_6,(unsigned int)0,value); + if (rc != 401) ; + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + len = (unsigned int)1; + value = (unsigned int)34; + rc = memset32_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != value) printf_va_58("%d - %d m1=%d \n",62,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + len = (unsigned int)2; + value = (unsigned int)34; + rc = memset32_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != value) printf_va_59("%d - %d m1=%d \n",82,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + len = (unsigned int)12; + value = (unsigned int)34; + rc = memset32_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != value) printf_va_60("%d - %d m1=%d \n",102,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + len = (unsigned int)31; + value = (unsigned int)34; + rc = memset32_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != value) printf_va_61("%d - %d m1=%d \n",122,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_6[i] = (unsigned int)99; + i += (uint32_t)1; + } + len = (unsigned int)133; + value = (unsigned int)34; + rc = memset32_s(mem1_6,len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != value) printf_va_62("%d - %d m1=%d \n",142,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static uint8_t mem1_2[256]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_63(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_64(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_65(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_66(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_67(char const * __restrict format, int param0, int param1, + int param2); + +int test_memset_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + uint8_t value; + value = (unsigned char)34; + rc = memset_s((void *)0,(unsigned int)256,value); + if (rc != 400) ; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),(unsigned int)0,value); + if (rc != 401) ; + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_2[i] = (unsigned char)99; + i += (uint32_t)1; + } + len = (unsigned int)1; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_2[i] != (int)value) printf_va_63("%d - %d m1=%d \n",59, + (int)i,(int)mem1_2[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_2[i] = (unsigned char)99; + i += (uint32_t)1; + } + len = (unsigned int)2; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_2[i] != (int)value) printf_va_64("%d - %d m1=%d \n",79, + (int)i,(int)mem1_2[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_2[i] = (unsigned char)99; + i += (uint32_t)1; + } + len = (unsigned int)12; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_2[i] != (int)value) printf_va_65("%d - %d m1=%d \n",99, + (int)i,(int)mem1_2[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_2[i] = (unsigned char)99; + i += (uint32_t)1; + } + len = (unsigned int)31; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_2[i] != (int)value) printf_va_66("%d - %d m1=%d \n",119, + (int)i,(int)mem1_2[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_2[i] = (unsigned char)99; + i += (uint32_t)1; + } + len = (unsigned int)133; + value = (unsigned char)34; + rc = memset_s((void *)(mem1_2),len,value); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_2[i] != (int)value) printf_va_67("%d - %d m1=%d \n",139, + (int)i,(int)mem1_2[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_68(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_69(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_70(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_71(char const * __restrict format, int param0, int param1, + int param2); + +int test_memzero16_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + uint16_t mem1_6[512]; + rc = memzero16_s((uint16_t *)0,(unsigned int)512); + if (rc != 400) ; + rc = memzero16_s(mem1_6,(unsigned int)0); + if (rc != 401) ; + rc = memzero16_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)2 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memzero16_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_68("%d - %d m1=%d \n",61,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memzero16_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_69("%d - %d m1=%d \n",80,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + len = (unsigned int)3; + rc = memzero16_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_70("%d - %d m1=%d \n",99,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned short)33; + i += (uint32_t)1; + } + len = (unsigned int)512; + rc = memzero16_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_71("%d - %d m1=%d \n",118,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_72(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_73(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_74(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_75(char const * __restrict format, int param0, int param1, + int param2); + +int test_memzero32_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + uint32_t mem1_6[512]; + rc = memzero32_s((uint32_t *)0,(unsigned int)512); + if (rc != 400) ; + rc = memzero32_s(mem1_6,(unsigned int)0); + if (rc != 401) ; + rc = memzero32_s(mem1_6, + (unsigned int)((256UL << 20) / (unsigned long)4 + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memzero32_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_72("%d - %d m1=%d \n",61,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memzero32_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_73("%d - %d m1=%d \n",80,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + len = (unsigned int)3; + rc = memzero32_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_74("%d - %d m1=%d \n",99,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned int)33; + i += (uint32_t)1; + } + len = (unsigned int)512; + rc = memzero32_s(mem1_6,len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if (mem1_6[i] != (uint32_t)0) printf_va_75("%d - %d m1=%d \n",118,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_76(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_77(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_78(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_79(char const * __restrict format, int param0, int param1, + int param2); + +int test_memzero_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + uint32_t len; + uint8_t mem1_6[512]; + rc = memzero_s((void *)0,(unsigned int)512); + if (rc != 400) ; + rc = memzero_s((void *)(mem1_6),(unsigned int)0); + if (rc != 401) ; + rc = memzero_s((void *)(mem1_6), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) ; + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned char)33; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = memzero_s((void *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_76("%d - %d m1=%d \n",61,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned char)33; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = memzero_s((void *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_77("%d - %d m1=%d \n",80,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned char)33; + i += (uint32_t)1; + } + len = (unsigned int)3; + rc = memzero_s((void *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_78("%d - %d m1=%d \n",99,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)512) { + mem1_6[i] = (unsigned char)33; + i += (uint32_t)1; + } + len = (unsigned int)512; + rc = memzero_s((void *)(mem1_6),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)mem1_6[i] != 0) printf_va_79("%d - %d m1=%d \n",118,(int)i, + (int)mem1_6[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static char str1[128]; +static char str2[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_80(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_81(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_82(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_83(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_84(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_85(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_86(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_87(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_88(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_89(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_90(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_91(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_92(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_93(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_94(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_95(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_96(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_97(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_98(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_99(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_100(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_101(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_102(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_103(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_104(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_105(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_106(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_107(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_108(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_109(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_110(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_111(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_112(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_113(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_114(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_115(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_116(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_117(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_118(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_119(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_120(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_121(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_122(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_123(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_124(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_125(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_126(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_127(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_128(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_129(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_130(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_131(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_132(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_133(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_134(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_135(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_136(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_137(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_138(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_139(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +int test_stpcpy_s(void) +{ + int __retres; + char *ret; + errno_t rc; + int32_t ind; + unsigned int testno = (unsigned int)0; + printf_va_80("\nTesting stpcpy_s:\n"); + testno ++; + printf_va_81("Test #%d:\n",(int)testno); + ret = stpcpy_s((char *)0,(unsigned int)128,(char const *)(str2),& rc); + if (rc != 400) printf_va_82("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)99, + (unsigned int)rc); + if (ret != (char *)0) printf_va_83("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)104,(unsigned int)rc); + testno ++; + printf_va_84("Test #%d:\n",(int)testno); + ret = stpcpy_s(str1,(unsigned int)0,(char const *)(str2),& rc); + if (rc != 401) printf_va_85("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)114, + (unsigned int)rc); + if (ret != (char *)0) printf_va_86("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)118,(unsigned int)rc); + testno ++; + printf_va_87("Test #%d:\n",(int)testno); + ret = stpcpy_s(str1,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2),& rc); + if (rc != 403) printf_va_88("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)129, + (unsigned int)rc); + if (ret != (char *)0) printf_va_89("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)133,(unsigned int)rc); + testno ++; + printf_va_90("Test #%d:\n",(int)testno); + strcpy(str1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + ret = stpcpy_s(str1,(unsigned int)5,(char const *)0,& rc); + if (rc != 400) printf_va_91("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)145, + (unsigned int)rc); + if (ret != (char *)0) printf_va_92("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)150,(unsigned int)rc); + if ((int)str1[0] != '\000') printf_va_93("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)163, + (unsigned int)rc); + testno ++; + printf_va_94("Test #%d:\n",(int)testno); + strcpy(str1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + ret = stpcpy_s(str1,(unsigned int)5,(char const *)(str1),& rc); + if (rc != 406) printf_va_95("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)177, + (unsigned int)rc); + if (ret != (char *)0) printf_va_96("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)183,(unsigned int)rc); + testno ++; + printf_va_97("Test #%d:\n",(int)testno); + strcpy(str1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + ret = stpcpy_s(str1,(unsigned int)128,(char const *)(str1),& rc); + if (rc != 0) printf_va_98("%s %u Error rc=%u \n",(char *)"test_stpcpy_s", + (unsigned int)196,(unsigned int)rc); + if (ret == (char *)0) goto _LOR; + else + if ((int)*(ret + 0) != '\000') goto _LOR; + else { + rsize_t tmp; + tmp = strnlen_s((char const *)(str1),(unsigned int)128); + ; + if (ret != & str1[tmp]) _LOR: + printf_va_99("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)201, + (unsigned int)rc); + } + testno ++; + printf_va_100("Test #%d:\n",(int)testno); + strcpy(str1,"keep it simple"); + ret = stpcpy_s(str1,(unsigned int)128,(char const *)(& str1[5]),& rc); + if (rc != 404) printf_va_101("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)215, + (unsigned int)rc); + if (ret != (char *)0) printf_va_102("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)219,(unsigned int)rc); + if ((int)str1[0] != '\000') printf_va_103("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)232, + (unsigned int)rc); + testno ++; + printf_va_104("Test #%d:\n",(int)testno); + strcpy(str1,"keep it simple"); + ret = stpcpy_s(& str1[5],(unsigned int)128,(char const *)(str1),& rc); + if (rc != 404) printf_va_105("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)248, + (unsigned int)rc); + if (ret != (char *)0) printf_va_106("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)252,(unsigned int)rc); + if ((int)str1[5] != '\000') printf_va_107("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)265, + (unsigned int)rc); + testno ++; + printf_va_108("Test #%d:\n",(int)testno); + strcpy(str1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = (char)'\000'; + ret = stpcpy_s(str1,(unsigned int)(128 / 2),(char const *)(str2),& rc); + if (rc != 0) printf_va_109("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)287, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_0; + else + if ((int)*(ret + 0) != '\000') goto _LOR_0; + else + if (ret != str1) _LOR_0: + printf_va_110("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)291,(unsigned int)rc); + if ((int)str1[0] != '\000') printf_va_111("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)304, + (unsigned int)rc); + testno ++; + printf_va_112("Test #%d:\n",(int)testno); + str1[0] = (char)'\000'; + strcpy(str2,"keep it simple"); + ret = stpcpy_s(str2,(unsigned int)128,(char const *)(str1),& rc); + if (rc != 0) printf_va_113("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)319, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_1; + else + if ((int)*(ret + 0) != '\000') goto _LOR_1; + else + if (ret != str2) _LOR_1: + printf_va_114("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)323,(unsigned int)rc); + if ((int)str2[0] != '\000') printf_va_115("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)328,str1, + (unsigned int)rc); + testno ++; + printf_va_116("Test #%d:\n",(int)testno); + str1[0] = (char)'\000'; + strcpy(str2,"keep it simple"); + ret = stpcpy_s(str1,(unsigned int)128,(char const *)(str2),& rc); + if (rc != 0) printf_va_117("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)341, + (unsigned int)rc); + ind = strcmp((char const *)(str1),(char const *)(str2)); + if (ind != 0) printf_va_118("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)348,str1, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_2; + else + if ((int)*(ret + 0) != '\000') goto _LOR_2; + else { + rsize_t tmp_0; + tmp_0 = strnlen_s((char const *)(str1),(unsigned int)128); + ; + if (ret != & str1[tmp_0]) _LOR_2: + printf_va_119("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)353, + (unsigned int)rc); + } + testno ++; + printf_va_120("Test #%d:\n",(int)testno); + strcpy(str1,"qqweqeqeqeq"); + strcpy(str2,"keep it simple"); + ret = stpcpy_s(str1,(unsigned int)128,(char const *)(str2),& rc); + if (rc != 0) printf_va_121("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)366, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_3; + else + if ((int)*(ret + 0) != '\000') goto _LOR_3; + else { + rsize_t tmp_1; + tmp_1 = strnlen_s((char const *)(str1),(unsigned int)128); + ; + if (ret != & str1[tmp_1]) _LOR_3: + printf_va_122("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)371, + (unsigned int)rc); + } + ind = strcmp((char const *)(str1),(char const *)(str2)); + if (ind != 0) printf_va_123("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)378,str1, + (unsigned int)rc); + testno ++; + printf_va_124("Test #%d:\n",(int)testno); + strcpy(str1,"qqweqeqeqeq"); + strcpy(str2,"keep it simple"); + ret = stpcpy_s(str1,(unsigned int)1,(char const *)(str2),& rc); + if (rc != 406) printf_va_125("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)391, + (unsigned int)rc); + if (ret != (char *)0) printf_va_126("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)395,(unsigned int)rc); + if ((int)str1[0] != '\000') printf_va_127("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)400,str1, + (unsigned int)rc); + testno ++; + printf_va_128("Test #%d:\n",(int)testno); + strcpy(str1,"qqweqeqeqeq"); + strcpy(str2,"keep it simple"); + ret = stpcpy_s(str2,(unsigned int)2,(char const *)(str1),& rc); + if (rc != 406) printf_va_129("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)413, + (unsigned int)rc); + if (ret != (char *)0) printf_va_130("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)417,(unsigned int)rc); + if ((int)str2[0] != '\000') printf_va_131("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)422,str1, + (unsigned int)rc); + testno ++; + printf_va_132("Test #%d:\n",(int)testno); + strcpy(str1,"qqweqeqeqeq"); + strcpy(str2,"it"); + ret = stpcpy_s(str1,(unsigned int)3,(char const *)(str2),& rc); + if (rc != 0) printf_va_133("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)435, + (unsigned int)rc); + ind = strcmp((char const *)(str1),(char const *)(str2)); + if (ind != 0) printf_va_134("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)442,str1, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_4; + else + if ((int)*(ret + 0) != '\000') goto _LOR_4; + else { + rsize_t tmp_2; + tmp_2 = strnlen_s((char const *)(str1),(unsigned int)128); + ; + if (ret != & str1[tmp_2]) _LOR_4: + printf_va_135("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)446, + (unsigned int)rc); + } + testno ++; + printf_va_136("Test #%d:\n",(int)testno); + strcpy(str2,"qq12345weqeqeqeq"); + strcpy(str1,"it"); + ret = stpcpy_s(str2,(unsigned int)10,(char const *)(str1),& rc); + if (rc != 0) printf_va_137("%s %u Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)459, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_5; + else + if ((int)*(ret + 0) != '\000') goto _LOR_5; + else { + rsize_t tmp_3; + tmp_3 = strnlen_s((char const *)(str2),(unsigned int)128); + ; + if (ret != & str2[tmp_3]) _LOR_5: + printf_va_138("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpcpy_s", + (unsigned int)463, + (unsigned int)rc); + } + ind = strcmp((char const *)(str1),(char const *)(str2)); + if (ind != 0) printf_va_139("%s %u -%s- Error rc=%u \n", + (char *)"test_stpcpy_s",(unsigned int)470,str1, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static char str1_0[128]; +static char str2_0[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_140(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_141(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_142(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_143(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_144(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_145(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_146(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_147(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_148(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_149(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_150(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_151(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_152(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_153(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_154(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_155(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_156(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_157(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_158(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_159(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_160(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_161(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_162(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_163(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_164(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_165(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_166(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_167(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_168(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_169(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_170(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_171(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_172(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_173(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_174(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_175(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_176(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_177(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_178(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3, + size_t param4, unsigned int param5); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_179(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_180(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_181(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_182(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_183(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3, + size_t param4, unsigned int param5); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_184(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_185(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_186(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_187(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_188(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_189(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_190(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_191(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_192(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_193(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_194(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_195(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_196(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_197(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_198(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_199(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_200(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_201(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_202(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_203(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_204(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_205(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_206(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_207(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_208(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_209(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_210(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_211(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_212(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_213(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_214(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_215(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_216(char const * __restrict format, char *param0, + unsigned int param1, char *param2, unsigned int param3); + +int test_stpncpy_s(void) +{ + int __retres; + char *ret; + errno_t rc; + uint32_t i; + int32_t ind; + rsize_t sz; + unsigned int testno = (unsigned int)0; + printf_va_140("\nTesting stpncpy_s:\n"); + testno ++; + printf_va_141("Test #%d:\n",(int)testno); + ret = stpncpy_s((char *)0,(unsigned int)128,(char const *)(str2_0), + (unsigned int)128,& rc); + if (rc != 400) printf_va_142("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)107, + (unsigned int)rc); + if (ret != (char *)0) printf_va_143("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)112,(unsigned int)rc); + testno ++; + printf_va_144("Test #%d:\n",(int)testno); + ret = stpncpy_s(str1_0,(unsigned int)0,(char const *)(str2_0), + (unsigned int)128,& rc); + if (rc != 401) printf_va_145("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)122, + (unsigned int)rc); + if (ret != (char *)0) printf_va_146("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)126,(unsigned int)rc); + testno ++; + printf_va_147("Test #%d:\n",(int)testno); + ret = stpncpy_s(str1_0,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_0),(unsigned int)128,& rc); + if (rc != 403) printf_va_148("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)137, + (unsigned int)rc); + if (ret != (char *)0) printf_va_149("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)141,(unsigned int)rc); + testno ++; + printf_va_150("Test #%d:\n",(int)testno); + strcpy(str1_0,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + ret = stpncpy_s(str1_0,(unsigned int)5,(char const *)0,(unsigned int)128, + & rc); + if (rc != 400) printf_va_151("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)153, + (unsigned int)rc); + if (ret != (char *)0) printf_va_152("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)158,(unsigned int)rc); + if ((int)str1_0[0] != '\000') printf_va_153("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)171, + (unsigned int)rc); + testno ++; + printf_va_154("Test #%d:\n",(int)testno); + strcpy(str1_0,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + sz = strnlen_s((char const *)(str1_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)5,(char const *)(str1_0),sz,& rc); + if (rc != 406) printf_va_155("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)186, + (unsigned int)rc); + if (ret != (char *)0) printf_va_156("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)192,(unsigned int)rc); + testno ++; + printf_va_157("Test #%d:\n",(int)testno); + strcpy(str1_0,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + sz = strnlen_s((char const *)(str1_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str1_0),sz,& rc); + if (rc != 0) printf_va_158("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)206, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR; + else + if ((int)*(ret + 0) != '\000') goto _LOR; + else { + rsize_t tmp; + tmp = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp]) _LOR: + printf_va_159("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)211, + (unsigned int)rc); + } + testno ++; + printf_va_160("Test #%d:\n",(int)testno); + strcpy(str1_0,"keep it simple"); + sz = strnlen_s((char const *)(str1_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(& str1_0[5]),sz, + & rc); + if (rc != 404) printf_va_161("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)225, + (unsigned int)rc); + if (ret != (char *)0) printf_va_162("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)229,(unsigned int)rc); + if ((int)str1_0[0] != '\000') printf_va_163("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)242, + (unsigned int)rc); + testno ++; + printf_va_164("Test #%d:\n",(int)testno); + strcpy(str1_0,"keep it simple"); + sz = strnlen_s((char const *)(str1_0),(unsigned int)128); + ret = stpncpy_s(& str1_0[5],(unsigned int)128,(char const *)(str1_0),sz, + & rc); + if (rc != 404) printf_va_165("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)258, + (unsigned int)rc); + if (ret != (char *)0) printf_va_166("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)262,(unsigned int)rc); + if ((int)str1_0[5] != '\000') printf_va_167("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)275, + (unsigned int)rc); + testno ++; + printf_va_168("Test #%d:\n",(int)testno); + strcpy(str1_0,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_0[0] = (char)'\000'; + ret = stpncpy_s(str1_0,(unsigned int)(128 / 2),(char const *)(str2_0), + (unsigned int)1,& rc); + if (rc != 0) printf_va_169("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)297, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_0; + else + if ((int)*(ret + 0) != '\000') goto _LOR_0; + else + if (ret != str1_0) _LOR_0: + printf_va_170("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)301,(unsigned int)rc); + if ((int)str1_0[0] != '\000') printf_va_171("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)314, + (unsigned int)rc); + testno ++; + printf_va_172("Test #%d:\n",(int)testno); + memset_s((void *)(str1_0),(unsigned int)'\000',(unsigned char)5); + strcpy(str2_0,"keep it simple"); + ret = stpncpy_s(str2_0,(unsigned int)128,(char const *)(str1_0), + (unsigned int)5,& rc); + if (rc != 0) printf_va_173("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)329, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_1; + else + if ((int)*(ret + 0) != '\000') goto _LOR_1; + else + if (ret != str2_0) _LOR_1: + printf_va_174("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)333,(unsigned int)rc); + if ((int)str2_0[0] != '\000') printf_va_175("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)338,str1_0, + (unsigned int)rc); + testno ++; + printf_va_176("Test #%d:\n",(int)testno); + memset_s((void *)(str1_0),(unsigned int)'\000',(unsigned char)50); + strcpy(str2_0,"keep it simple"); + sz = strnlen_s((char const *)(str2_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str2_0),sz,& rc); + if (rc != 0) printf_va_177("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)353, + (unsigned int)rc); + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_178("%s %u -%s- <> -%s- (smax=%zu) Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)360, + str1_0,str2_0,sz,(unsigned int)rc); + if (ret == (char *)0) goto _LOR_2; + else + if ((int)*(ret + 0) != '\000') goto _LOR_2; + else { + rsize_t tmp_0; + tmp_0 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_0]) _LOR_2: + printf_va_179("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)365, + (unsigned int)rc); + } + testno ++; + printf_va_180("Test #%d:\n",(int)testno); + strcpy(str1_0,"xxxxxxxxxx"); + strcpy(str2_0,"abcde"); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str2_0), + (unsigned int)3,& rc); + if (rc != 0) printf_va_181("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)378, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_4; + else + if ((int)*(ret + 0) != '\000') goto _LOR_4; + else { + rsize_t tmp_1; + tmp_1 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_1]) _LOR_4: + printf_va_182("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)383, + (unsigned int)rc); + else { + sz = strnlen_s((char const *)(str1_0),(unsigned int)128); + ind = strncmp((char const *)(str1_0),(char const *)(str2_0),sz); + if (ind != 0) goto _LOR_3; + else + if (sz != (rsize_t)3) _LOR_3: + printf_va_183("%s %u -%s- <> -%s- (smax=%zu) Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)391,str1_0, + str2_0,sz,(unsigned int)rc); + i = (unsigned int)1; + while (i < (uint32_t)6) { + if ((int)*(ret + i) != 'x') printf_va_184("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)397,(int)i, + (unsigned int)rc); + i += (uint32_t)1; + } + } + } + testno ++; + printf_va_185("Test #%d:\n",(int)testno); + strcpy(str1_0,"xxxxxxxxxxxxxxxxxxxx"); + strcpy(str2_0,"abcde"); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str2_0), + (unsigned int)10,& rc); + if (rc != 0) printf_va_186("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)412, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_5; + else + if ((int)*(ret + 0) != '\000') goto _LOR_5; + else { + rsize_t tmp_2; + tmp_2 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_2]) _LOR_5: + printf_va_187("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)417, + (unsigned int)rc); + else { + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_188("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)424,str1_0, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < (uint32_t)5) { + if ((int)*(ret + i) != '\000') printf_va_189("%s %u Incorrect NULL fill at returned ptr index %d Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)430, + (int)i, + (unsigned int)rc); + i += (uint32_t)1; + } + while (i < (uint32_t)15) { + if ((int)*(ret + i) != 'x') printf_va_190("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)437, + (int)i, + (unsigned int)rc); + i += (uint32_t)1; + } + } + } + } + testno ++; + printf_va_191("Test #%d:\n",(int)testno); + strcpy(str1_0,"xxxxxxxxxx"); + strcpy(str2_0,"abcde"); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str2_0), + (unsigned int)5,& rc); + if (rc != 0) printf_va_192("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)453, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_6; + else + if ((int)*(ret + 0) != '\000') goto _LOR_6; + else { + rsize_t tmp_3; + tmp_3 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_3]) _LOR_6: + printf_va_193("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)458, + (unsigned int)rc); + else { + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_194("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)465,str1_0, + (unsigned int)rc); + else { + i = (unsigned int)1; + while (i < (uint32_t)5) { + if ((int)*(ret + i) != 'x') printf_va_195("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)471, + (int)i, + (unsigned int)rc); + i += (uint32_t)1; + } + } + } + } + testno ++; + printf_va_196("Test #%d:\n",(int)testno); + strcpy(str1_0,"xxxxxxxxxx"); + strcpy(str2_0,"abcde"); + ret = stpncpy_s(str1_0,(unsigned int)128,(char const *)(str2_0), + (unsigned int)6,& rc); + if (rc != 0) printf_va_197("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)487, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_7; + else + if ((int)*(ret + 0) != '\000') goto _LOR_7; + else { + rsize_t tmp_4; + tmp_4 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_4]) _LOR_7: + printf_va_198("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)492, + (unsigned int)rc); + else { + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_199("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)499,str1_0, + (unsigned int)rc); + else { + i = (unsigned int)1; + while (i < (uint32_t)5) { + if ((int)*(ret + i) != 'x') printf_va_200("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)505, + (int)i, + (unsigned int)rc); + i += (uint32_t)1; + } + } + } + } + testno ++; + printf_va_201("Test #%d:\n",(int)testno); + strcpy(str1_0,"qqweqeqeqeq"); + strcpy(str2_0,"keep it simple"); + sz = strnlen_s((char const *)(str2_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)1,(char const *)(str2_0),sz,& rc); + if (rc != 406) printf_va_202("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)522, + (unsigned int)rc); + if (ret != (char *)0) printf_va_203("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)526,(unsigned int)rc); + if ((int)str1_0[0] != '\000') printf_va_204("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)531,str1_0, + (unsigned int)rc); + testno ++; + printf_va_205("Test #%d:\n",(int)testno); + strcpy(str1_0,"qqweqeqeqeq"); + strcpy(str2_0,"keep it simple"); + sz = strnlen_s((char const *)(str2_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)14,(char const *)(str2_0),sz,& rc); + if (rc != 406) printf_va_206("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)545, + (unsigned int)rc); + if (ret != (char *)0) printf_va_207("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)549,(unsigned int)rc); + if ((int)str1_0[0] != '\000') printf_va_208("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)554,str1_0, + (unsigned int)rc); + testno ++; + printf_va_209("Test #%d:\n",(int)testno); + strcpy(str1_0,"qqweqeqeqeq"); + strcpy(str2_0,"it"); + sz = strnlen_s((char const *)(str2_0),(unsigned int)128); + ret = stpncpy_s(str1_0,(unsigned int)3,(char const *)(str2_0),sz,& rc); + if (rc != 0) printf_va_210("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)568, + (unsigned int)rc); + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_211("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)575, + str1_0,(unsigned int)rc); + if (ret == (char *)0) goto _LOR_8; + else + if ((int)*(ret + 0) != '\000') goto _LOR_8; + else { + rsize_t tmp_5; + tmp_5 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_5]) _LOR_8: + printf_va_212("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)579, + (unsigned int)rc); + } + testno ++; + printf_va_213("Test #%d:\n",(int)testno); + strcpy(str1_0,"qq12345weqeqeqeq"); + strcpy(str2_0,"it"); + ret = stpncpy_s(str1_0,(unsigned int)10,(char const *)(str2_0), + (unsigned int)2,& rc); + if (rc != 0) printf_va_214("%s %u Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)592, + (unsigned int)rc); + if (ret == (char *)0) goto _LOR_9; + else + if ((int)*(ret + 0) != '\000') goto _LOR_9; + else { + rsize_t tmp_6; + tmp_6 = strnlen_s((char const *)(str1_0),(unsigned int)128); + ; + if (ret != & str1_0[tmp_6]) _LOR_9: + printf_va_215("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_stpncpy_s", + (unsigned int)596, + (unsigned int)rc); + } + ind = strcmp((char const *)(str1_0),(char const *)(str2_0)); + if (ind != 0) printf_va_216("%s %u -%s- Error rc=%u \n", + (char *)"test_stpncpy_s",(unsigned int)603, + str1_0,(unsigned int)rc); + __retres = 0; + return __retres; +} + +static char str1_1[128]; +static char str2_1[128]; +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_217(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_218(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_219(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_220(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_221(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_222(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_223(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_224(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_225(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_226(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_227(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_228(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_229(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_230(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_231(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_232(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_233(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_234(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_235(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_236(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_237(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_238(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_239(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_240(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_241(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_242(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_243(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_244(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_245(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +int test_strcasecmp_s(void) +{ + int __retres; + errno_t rc; + int ind; + int std_ind; + rc = strcasecmp_s((char const *)0,(unsigned int)128,(char const *)(str2_1), + & ind); + if (rc != 400) printf_va_217("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)29, + rc); + if (ind != 0) printf_va_218("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)34, + ind,rc); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128,(char const *)0, + & ind); + if (rc != 400) printf_va_219("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)42, + rc); + if (ind != 0) printf_va_220("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)47, + ind,rc); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),(int *)0); + if (rc != 400) printf_va_221("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)55, + rc); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)0, + (char const *)(str2_1),& ind); + if (rc != 401) printf_va_222("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)63, + rc); + if (ind != 0) printf_va_223("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)68, + ind,rc); + rc = strcasecmp_s((char const *)(str1_1), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_1),& ind); + if (rc != 403) printf_va_224("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)76, + rc); + if (ind != 0) printf_va_225("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)81, + ind,rc); + str1_1[0] = (char)'\000'; + str2_1[0] = (char)'\000'; + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_226("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)92,rc); + if (ind != 0) printf_va_227("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)97, + ind,rc); + std_ind = strcasecmp((char const *)(str1_1),(char const *)(str2_1)); + if (ind != std_ind) printf_va_228("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcasecmp_s", + (unsigned int)103,ind,std_ind,rc); + strcpy(str1_1,"KEEP IT SIMPLE"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)1, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_229("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)114, + rc); + if (ind != 0) printf_va_230("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)119, + ind,rc); + strcpy(str1_1,"KEEP IT SIMPLE"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)2, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_231("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)129, + rc); + if (ind != 0) printf_va_232("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)134, + ind,rc); + strcpy(str1_1,"KEEP IT SIMPLE"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)4, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_233("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)145, + rc); + if (ind != 0) printf_va_234("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)150, + ind,rc); + strcpy(str1_1,"KEEP IT SIMPLE"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_235("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)161, + rc); + if (ind != 0) printf_va_236("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)166, + ind,rc); + std_ind = strcasecmp((char const *)(str1_1),(char const *)(str2_1)); + if (ind != std_ind) printf_va_237("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcasecmp_s", + (unsigned int)172,ind,std_ind,rc); + strcpy(str1_1,"keep it simple"); + strcpy(str2_1,"keeP it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_238("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)183, + rc); + if (ind != 0) printf_va_239("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)188, + ind,rc); + strcpy(str1_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str1_1),& ind); + if (rc != 0) printf_va_240("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)198, + rc); + if (ind != 0) printf_va_241("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)203, + ind,rc); + strcpy(str1_1,"KEEP it simplified"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_242("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)214, + rc); + if (ind != 'I' - 'E') printf_va_243("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcasecmp_s", + (unsigned int)219,ind,rc); + strcpy(str1_1,"KEEP 1234567890"); + strcpy(str2_1,"keep it simple"); + rc = strcasecmp_s((char const *)(str1_1),(unsigned int)128, + (char const *)(str2_1),& ind); + if (rc != 0) printf_va_244("%s %u Error rc=%d \n", + (char *)"test_strcasecmp_s",(unsigned int)230, + rc); + if (ind != '1' - 'I') printf_va_245("%s %u Error ind=%d rc=%d %d \n", + (char *)"test_strcasecmp_s", + (unsigned int)235,ind,rc,'1' - 'I'); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_246(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_247(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_248(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_249(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_250(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_251(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_252(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_253(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_254(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_255(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_256(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_257(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_258(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_259(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_260(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_261(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_262(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_263(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_264(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_265(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_266(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_267(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_268(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_269(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_270(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_271(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_272(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_273(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_274(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_275(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_276(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_277(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_278(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_279(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_280(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_281(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_282(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_283(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_284(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_285(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_286(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_287(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_288(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_289(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_290(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_291(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_292(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_293(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_294(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_295(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_296(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param0 + (0 ..)); + */ +int printf_va_297(char const * __restrict format, char *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_298(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_299(char const * __restrict format, void *param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_300(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_301(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_302(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_303(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_304(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_305(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_306(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_307(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_308(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_309(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_310(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_311(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_312(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_313(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_314(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strcasestr_s(void) +{ + int __retres; + errno_t rc; + char *sub; + char *std_sub; + rsize_t len1; + rsize_t len2; + char str1_17[128]; + char str2_16[128]; + rc = strcasestr_s((char *)0,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 400) printf_va_246("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)34, + rc); + if (sub) printf_va_247("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)39,rc); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)0, + (unsigned int)128,& sub); + if (rc != 400) printf_va_248("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)47, + rc); + if (sub) printf_va_249("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)52,rc); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,(char **)0); + if (rc != 400) printf_va_250("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)60, + rc); + rc = strcasestr_s(str1_17,(unsigned int)0,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 401) printf_va_251("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)68, + rc); + if (sub) printf_va_252("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)73,rc); + rc = strcasestr_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),(unsigned int)128,& sub); + if (rc != 403) printf_va_253("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)81, + rc); + if (sub) printf_va_254("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)86,rc); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)0,& sub); + if (rc != 401) printf_va_255("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)94, + rc); + if (sub) printf_va_256("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)99,rc); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)((4UL << 10) + (unsigned long)1),& sub); + if (rc != 403) printf_va_257("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)107, + rc); + if (sub) printf_va_258("%s %u Error rc=%d \n",(char *)"test_strcasestr_s", + (unsigned int)112,rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_259("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)123, + rc); + if (sub != str1_17) printf_va_260("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)128,rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) { + printf_va_261("%s %u Error strcasestr_s() does not have same return as strcasestr() when str1 & str2 are zero length strings. rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)135, + (unsigned int)rc); + printf_va_262("str1:[%s]\n",str1_17); + printf_va_263("str2:[%s]\n",str2_16); + printf_va_264("strcasestr_s returns:[%p]\n",(void *)sub); + printf_va_265("strcasestr returns:[%p]\n\n",(void *)std_sub); + } + str1_17[0] = (char)'\000'; + strcpy(str1_17,"key"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_266("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)150, + rc); + if (sub != str1_17) printf_va_267("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)155,rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) { + printf_va_268("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is zero length string. rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)162, + (unsigned int)rc); + printf_va_269("str1:[%s]\n",str1_17); + printf_va_270("str2:[%s]\n",str2_16); + printf_va_271("strcasestr_s returns:[%p]\n",(void *)sub); + printf_va_272("strcasestr returns:[%p]\n\n",(void *)std_sub); + } + strcpy(str1_17,"keep it all together"); + str2_16[0] = (char)'\000'; + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_273("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)178, + rc); + if (sub != str1_17) printf_va_274("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)183,rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) { + printf_va_275("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is zero length string. rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)190, + (unsigned int)rc); + printf_va_276("str1:[%s]\n",str1_17); + printf_va_277("str2:[%s]\n",str2_16); + printf_va_278("strcasestr_s returns:[%p]\n",(void *)sub); + printf_va_279("strcasestr returns:[%p]\n\n",(void *)std_sub); + } + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"kee"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_280("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)206, + rc); + if (sub != str1_17) printf_va_281("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)211,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"eep it"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_282("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)223, + rc); + if (sub != & str1_17[1]) printf_va_283("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)228,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"ethe"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_284("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)240, + rc); + if (sub != & str1_17[15]) printf_va_285("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)245,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"er"); + len1 = strlen((char const *)(str1_17)); + len2 = strlen((char const *)(str2_16)); + rc = strcasestr_s(str1_17,len1,(char const *)(str2_16),len2,& sub); + if (rc != 0) printf_va_286("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)260, + rc); + if (sub != & str1_17[18]) printf_va_287("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)265,rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) { + printf_va_288("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is substring of the end of str1. rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)272, + (unsigned int)rc); + printf_va_289("str1:[%s]\n",str1_17); + printf_va_290("str2:[%s]\n",str2_16); + printf_va_291("strcasestr_s returns:[%p]\n",(void *)sub); + printf_va_292("strcasestr returns:[%p]\n\n",(void *)std_sub); + } + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"er"); + len1 = strlen((char const *)(str1_17)); + len2 = strlen((char const *)(str2_16)); + rc = strcasestr_s(str1_17,len1,(char const *)(str2_16),(unsigned int)2, + & sub); + if (rc != 0) printf_va_293("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)291, + rc); + if (sub != & str1_17[18]) printf_va_294("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)296,rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) { + printf_va_295("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is substring of middle of str1. rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)303, + (unsigned int)rc); + printf_va_296("str1:[%s]\n",str1_17); + printf_va_297("str2:[%s]\n",str2_16); + printf_va_298("strcasestr_s returns:[%p]\n",(void *)sub); + printf_va_299("strcasestr returns:[%p]\n\n",(void *)std_sub); + } + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"it all"); + rc = strcasestr_s(str1_17,(unsigned int)3,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 409) printf_va_300("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)318, + rc); + if (sub != (char *)0) printf_va_301("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)323,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"it all"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)1,& sub); + if (rc != 0) printf_va_302("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)334, + rc); + if (sub != & str1_17[5]) printf_va_303("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)339,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"it all"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)2,& sub); + if (rc != 0) printf_va_304("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)350, + rc); + if (sub != & str1_17[5]) printf_va_305("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)355,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"it all"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)5,& sub); + if (rc != 0) printf_va_306("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)366, + rc); + if (sub != & str1_17[5]) printf_va_307("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)371,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"1234"); + len1 = strlen((char const *)(str1_17)); + rc = strcasestr_s(str1_17,len1,(char const *)(str2_16),(unsigned int)128, + & sub); + if (rc != 409) printf_va_308("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)383, + rc); + if (sub != (char *)0) printf_va_309("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)388,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"IT ALL"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_310("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s",(unsigned int)399, + rc); + if (sub != & str1_17[5]) printf_va_311("%s %u Error rc=%d \n", + (char *)"test_strcasestr_s", + (unsigned int)404,rc); + strcpy(str1_17,"keep it all together"); + strcpy(str2_16,"EEP"); + rc = strcasestr_s(str1_17,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128,& sub); + if (rc != 0) printf_va_312("%s %u Error rc=%u \n", + (char *)"test_strcasestr_s",(unsigned int)416, + (unsigned int)rc); + if (sub != & str1_17[1]) printf_va_313("%s %u Error rc=%u \n", + (char *)"test_strcasestr_s", + (unsigned int)421,(unsigned int)rc); + std_sub = strcasestr((char const *)(str1_17),(char const *)(str2_16)); + if ((int)sub != (int)std_sub) printf_va_314("%s %u Error rc=%u \n", + (char *)"test_strcasestr_s", + (unsigned int)428, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static char str1_2[128]; +static char str2_2[128]; +int test_strcat_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + size_t tmp; + size_t tmp_0; + size_t tmp_1; + rc = strcat_s((char *)0,(unsigned int)128,(char const *)(str2_2)); + if (rc != 400) ; + rc = strcat_s(str1_2,(unsigned int)128,(char const *)0); + if (rc != 400) ; + rc = strcat_s(str1_2,(unsigned int)0,(char const *)(str2_2)); + if (rc != 401) ; + rc = strcat_s(str1_2,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_2)); + if (rc != 403) ; + strcpy(str1_2,"aaaaaaaaaa"); + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)1,(char const *)(str2_2)); + if (rc != 407) ; + if ((int)str1_2[0] != '\000') ; + strcpy(str1_2,"aaaaaaaaaa"); + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)2,(char const *)(str2_2)); + if (rc != 407) ; + if ((int)str1_2[0] != '\000') ; + strcpy(str1_2,"aaaaaaaaaa"); + strcpy(str2_2,"keep it simple"); + tmp = strlen((char const *)(str1_2)); + len1 = (int)tmp; + tmp_0 = strlen((char const *)(str2_2)); + len2 = (int)tmp_0; + rc = strcat_s(str1_2,(unsigned int)50,(char const *)(str2_2)); + if (rc != 0) ; + tmp_1 = strlen((char const *)(str1_2)); + len3 = (int)tmp_1; + if (len3 != len1 + len2) ; + str1_2[0] = (char)'\000'; + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)1,(char const *)(str2_2)); + if (rc != 406) ; + if ((int)str1_2[0] != '\000') ; + str1_2[0] = (char)'\000'; + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)2,(char const *)(str2_2)); + if (rc != 406) ; + if ((int)str1_2[0] != '\000') ; + str1_2[0] = (char)'\000'; + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)20,(char const *)(str2_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_2),(char const *)(str2_2)); + if (ind != 0) ; + str1_2[0] = (char)'\000'; + str2_2[0] = (char)'\000'; + rc = strcat_s(str1_2,(unsigned int)128,(char const *)(str2_2)); + if (rc != 0) ; + if ((int)str1_2[0] != '\000') ; + str1_2[0] = (char)'\000'; + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)128,(char const *)(str2_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_2),(char const *)(str2_2)); + if (ind != 0) ; + strcpy(str1_2,"qqweqq"); + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)128,(char const *)(str2_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_2),"qqweqqkeep it simple"); + if (ind != 0) ; + strcpy(str1_2,"1234"); + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)12,(char const *)(str2_2)); + if (rc != 406) ; + strcpy(str1_2,"1234"); + strcpy(str2_2,"keep it simple"); + rc = strcat_s(str1_2,(unsigned int)52,(char const *)(str2_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_2),"1234keep it simple"); + if (ind != 0) ; + strcpy(str1_2,"12345678901234567890"); + rc = strcat_s(str1_2,(unsigned int)8,(char const *)(& str1_2[7])); + if (rc != 404) ; + if ((int)str1_2[0] != '\000') ; + strcpy(str1_2,"123456789"); + rc = strcat_s(str1_2,(unsigned int)9,(char const *)(& str1_2[8])); + if (rc != 404) ; + if ((int)str1_2[0] != '\000') ; + strcpy(str2_2,"123"); + strcpy(str1_2,"keep it simple"); + rc = strcat_s(str2_2,(unsigned int)31,(char const *)(str1_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str2_2),"123keep it simple"); + if (ind != 0) ; + strcpy(str2_2,"1234"); + strcpy(str1_2,"56789"); + rc = strcat_s(str2_2,(unsigned int)10,(char const *)(str1_2)); + if (rc != 0) ; + ind = strcmp((char const *)(str2_2),"123456789"); + if (ind != 0) ; + __retres = 0; + return __retres; +} + +static char str1_3[128]; +static char str2_3[128]; +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_315(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_316(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_317(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_318(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_319(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_320(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_321(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_322(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_323(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_324(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_325(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_326(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_327(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_328(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_329(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_330(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_331(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_332(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_333(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_334(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_335(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_336(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_337(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_338(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_339(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_340(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_341(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_342(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_343(char const * __restrict format, char *param0, + unsigned int param1, int param2, int param3, int param4); + +int test_strcmp_s(void) +{ + int __retres; + errno_t rc; + int ind; + int std_ind; + rc = strcmp_s((char const *)0,(unsigned int)128,(char const *)(str2_3), + & ind); + if (rc != 400) printf_va_315("%s %u Error rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)28,rc); + if (ind != 0) printf_va_316("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)33,ind, + rc); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128,(char const *)0, + & ind); + if (rc != 400) printf_va_317("%s %u Error rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)41,rc); + if (ind != 0) printf_va_318("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)46,ind, + rc); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),(int *)0); + if (rc != 400) printf_va_319("%s %u Error rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)54,rc); + rc = strcmp_s((char const *)(str1_3),(unsigned int)0, + (char const *)(str2_3),& ind); + if (rc != 401) printf_va_320("%s %u Error rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)62,rc); + if (ind != 0) printf_va_321("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)67,ind, + rc); + rc = strcmp_s((char const *)(str1_3), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_3),& ind); + if (rc != 403) printf_va_322("%s %u Error rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)75,rc); + if (ind != 0) printf_va_323("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)80,ind, + rc); + str1_3[0] = (char)'\000'; + str2_3[0] = (char)'\000'; + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_324("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)91,rc); + if (ind != 0) printf_va_325("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)96,ind, + rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str2_3)); + if (ind != std_ind) printf_va_326("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)102,ind,std_ind,rc); + strcpy(str1_3,"keep it simple"); + strcpy(str2_3,"keep it simple"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)5, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_327("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)113,rc); + if (ind != 0) printf_va_328("%s %u ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)118,ind, + rc); + strcpy(str1_3,"Keep it simple"); + strcpy(str2_3,"keep it simple"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_329("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)130,rc); + if (ind != -32) printf_va_330("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)135, + ind,rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str2_3)); + if (ind != std_ind) printf_va_331("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)141,ind,std_ind,rc); + strcpy(str1_3,"keep it simple"); + strcpy(str2_3,"keeP it simple"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_332("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)153,rc); + if (ind != 32) printf_va_333("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)158,ind, + rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str2_3)); + if (ind != std_ind) printf_va_334("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)164,ind,std_ind,rc); + strcpy(str1_3,"keep it simple"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str1_3),& ind); + if (rc != 0) printf_va_335("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)174,rc); + if (ind != 0) printf_va_336("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)179,ind, + rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str1_3)); + if (ind != std_ind) printf_va_337("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)186,ind,std_ind,rc); + strcpy(str1_3,"keep it simplified"); + strcpy(str2_3,"keep it simple"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_338("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)197,rc); + if (ind <= 0) printf_va_339("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)202,ind, + rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str2_3)); + if (ind != std_ind) printf_va_340("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)209,ind,std_ind,rc); + strcpy(str1_3,"keep it simple"); + strcpy(str2_3,"keep it simplified"); + rc = strcmp_s((char const *)(str1_3),(unsigned int)128, + (char const *)(str2_3),& ind); + if (rc != 0) printf_va_341("%s %u Error rc=%d \n",(char *)"test_strcmp_s", + (unsigned int)220,rc); + if (ind >= 0) printf_va_342("%s %u Error ind=%d rc=%d \n", + (char *)"test_strcmp_s",(unsigned int)225,ind, + rc); + std_ind = strcmp((char const *)(str1_3),(char const *)(str2_3)); + if (ind != std_ind) printf_va_343("%s %u ind=%d std_ind=%d rc=%d \n", + (char *)"test_strcmp_s", + (unsigned int)232,ind,std_ind,rc); + __retres = 0; + return __retres; +} + +int test_strcmpfld_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + int ind; + char str1_17[128]; + char str2_16[128]; + rc = strcmpfld_s((char const *)0,(unsigned int)128,(char const *)(str2_16), + & ind); + if (rc != 400) ; + len = (unsigned int)5; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)0,& ind); + if (rc != 400) ; + len = (unsigned int)5; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16), + (int *)0); + if (rc != 400) ; + rc = strcmpfld_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16),& ind); + if (rc != 401) ; + rc = strcmpfld_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),& ind); + if (rc != 403) ; + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)1; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)2; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)3; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen((char const *)(str1_17)); + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str1_17[10] = (char)'\000'; + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_16[10] = (char)'\000'; + len = strlen((char const *)(str1_17)); + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen((char const *)(str1_17)); + str1_17[0] = (char)'\000'; + str1_17[15] = (char)'\000'; + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_16[0] = (char)'\000'; + str2_16[15] = (char)'\000'; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen((char const *)(str1_17)); + str1_17[3] = (char)'\000'; + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_16[3] = (char)'\000'; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen((char const *)(str1_17)); + str1_17[1] = (char)'\000'; + str1_17[20] = (char)'\000'; + strcpy(str2_16,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_16[1] = (char)'\000'; + str2_16[20] = (char)'\000'; + rc = strcmpfld_s((char const *)(str1_17),len,(char const *)(str2_16),& ind); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static char str1_4[128]; +static char str2_4[128]; +int test_strcpy_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + rc = strcpy_s((char *)0,(unsigned int)128,(char const *)(str2_4)); + if (rc != 400) ; + strcpy(str1_4,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + rc = strcpy_s(str1_4,(unsigned int)5,(char const *)0); + if (rc != 400) ; + if ((int)str1_4[0] != '\000') ; + rc = strcpy_s(str1_4,(unsigned int)0,(char const *)(str2_4)); + if (rc != 401) ; + rc = strcpy_s(str1_4,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_4)); + if (rc != 403) ; + strcpy(str1_4,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_4[0] = (char)'\000'; + rc = strcpy_s(str1_4,(unsigned int)(128 / 2),(char const *)(str2_4)); + if (rc != 0) ; + if ((int)str1_4[0] != '\000') ; + strcpy(str1_4,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + rc = strcpy_s(str1_4,(unsigned int)128,(char const *)(str1_4)); + if (rc != 0) ; + strcpy(str1_4,"keep it simple"); + rc = strcpy_s(str1_4,(unsigned int)128,(char const *)(& str1_4[5])); + if (rc != 404) ; + if ((int)str1_4[0] != '\000') ; + strcpy(str1_4,"keep it simple"); + str2_4[0] = (char)'\000'; + rc = strcpy_s(str1_4,(unsigned int)128,(char const *)(str2_4)); + if (rc != 0) ; + if ((int)str1_4[0] != '\000') ; + str1_4[0] = (char)'\000'; + strcpy(str2_4,"keep it simple"); + rc = strcpy_s(str1_4,(unsigned int)128,(char const *)(str2_4)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_4),(char const *)(str2_4)); + if (ind != 0) ; + strcpy(str1_4,"qqweqeqeqeq"); + strcpy(str2_4,"keep it simple"); + rc = strcpy_s(str1_4,(unsigned int)128,(char const *)(str2_4)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_4),(char const *)(str2_4)); + if (ind != 0) ; + strcpy(str1_4,"qqweqeqeqeq"); + strcpy(str2_4,"keep it simple"); + rc = strcpy_s(str1_4,(unsigned int)1,(char const *)(str2_4)); + if (rc != 406) ; + if ((int)str1_4[0] != '\000') ; + strcpy(str1_4,"qqweqeqeqeq"); + strcpy(str2_4,"keep it simple"); + rc = strcpy_s(str1_4,(unsigned int)2,(char const *)(str2_4)); + if (rc != 406) ; + if ((int)str1_4[0] != '\000') ; + strcpy(str1_4,"qqweqeqeqeq"); + strcpy(str2_4,"it"); + rc = strcpy_s(str1_4,(unsigned int)3,(char const *)(str2_4)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_4),(char const *)(str2_4)); + if (ind != 0) ; + strcpy(str1_4,"qq12345weqeqeqeq"); + strcpy(str2_4,"it"); + rc = strcpy_s(str1_4,(unsigned int)10,(char const *)(str2_4)); + if (rc != 0) ; + ind = strcmp((char const *)(str1_4),(char const *)(str2_4)); + if (ind != 0) ; + __retres = 0; + return __retres; +} + +int test_strcpyfld_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + char str1_17[128]; + char str2_16[128]; + size_t tmp; + rsize_t slen = (unsigned int)0; + rc = strcpyfld_s((char *)0,(unsigned int)128,(char const *)(str2_16),slen); + if (rc != 400) ; + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)5; + slen = (unsigned int)5; + rc = strcpyfld_s(str1_17,len,(char const *)0,slen); + if (rc != 400) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + len = (unsigned int)5; + slen = (unsigned int)5; + rc = strcpyfld_s(str1_17,(unsigned int)0,(char const *)(str2_16),slen); + if (rc != 401) ; + len = (unsigned int)5; + slen = (unsigned int)5; + rc = strcpyfld_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),slen); + if (rc != 403) ; + len = (unsigned int)5; + slen = (unsigned int)0; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 401) ; + len = (unsigned int)5; + slen = len + (rsize_t)1; + rc = strcpyfld_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),slen); + if (rc != 403) ; + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)1; + strcpy(str2_16,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = (unsigned int)1; + str2_16[0] = (char)'\000'; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)2; + strcpy(str2_16,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = (unsigned int)2; + str2_16[0] = (char)'\000'; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)3; + strcpy(str2_16,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = (unsigned int)3; + str2_16[0] = (char)'\000'; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = strlen((char const *)(str2_16)); + str2_16[0] = (char)'\000'; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + tmp = strlen((char const *)(str1_17)); + len = tmp + (size_t)2; + str1_17[20] = (char)'\000'; + strcpy(str2_16,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = strlen((char const *)(str1_17)); + str2_16[0] = (char)'\000'; + str2_16[20] = (char)'\000'; + rc = strcpyfld_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < slen) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +int test_strcpyfldin_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + rsize_t slen; + char str1_17[128]; + char str2_16[128]; + rc = strcpyfldin_s((char *)0,(unsigned int)128,(char const *)(str2_16), + (unsigned int)128); + if (rc != 400) ; + len = (unsigned int)5; + rc = strcpyfldin_s(str1_17,len,(char const *)0,(unsigned int)128); + if (rc != 400) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + rc = strcpyfldin_s(str1_17,(unsigned int)0,(char const *)(str2_16), + (unsigned int)128); + if (rc != 401) ; + rc = strcpyfldin_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),(unsigned int)128); + if (rc != 403) ; + strcpy(str1_17,"aaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = strlen((char const *)(str1_17)); + slen = strlen((char const *)(str2_16)); + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),slen); + if (rc == 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != 0) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)1; + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)2; + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)3; + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)128; + rc = strcpyfldin_s(str1_17,len,(char const *)(str1_17),len); + if (rc != 404) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple for best results "); + len = strlen((char const *)(str1_17)); + rc = strcpyfldin_s(str1_17,len,(char const *)(& str1_17[5]),len); + if (rc != 404) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple for best results "); + len = (unsigned int)20; + rc = strcpyfldin_s(& str1_17[10],len,(char const *)(str1_17),len); + if (rc != 404) ; + i = (unsigned int)10; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"KEEP IT SIMPLE PLEASE"); + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),len); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"always keep it simple"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"keep it simple"); + slen = strlen((char const *)(str2_16)); + rc = strcpyfldin_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < slen) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +int test_strcpyfldout_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + char str1_17[128]; + char str2_16[128]; + rsize_t slen = (unsigned int)0; + rc = strcpyfldout_s((char *)0,(unsigned int)128,(char const *)(str2_16), + slen); + if (rc != 400) ; + len = (unsigned int)5; + rc = strcpyfldout_s(str1_17,len,(char const *)0,len); + if (rc != 400) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + rc = strcpyfldout_s(str1_17,(unsigned int)0,(char const *)(str2_16), + (unsigned int)128); + if (rc != 401) ; + rc = strcpyfldout_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),(unsigned int)128); + if (rc != 403) ; + len = (unsigned int)5; + slen = (unsigned int)0; + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 401) ; + len = (unsigned int)5; + slen = (unsigned int)6; + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 403) ; + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)1; + slen = (unsigned int)1; + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)2; + slen = (unsigned int)2; + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len - (rsize_t)1) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_16,"01234567890123456789"); + len = (unsigned int)3; + slen = (unsigned int)3; + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len - (rsize_t)1) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = (unsigned int)128; + rc = strcpyfldout_s(str1_17,len,(char const *)(str1_17),len); + if (rc != 404) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple for best results"); + len = strlen((char const *)(str1_17)); + rc = strcpyfldout_s(str1_17,len,(char const *)(& str1_17[5]),len); + if (rc != 404) ; + i = (unsigned int)0; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple for best results "); + len = (unsigned int)20; + rc = strcpyfldout_s(& str1_17[10],len,(char const *)(str1_17),len); + if (rc != 404) ; + i = (unsigned int)10; + while (i < len) { + if ((int)str1_17[i] != '\000') ; + i += (uint32_t)1; + } + strcpy(str1_17,"keep it simple"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"aaaaaaaaaaaaaa"); + slen = strlen((char const *)(str2_16)); + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < len - (rsize_t)1) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + strcpy(str1_17,"always keep it simple"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"keep it simple"); + slen = strlen((char const *)(str2_16)); + rc = strcpyfldout_s(str1_17,len,(char const *)(str2_16),slen); + if (rc != 0) ; + i = (unsigned int)0; + while (i < slen) { + if ((int)str1_17[i] != (int)str2_16[i]) ; + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + +static char str1_5[128]; +static char str2_5[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_344(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_345(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_346(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_347(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_348(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_349(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_350(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_351(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_352(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_353(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_354(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_355(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_356(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_357(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_358(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_359(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_360(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_361(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_362(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_363(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_364(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_365(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_366(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_367(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_368(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_369(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_370(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_371(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_372(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_373(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_374(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_375(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_376(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_377(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_378(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_379(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_380(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_381(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_382(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_383(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_384(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_385(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_386(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_387(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_388(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_389(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_390(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_391(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +int test_strcspn_s(void) +{ + int __retres; + errno_t rc; + rsize_t count; + int std_count; + size_t tmp; + size_t tmp_0; + size_t tmp_1; + size_t tmp_2; + unsigned int testno = (unsigned int)0; + testno ++; + printf_va_344("Test #%d: NULL Scan String Check\n",(int)testno); + rc = strcspn_s((char const *)0,(unsigned int)128,(char const *)(str2_5), + (unsigned int)128,& count); + if (rc != 400) printf_va_345("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)33,rc); + if (count != (rsize_t)0) printf_va_346("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)38,count,rc); + testno ++; + printf_va_347("Test #%d: NULL Exclusion String Check: \n",(int)testno); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128,(char const *)0, + (unsigned int)128,& count); + if (rc != 400) printf_va_348("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)48,rc); + if (count != (rsize_t)0) printf_va_349("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)53,count,rc); + testno ++; + printf_va_350("Test #%d: NULL Count parameter Check: \n",(int)testno); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)128,(rsize_t *)0); + if (rc != 400) printf_va_351("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)63,rc); + testno ++; + printf_va_352("Test #%d:Zero Length Scan String Check\n",(int)testno); + rc = strcspn_s((char const *)(str1_5),(unsigned int)0, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 401) printf_va_353("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)73,rc); + if (count != (rsize_t)0) printf_va_354("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)78,count,rc); + testno ++; + printf_va_355("Test #%d:Zero Length Exclusion String Check\n",(int)testno); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)0,& count); + if (rc != 401) printf_va_356("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)88,rc); + if (count != (rsize_t)0) printf_va_357("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)93,count,rc); + testno ++; + printf_va_358("Test #%d:Exceed Max Length Scan String Check\n",(int)testno); + rc = strcspn_s((char const *)(str1_5), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 403) printf_va_359("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)103,rc); + if (count != (rsize_t)0) printf_va_360("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)108,count,rc); + testno ++; + printf_va_361("Test #%d:Exceed Max Length Exclusion String Check\n", + (int)testno); + rc = strcspn_s((char const *)(str1_5),(unsigned int)(4UL << 10), + (char const *)(str2_5), + (unsigned int)((4UL << 10) + (unsigned long)1),& count); + if (rc != 403) printf_va_362("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)118,rc); + if (count != (rsize_t)0) printf_va_363("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)123,count,rc); + testno ++; + printf_va_364("Test #%d:\n",(int)testno); + str1_5[0] = (char)'\000'; + str2_5[0] = (char)'\000'; + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_365("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)136,rc); + if (count != (rsize_t)0) printf_va_366("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)141,count,rc); + tmp = strcspn((char const *)(str1_5),(char const *)(str2_5)); + std_count = (int)tmp; + if (count != (rsize_t)std_count) printf_va_367("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)147,count, + std_count,rc); + testno ++; + printf_va_368("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"KEEP"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)1, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_369("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)161,rc); + if (count != (rsize_t)1) printf_va_370("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)166,count,rc); + testno ++; + printf_va_371("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"KEEP"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)2, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_372("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)180,rc); + if (count != (rsize_t)2) printf_va_373("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)185,count,rc); + testno ++; + printf_va_374("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"KEEP"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)3, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_375("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)199,rc); + if (count != (rsize_t)3) printf_va_376("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)204,count,rc); + testno ++; + printf_va_377("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"KEEP"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)6, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_378("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)219,rc); + if (count != (rsize_t)6) printf_va_379("%s %u Error count=%zu rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)224,count,rc); + testno ++; + printf_va_380("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"ABCDEF"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)6, + (char const *)(str2_5),(unsigned int)2,& count); + if (rc != 0) printf_va_381("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)238,rc); + if (count != (rsize_t)6) printf_va_382("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)243,count,std_count, + rc); + testno ++; + printf_va_383("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"keep"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_384("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)257,rc); + tmp_0 = strcspn((char const *)(str1_5),(char const *)(str2_5)); + std_count = (int)tmp_0; + if (count != (rsize_t)std_count) printf_va_385("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)263,count, + std_count,rc); + testno ++; + printf_va_386("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"notincluded"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_387("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)277,rc); + tmp_1 = strcspn((char const *)(str1_5),(char const *)(str2_5)); + std_count = (int)tmp_1; + if (count != (rsize_t)std_count) printf_va_388("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)283,count, + std_count,rc); + testno ++; + printf_va_389("Test #%d:\n",(int)testno); + strcpy(str1_5,"keep it simple"); + strcpy(str2_5,"1234567890"); + rc = strcspn_s((char const *)(str1_5),(unsigned int)128, + (char const *)(str2_5),(unsigned int)128,& count); + if (rc != 0) printf_va_390("%s %u Error rc=%d \n", + (char *)"test_strcspn_s",(unsigned int)297,rc); + tmp_2 = strcspn((char const *)(str1_5),(char const *)(str2_5)); + std_count = (int)tmp_2; + if (count != (rsize_t)std_count) printf_va_391("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strcspn_s", + (unsigned int)303,count, + std_count,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_392(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_393(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_394(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_395(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_396(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_397(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_398(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_399(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_400(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_401(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_402(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_403(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_404(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_405(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_406(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_407(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_408(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +int test_strfirstchar_s(void) +{ + int __retres; + errno_t rc; + rsize_t len; + char *first; + char str1_17[128]; + rc = strfirstchar_s((char *)0,(unsigned int)128,(char)'a',& first); + if (rc != 400) printf_va_392("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)27,(void *)(str1_17), + (void *)first,rc); + if (first) printf_va_393("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)32, + (void *)(str1_17),(void *)first,rc); + rc = strfirstchar_s(str1_17,(unsigned int)128,(char)'a',(char **)0); + if (rc != 400) printf_va_394("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)40,(void *)(str1_17), + (void *)first,rc); + rc = strfirstchar_s(str1_17,(unsigned int)0,(char)'a',& first); + if (rc != 401) printf_va_395("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)48,(void *)(str1_17), + (void *)first,rc); + if (first) printf_va_396("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)53, + (void *)(str1_17),(void *)first,rc); + rc = strfirstchar_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char)'a',& first); + if (rc != 403) printf_va_397("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)61,(void *)(str1_17), + (void *)first,rc); + if (first) printf_va_398("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)66, + (void *)(str1_17),(void *)first,rc); + str1_17[0] = (char)'\000'; + rc = strfirstchar_s(str1_17,(unsigned int)128,(char)'a',& first); + if (rc != 409) printf_va_399("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)76,(void *)(str1_17), + (void *)first,rc); + if (first) printf_va_400("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)81, + (void *)(str1_17),(void *)first,rc); + strcpy(str1_17,"Keep it simple"); + rc = strfirstchar_s(str1_17,(unsigned int)128,(char)'z',& first); + if (rc != 409) printf_va_401("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)91,(void *)(str1_17), + (void *)first,rc); + if (first) printf_va_402("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)96, + (void *)(str1_17),(void *)first,rc); + strcpy(str1_17,"kEEp it simple"); + rc = strfirstchar_s(str1_17,(unsigned int)128,(char)'E',& first); + if (rc != 0) printf_va_403("%s %u Error rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)106, + rc); + if (first != & str1_17[1]) printf_va_404("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)111, + (void *)(str1_17),(void *)first, + rc); + strcpy(str1_17,"keep it simpleZ"); + len = strlen((char const *)(str1_17)); + rc = strfirstchar_s(str1_17,len,(char)'Z',& first); + if (rc != 0) printf_va_405("%s %u Error rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)122, + rc); + if (first != & str1_17[14]) printf_va_406("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)127, + (void *)(str1_17),(void *)first, + rc); + strcpy(str1_17,"keep it simpleZZ"); + rc = strfirstchar_s(str1_17,(unsigned int)128,(char)'Z',& first); + if (rc != 0) printf_va_407("%s %u Error rc=%d \n", + (char *)"test_strfirstchar_s",(unsigned int)137, + rc); + if (first != & str1_17[14]) printf_va_408("%s %u Error str1=%p first=%p rc=%d \n", + (char *)"test_strfirstchar_s", + (unsigned int)142, + (void *)(str1_17),(void *)first, + rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_409(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_410(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_411(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_412(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_413(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_414(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_415(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_416(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_417(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_418(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_419(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_420(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_421(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_422(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_423(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_424(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_425(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_426(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_427(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_428(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_429(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_430(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_431(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_432(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_433(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_434(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_435(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +int test_strfirstdiff_s(void) +{ + int __retres; + errno_t rc; + rsize_t ind; + char str1_17[128]; + char str2_16[128]; + rc = strfirstdiff_s((char const *)0,(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 400) printf_va_409("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)28,rc); + if (ind != (rsize_t)0) printf_va_410("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)33,ind,rc); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)0,& ind); + if (rc != 400) printf_va_411("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)41,rc); + if (ind != (rsize_t)0) printf_va_412("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)46,ind,rc); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),(rsize_t *)0); + if (rc != 400) printf_va_413("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)54,rc); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16),& ind); + if (rc != 401) printf_va_414("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)62,rc); + if (ind != (rsize_t)0) printf_va_415("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)67,ind,rc); + rc = strfirstdiff_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),& ind); + if (rc != 403) printf_va_416("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)75,rc); + if (ind != (rsize_t)0) printf_va_417("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)80,ind,rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 408) printf_va_418("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)91,rc); + if (ind != (rsize_t)0) printf_va_419("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)96,ind,rc); + strcpy(str1_17,"Keep it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_420("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s",(unsigned int)107, + rc); + if (ind != (rsize_t)0) printf_va_421("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)112,ind,rc); + strcpy(str1_17,"kEeP it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_422("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s",(unsigned int)123, + rc); + if (ind != (rsize_t)1) printf_va_423("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)128,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keEp IT simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_424("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s",(unsigned int)139, + rc); + if (ind != (rsize_t)2) printf_va_425("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)144,ind,rc); + strcpy(str1_17,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str1_17),& ind); + if (rc != 408) printf_va_426("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)154,rc); + if (ind != (rsize_t)0) printf_va_427("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)159,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)1, + (char const *)(str2_16),& ind); + if (rc != 408) printf_va_428("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)170,rc); + if (ind != (rsize_t)0) printf_va_429("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)175,ind,rc); + strcpy(str1_17,"keep it simplE"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)13, + (char const *)(str2_16),& ind); + if (rc != 408) printf_va_430("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)186,rc); + if (ind != (rsize_t)0) printf_va_431("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)191,ind,rc); + strcpy(str1_17,"keep it simplE"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)14, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_432("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s",(unsigned int)202, + rc); + if (ind != (rsize_t)13) printf_va_433("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)207,ind,rc); + strcpy(str1_17,"keep it simplE"); + strcpy(str2_16,"keep it simple"); + rc = strfirstdiff_s((char const *)(str1_17),(unsigned int)55, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_434("%s %u Error rc=%d \n", + (char *)"test_strfirstdiff_s",(unsigned int)218, + rc); + if (ind != (rsize_t)13) printf_va_435("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstdiff_s", + (unsigned int)223,ind,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_436(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_437(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_438(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_439(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_440(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_441(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_442(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_443(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_444(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_445(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_446(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_447(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_448(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_449(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_450(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_451(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_452(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_453(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_454(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_455(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_456(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_457(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_458(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_459(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_460(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_461(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_462(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_463(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_464(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +int test_strfirstsame_s(void) +{ + int __retres; + errno_t rc; + rsize_t ind; + char str1_17[128]; + char str2_16[128]; + rc = strfirstsame_s((char const *)0,(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 400) printf_va_436("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)28,rc); + if (ind != (rsize_t)0) printf_va_437("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)33,ind,rc); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)0,& ind); + if (rc != 400) printf_va_438("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)41,rc); + if (ind != (rsize_t)0) printf_va_439("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)46,ind,rc); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),(rsize_t *)0); + if (rc != 400) printf_va_440("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)54,rc); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16),& ind); + if (rc != 401) printf_va_441("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)62,rc); + if (ind != (rsize_t)0) printf_va_442("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)67,ind,rc); + rc = strfirstsame_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),& ind); + if (rc != 403) printf_va_443("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)75,rc); + if (ind != (rsize_t)0) printf_va_444("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)80,ind,rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_445("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)91,rc); + if (ind != (rsize_t)0) printf_va_446("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)96,ind,rc); + strcpy(str1_17,"kEEP it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_447("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s",(unsigned int)107, + rc); + if (ind != (rsize_t)0) printf_va_448("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)112,ind,rc); + strcpy(str1_17,"Keep it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_449("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s",(unsigned int)123, + rc); + if (ind != (rsize_t)1) printf_va_450("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)128,ind,rc); + strcpy(str1_17,"KEEP it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_451("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s",(unsigned int)139, + rc); + if (ind != (rsize_t)4) printf_va_452("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)144,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLe"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)13, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_453("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)155,rc); + if (ind != (rsize_t)0) printf_va_454("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)160,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLe"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)14, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_455("%s %u Error rc=%d \n", + (char *)"test_strfirstsame_s",(unsigned int)171, + rc); + if (ind != (rsize_t)13) printf_va_456("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)176,ind,rc); + strcpy(str1_17,"keep it simple"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str1_17),& ind); + if (rc != 0) printf_va_457("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s",(unsigned int)187, + ind,rc); + if (ind != (rsize_t)0) printf_va_458("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)192,ind,rc); + strcpy(str1_17,"KEEP it simple"); + strcpy(str2_16,"keep it simple"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)1, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_459("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)203,ind,rc); + if (ind != (rsize_t)0) printf_va_460("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)208,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLE"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)5, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_461("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)219,ind,rc); + if (ind != (rsize_t)0) printf_va_462("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)224,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLE"); + rc = strfirstsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_463("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)235,ind,rc); + if (ind != (rsize_t)0) printf_va_464("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strfirstsame_s", + (unsigned int)240,ind,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_465(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_466(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_467(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_468(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_469(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_470(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_471(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_472(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_473(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_474(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_475(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strisalphanumeric_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strisalphanumeric_s((char const *)0,len); + if ((int)rc != 0) printf_va_465("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)28,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strisalphanumeric_s("test",len); + if ((int)rc != 0) printf_va_466("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)37,(unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strisalphanumeric_s("test",len); + if ((int)rc != 0) printf_va_467("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)47,(unsigned int)((int)rc)); + rc = strisalphanumeric_s("",(unsigned int)128); + if ((int)rc != 0) printf_va_468("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)56,(unsigned int)((int)rc)); + strcpy(str,"123456789"); + len = (unsigned int)4; + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 1) printf_va_469("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)67,(unsigned int)((int)rc)); + strcpy(str,"N"); + rc = strisalphanumeric_s((char const *)(str),(unsigned int)1); + if ((int)rc != 1) printf_va_470("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)77,(unsigned int)((int)rc)); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 1) printf_va_471("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)88,(unsigned int)((int)rc)); + strcpy(str,"NowISTHETimE4us"); + len = strlen((char const *)(str)); + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 1) printf_va_472("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)99,(unsigned int)((int)rc)); + strcpy(str,"qq21ego"); + len = strlen((char const *)(str)); + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 1) printf_va_473("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)110,(unsigned int)((int)rc)); + strcpy(str,"1234"); + str[2] = (char)132; + len = strlen((char const *)(str)); + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 0) printf_va_474("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)123,(unsigned int)((int)rc)); + strcpy(str,"!@#$%^&*(){}[]:;\"\'?/.>,<"); + len = strlen((char const *)(str)); + rc = strisalphanumeric_s((char const *)(str),len); + if ((int)rc != 0) printf_va_475("%s %u Error rc=%u \n", + (char *)"test_strisalphanumeric_s", + (unsigned int)134,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_476(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_477(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_478(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_479(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_480(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_481(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_482(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_483(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_484(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_485(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strisascii_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strisascii_s((char const *)0,len); + if ((int)rc != 0) printf_va_476("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)27,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strisascii_s("test",len); + if ((int)rc != 0) printf_va_477("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)36,(unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strisascii_s("test",len); + if ((int)rc != 0) printf_va_478("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)45,(unsigned int)((int)rc)); + rc = strisascii_s("",(unsigned int)2); + if ((int)rc != 1) printf_va_479("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)54,(unsigned int)((int)rc)); + strcpy(str,"ABCDEFGHIJK"); + rc = strisascii_s((char const *)(str),(unsigned int)2); + if ((int)rc != 1) printf_va_480("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)64,(unsigned int)((int)rc)); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strisascii_s((char const *)(str),(unsigned int)1); + if ((int)rc != 1) printf_va_481("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)75,(unsigned int)((int)rc)); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strisascii_s((char const *)(str),(unsigned int)2); + if ((int)rc != 1) printf_va_482("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)86,(unsigned int)((int)rc)); + strcpy(str,"NowISTHETimE"); + len = strlen((char const *)(str)); + rc = strisascii_s((char const *)(str),len); + if ((int)rc != 1) printf_va_483("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)97,(unsigned int)((int)rc)); + strcpy(str,"qq21ego"); + rc = strisascii_s((char const *)(str),(unsigned int)33); + if ((int)rc != 1) printf_va_484("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)107,(unsigned int)((int)rc)); + strcpy(str,"1234"); + str[2] = (char)132; + len = strlen((char const *)(str)); + rc = strisascii_s((char const *)(str),len); + if ((int)rc != 0) printf_va_485("%s %u Error rc=%u \n", + (char *)"test_strisascii_s", + (unsigned int)120,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_486(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_487(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_488(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_489(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_490(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_491(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_492(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_493(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_494(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strisdigit_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strisdigit_s((char const *)0,len); + if ((int)rc != 0) printf_va_486("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)26,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strisdigit_s("1234",len); + if ((int)rc != 0) printf_va_487("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)35,(unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strisdigit_s("1234",len); + if ((int)rc != 0) printf_va_488("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)44,(unsigned int)((int)rc)); + len = (unsigned int)9; + rc = strisdigit_s("",len); + if ((int)rc != 0) printf_va_489("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)53,(unsigned int)((int)rc)); + strcpy(str,"123456789"); + len = (unsigned int)4; + rc = strisdigit_s((char const *)(str),len); + if ((int)rc != 1) printf_va_490("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)64,(unsigned int)((int)rc)); + strcpy(str,"1"); + len = strlen((char const *)(str)); + rc = strisdigit_s((char const *)(str),len); + if ((int)rc != 1) printf_va_491("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)75,(unsigned int)((int)rc)); + strcpy(str,"12"); + len = strlen((char const *)(str)); + rc = strisdigit_s((char const *)(str),len); + if ((int)rc != 1) printf_va_492("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)86,(unsigned int)((int)rc)); + strcpy(str,"1abcd"); + len = strlen((char const *)(str)); + rc = strisdigit_s((char const *)(str),len); + if ((int)rc != 0) printf_va_493("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)97,(unsigned int)((int)rc)); + strcpy(str,"abcd"); + len = strlen((char const *)(str)); + rc = strisdigit_s((char const *)(str),len); + if ((int)rc != 0) printf_va_494("%s %u Error rc=%u \n", + (char *)"test_strisdigit_s", + (unsigned int)108,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_495(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_496(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_497(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_498(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_499(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_500(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_501(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_502(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_503(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_504(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_505(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strishex_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strishex_s((char const *)0,len); + if ((int)rc != 0) printf_va_495("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)26, + (unsigned int)((int)rc)); + str[0] = (char)'\000'; + rc = strishex_s((char const *)(str),(unsigned int)5); + if ((int)rc != 0) printf_va_496("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)35, + (unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strishex_s("1234",len); + if ((int)rc != 0) printf_va_497("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)44, + (unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strishex_s("1234",len); + if ((int)rc != 0) printf_va_498("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)53, + (unsigned int)((int)rc)); + len = (unsigned int)9; + rc = strishex_s("",len); + if ((int)rc != 0) printf_va_499("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)62, + (unsigned int)((int)rc)); + strcpy(str,"123456789"); + len = (unsigned int)6; + rc = strishex_s((char const *)(str),len); + if ((int)rc != 1) printf_va_500("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)73, + (unsigned int)((int)rc)); + strcpy(str,"1"); + len = strlen((char const *)(str)); + rc = strishex_s((char const *)(str),len); + if ((int)rc != 1) printf_va_501("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)84, + (unsigned int)((int)rc)); + strcpy(str,"12"); + len = strlen((char const *)(str)); + rc = strishex_s((char const *)(str),len); + if ((int)rc != 1) printf_va_502("%s %u Error rc=%u \n", + (char *)"test_strishex_s",(unsigned int)95, + (unsigned int)((int)rc)); + strcpy(str,"1Af"); + len = strlen((char const *)(str)); + rc = strishex_s((char const *)(str),len); + if ((int)rc != 1) printf_va_503("%s %u Error rc=%u \n", + (char *)"test_strishex_s", + (unsigned int)106,(unsigned int)((int)rc)); + strcpy(str,"FF"); + len = strlen((char const *)(str)); + rc = strishex_s((char const *)(str),len); + if ((int)rc != 1) printf_va_504("%s %u Error rc=%u \n", + (char *)"test_strishex_s", + (unsigned int)117,(unsigned int)((int)rc)); + strcpy(str,"1abzd"); + len = strlen((char const *)(str)); + rc = strishex_s((char const *)(str),len); + if ((int)rc != 0) printf_va_505("%s %u Error rc=%u \n", + (char *)"test_strishex_s", + (unsigned int)129,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_506(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_507(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_508(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_509(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_510(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_511(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_512(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_513(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strislowercase_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strislowercase_s((char const *)0,len); + if ((int)rc != 0) printf_va_506("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)26,(unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strislowercase_s("test",len); + if ((int)rc != 0) printf_va_507("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)35,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strislowercase_s("test",len); + if ((int)rc != 0) printf_va_508("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)44,(unsigned int)((int)rc)); + str[0] = (char)'\000'; + rc = strislowercase_s((char const *)(str),(unsigned int)5); + if ((int)rc != 0) printf_va_509("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)53,(unsigned int)((int)rc)); + strcpy(str,"qqweqeqeqeq"); + len = (unsigned int)3; + rc = strislowercase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_510("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)64,(unsigned int)((int)rc)); + strcpy(str,"qqweqeqeqeq"); + len = strlen((char const *)(str)); + rc = strislowercase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_511("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)75,(unsigned int)((int)rc)); + strcpy(str,"qqWe go"); + len = strlen((char const *)(str)); + rc = strislowercase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_512("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)86,(unsigned int)((int)rc)); + strcpy(str,"1234"); + len = strlen((char const *)(str)); + rc = strislowercase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_513("%s %u Error rc=%u \n", + (char *)"test_strislowercase_s", + (unsigned int)97,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_514(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_515(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_516(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_517(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_518(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_519(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_520(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_521(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_522(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strismixed_s(void) +{ + int __retres; + _Bool rc; + rsize_t len; + char str[128]; + len = (unsigned int)5; + rc = strismixedcase_s((char const *)0,len); + if ((int)rc != 0) printf_va_514("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)26,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strismixedcase_s("test",len); + if ((int)rc != 0) printf_va_515("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)35,(unsigned int)((int)rc)); + len = (unsigned int)((4UL << 10) + (unsigned long)1); + rc = strismixedcase_s("test",len); + if ((int)rc != 0) printf_va_516("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)44,(unsigned int)((int)rc)); + len = (unsigned int)9; + rc = strismixedcase_s("",len); + if ((int)rc != 0) printf_va_517("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)53,(unsigned int)((int)rc)); + strcpy(str,"AaBbCcDdEeFf"); + len = (unsigned int)5; + rc = strismixedcase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_518("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)64,(unsigned int)((int)rc)); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strismixedcase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_519("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)75,(unsigned int)((int)rc)); + strcpy(str,"NowISTHETimE"); + len = strlen((char const *)(str)); + rc = strismixedcase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_520("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)86,(unsigned int)((int)rc)); + strcpy(str,"qq21ego"); + len = strlen((char const *)(str)); + rc = strismixedcase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_521("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)97,(unsigned int)((int)rc)); + strcpy(str,"1234"); + len = strlen((char const *)(str)); + rc = strismixedcase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_522("%s %u Error rc=%u \n", + (char *)"test_strismixed_s", + (unsigned int)108,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_523(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_524(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_525(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_526(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_527(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_528(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_529(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_530(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_531(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_532(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_533(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strispassword_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[64]; + rc = strispassword_s((char const *)0,(unsigned int)64); + if ((int)rc != 0) printf_va_523("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)25,(unsigned int)((int)rc)); + rc = strispassword_s("",(unsigned int)64); + if ((int)rc != 0) printf_va_524("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)33,(unsigned int)((int)rc)); + rc = strispassword_s("Test4You&",(unsigned int)0); + if ((int)rc != 0) printf_va_525("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)41,(unsigned int)((int)rc)); + rc = strispassword_s("Test4You&",(unsigned int)999); + if ((int)rc != 0) printf_va_526("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)49,(unsigned int)((int)rc)); + rc = strispassword_s("",(unsigned int)9); + if ((int)rc != 0) printf_va_527("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)57,(unsigned int)((int)rc)); + strcpy(str,"Test4You*123"); + len = (unsigned int)8; + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 0) printf_va_528("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)68,(unsigned int)((int)rc)); + strcpy(str,"Test4You*"); + len = strlen((char const *)(str)); + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 1) printf_va_529("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)79,(unsigned int)((int)rc)); + strcpy(str,"Test4You*Test4You*Test4You*"); + len = strlen((char const *)(str)); + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 1) printf_va_530("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)90,(unsigned int)((int)rc)); + strcpy(str,"Eest!22/"); + len = strlen((char const *)(str)); + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 0) printf_va_531("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)101,(unsigned int)((int)rc)); + strcpy(str,"pa$$W0rD"); + len = strlen((char const *)(str)); + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 1) printf_va_532("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)112,(unsigned int)((int)rc)); + strcpy(str,"Test"); + len = strlen((char const *)(str)); + rc = strispassword_s((char const *)(str),len); + if ((int)rc != 0) printf_va_533("%s %u Error rc=%u \n", + (char *)"test_strispassword_s", + (unsigned int)123,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_534(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_535(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_536(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_537(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_538(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_539(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_540(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_541(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_542(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strisuppercase_s(void) +{ + int __retres; + _Bool rc; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strisuppercase_s((char const *)0,len); + if ((int)rc != 0) printf_va_534("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)26,(unsigned int)((int)rc)); + len = (unsigned int)99999; + rc = strisuppercase_s("test",len); + if ((int)rc != 0) printf_va_535("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)35,(unsigned int)((int)rc)); + len = (unsigned int)0; + rc = strisuppercase_s("test",len); + if ((int)rc != 0) printf_va_536("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)44,(unsigned int)((int)rc)); + str[0] = (char)'\000'; + rc = strisuppercase_s((char const *)(str),(unsigned int)5); + if ((int)rc != 0) printf_va_537("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)53,(unsigned int)((int)rc)); + strcpy(str,"ABCDEFGHIGHIJ"); + len = (unsigned int)7; + rc = strisuppercase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_538("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)64,(unsigned int)((int)rc)); + strcpy(str,"ABCDEFGHIGHIJ"); + len = strlen((char const *)(str)); + rc = strisuppercase_s((char const *)(str),len); + if ((int)rc != 1) printf_va_539("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)75,(unsigned int)((int)rc)); + strcpy(str,"qqWe go"); + len = strlen((char const *)(str)); + rc = strisuppercase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_540("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)86,(unsigned int)((int)rc)); + strcpy(str,"1234"); + len = strlen((char const *)(str)); + rc = strisuppercase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_541("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)97,(unsigned int)((int)rc)); + strcpy(str,"!@#$%^&*()"); + len = strlen((char const *)(str)); + rc = strisuppercase_s((char const *)(str),len); + if ((int)rc != 0) printf_va_542("%s %u Error rc=%u \n", + (char *)"test_strisuppercase_s", + (unsigned int)108,(unsigned int)((int)rc)); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_543(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_544(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_545(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_546(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_547(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_548(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_549(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_550(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_551(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_552(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_553(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_554(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_555(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_556(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_557(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_558(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_559(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_560(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_561(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +int test_strlastchar_s(void) +{ + int __retres; + errno_t rc; + char *last; + char str1_17[128]; + rc = strlastchar_s((char *)0,(unsigned int)128,(char)'a',& last); + if (rc != 400) printf_va_543("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)27, + (void *)(str1_17),(void *)last,rc); + if (last) printf_va_544("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)32, + (void *)(str1_17),(void *)last,rc); + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'a',(char **)0); + if (rc != 400) printf_va_545("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)40, + (void *)(str1_17),(void *)last,rc); + rc = strlastchar_s(str1_17,(unsigned int)0,(char)'a',& last); + if (rc != 401) printf_va_546("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)48, + (void *)(str1_17),(void *)last,rc); + if (last) printf_va_547("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)53, + (void *)(str1_17),(void *)last,rc); + rc = strlastchar_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1), + (char)'a',& last); + if (rc != 403) printf_va_548("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)61, + (void *)(str1_17),(void *)last,rc); + if (last) printf_va_549("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)66, + (void *)(str1_17),(void *)last,rc); + str1_17[0] = (char)'\000'; + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'a',& last); + if (rc != 409) printf_va_550("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)76, + (void *)(str1_17),(void *)last,rc); + if (last) printf_va_551("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)81, + (void *)(str1_17),(void *)last,rc); + strcpy(str1_17,"Keep it simple"); + rc = strlastchar_s(str1_17,(unsigned int)5,(char)'z',& last); + if (rc != 409) printf_va_552("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)91, + (void *)(str1_17),(void *)last,rc); + if (last) printf_va_553("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)96, + (void *)(str1_17),(void *)last,rc); + strcpy(str1_17,"Keep it simplezz"); + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'z',& last); + if (rc != 0) printf_va_554("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)106, + (void *)(str1_17),(void *)last,rc); + if (last != & str1_17[15]) printf_va_555("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s", + (unsigned int)111, + (void *)(str1_17),(void *)last,rc); + strcpy(str1_17,"Keep it simple"); + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'K',& last); + if (rc != 0) printf_va_556("%s %u Error rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)121, + rc); + if (last != str1_17) printf_va_557("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s", + (unsigned int)126,(void *)(str1_17), + (void *)last,rc); + strcpy(str1_17,"kEEp it simple"); + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'E',& last); + if (rc != 0) printf_va_558("%s %u Error rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)136, + rc); + if (last != & str1_17[2]) printf_va_559("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s", + (unsigned int)141, + (void *)(str1_17),(void *)last,rc); + strcpy(str1_17,"kEep it Simple"); + rc = strlastchar_s(str1_17,(unsigned int)128,(char)'S',& last); + if (rc != 0) printf_va_560("%s %u Error rc=%d \n", + (char *)"test_strlastchar_s",(unsigned int)151, + rc); + if (last != & str1_17[8]) printf_va_561("%s %u Error str1=%p last=%p rc=%d \n", + (char *)"test_strlastchar_s", + (unsigned int)156, + (void *)(str1_17),(void *)last,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_562(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_563(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_564(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_565(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_566(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_567(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_568(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_569(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_570(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_571(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_572(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_573(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_574(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_575(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_576(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_577(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_578(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_579(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_580(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_581(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_582(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_583(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_584(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +int test_strlastdiff_s(void) +{ + int __retres; + errno_t rc; + rsize_t ind; + char str1_17[128]; + char str2_16[128]; + rc = strlastdiff_s((char const *)0,(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 400) printf_va_562("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)29, + rc); + if (ind != (rsize_t)0) printf_va_563("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)34,ind,rc); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)0,& ind); + if (rc != 400) printf_va_564("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)42, + rc); + if (ind != (rsize_t)0) printf_va_565("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)47,ind,rc); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),(rsize_t *)0); + if (rc != 400) printf_va_566("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)55, + rc); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16),& ind); + if (rc != 401) printf_va_567("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)63, + rc); + if (ind != (rsize_t)0) printf_va_568("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)68,ind,rc); + rc = strlastdiff_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),& ind); + if (rc != 403) printf_va_569("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)76, + rc); + if (ind != (rsize_t)0) printf_va_570("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)81,ind,rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 408) printf_va_571("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)92, + rc); + if (ind != (rsize_t)0) printf_va_572("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)97,ind,rc); + strcpy(str1_17,"Keep iT simple"); + strcpy(str2_16,"keep it simple"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_573("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)108, + rc); + if (ind != (rsize_t)6) printf_va_574("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)113,ind,rc); + strcpy(str1_17,"kEep it simple"); + strcpy(str2_16,"keep it simple"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_575("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)124, + rc); + if (ind != (rsize_t)1) printf_va_576("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)129,ind,rc); + strcpy(str1_17,"keep it siMple"); + strcpy(str2_16,"keEp it Simple"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_577("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)140, + rc); + if (ind != (rsize_t)10) printf_va_578("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)145,ind,rc); + strcpy(str1_17,"keep it simple"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str1_17),& ind); + if (rc != 408) printf_va_579("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)155,rc); + if (ind != (rsize_t)0) printf_va_580("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)160,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep it simple"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)1, + (char const *)(str2_16),& ind); + if (rc != 408) printf_va_581("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)171,rc); + if (ind != (rsize_t)0) printf_va_582("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)176,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep it simplE"); + rc = strlastdiff_s((char const *)(str1_17),(unsigned int)25, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_583("%s %u Error rc=%d \n", + (char *)"test_strlastdiff_s",(unsigned int)187, + rc); + if (ind != (rsize_t)13) printf_va_584("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastdiff_s", + (unsigned int)192,ind,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_585(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_586(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_587(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_588(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_589(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_590(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_591(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_592(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_593(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_594(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_595(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_596(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_597(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_598(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_599(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_600(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_601(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_602(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_603(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_604(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_605(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_606(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_607(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_608(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_609(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_610(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_611(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_612(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_613(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +int test_strlastsame_s(void) +{ + int __retres; + errno_t rc; + rsize_t ind; + char str1_17[128]; + char str2_16[128]; + rc = strlastsame_s((char const *)0,(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 400) printf_va_585("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)28, + rc); + if (ind != (rsize_t)0) printf_va_586("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)33,ind,rc); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)0,& ind); + if (rc != 400) printf_va_587("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)41, + rc); + if (ind != (rsize_t)0) printf_va_588("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)46,ind,rc); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),(rsize_t *)0); + if (rc != 400) printf_va_589("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)54, + rc); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16),& ind); + if (rc != 401) printf_va_590("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)62, + rc); + if (ind != (rsize_t)0) printf_va_591("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)67,ind,rc); + rc = strlastsame_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16),& ind); + if (rc != 403) printf_va_592("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)75, + rc); + if (ind != (rsize_t)0) printf_va_593("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)80,ind,rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_594("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)91, + rc); + if (ind != (rsize_t)0) printf_va_595("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)96,ind,rc); + strcpy(str1_17,"Keep it simple"); + strcpy(str2_16,"keep_IT_SIMPLISTIC"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_596("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)107, + rc); + if (ind != (rsize_t)3) printf_va_597("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)112,ind,rc); + strcpy(str1_17,"kEEP_IT_SIMPLE"); + strcpy(str2_16,"keep it simplistic"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_598("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)123, + rc); + if (ind != (rsize_t)0) printf_va_599("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)128,ind,rc); + strcpy(str1_17,"kkEEP_IT_SIMPLE"); + strcpy(str2_16,"kkeep it simplistic"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_600("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)139, + rc); + if (ind != (rsize_t)1) printf_va_601("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)144,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keeP_IT_SIMPLe"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_602("%s %u Error rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)155, + rc); + if (ind != (rsize_t)13) printf_va_603("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)160,ind,rc); + strcpy(str1_17,"keep it simple"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str1_17),& ind); + if (rc != 0) printf_va_604("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)171, + ind,rc); + if (ind != (rsize_t)13) printf_va_605("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)176,ind,rc); + strcpy(str1_17,"KEEP it simple"); + strcpy(str2_16,"keep it simple"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)1, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_606("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)187,ind,rc); + if (ind != (rsize_t)0) printf_va_607("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)192,ind,rc); + strcpy(str1_17,"KEEP it simple"); + strcpy(str2_16,"Keep it simple"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)1, + (char const *)(str2_16),& ind); + if (rc != 0) printf_va_608("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s",(unsigned int)203, + ind,rc); + if (ind != (rsize_t)0) printf_va_609("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)208,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLE"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)5, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_610("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)219,ind,rc); + if (ind != (rsize_t)0) printf_va_611("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)224,ind,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"KEEP_IT_SIMPLE"); + rc = strlastsame_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16),& ind); + if (rc != 409) printf_va_612("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)235,ind,rc); + if (ind != (rsize_t)0) printf_va_613("%s %u Error ind=%zu rc=%d \n", + (char *)"test_strlastsame_s", + (unsigned int)240,ind,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_614(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_615(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_616(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_617(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_618(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_619(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_620(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_621(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_622(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_623(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_624(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_625(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_626(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_627(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_628(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_629(char const * __restrict format, char *param0, + unsigned int param1, char *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_630(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_631(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_632(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_633(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_634(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_635(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_636(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_637(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strljustify_s(void) +{ + int __retres; + errno_t rc; + int ind; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strljustify_s((char *)0,len); + if (rc != 400) printf_va_614("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)27, + (unsigned int)rc); + len = (unsigned int)0; + rc = strljustify_s((char *)"test",len); + if (rc != 401) printf_va_615("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)36, + (unsigned int)rc); + len = (unsigned int)99999; + rc = strljustify_s((char *)"test",len); + if (rc != 403) printf_va_616("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)45, + (unsigned int)rc); + rc = strljustify_s((char *)" ",(unsigned int)12); + if (rc != 0) printf_va_617("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)54, + (unsigned int)rc); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABCDEFGHIJK"); + len = (unsigned int)2; + rc = strljustify_s(str,len); + if (rc != 407) printf_va_618("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)68, + (unsigned int)rc); + if ((int)str[0] != '\000') printf_va_619("%s %u Error -%s- \n", + (char *)"test_strljustify_s", + (unsigned int)73,str); + strzero_s(str,(unsigned int)128); + strcpy(str," ABCDEFGHIJK"); + len = (unsigned int)5; + rc = strljustify_s(str,len); + if (rc != 407) printf_va_620("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)86, + (unsigned int)rc); + if ((int)str[0] != '\000') printf_va_621("%s %u Error -%s- \n", + (char *)"test_strljustify_s", + (unsigned int)91,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"A"); + len = (unsigned int)1; + rc = strljustify_s(str,len); + if (rc != 0) printf_va_622("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)104, + (unsigned int)rc); + if ((int)str[0] != '\000') printf_va_623("%s %u Error -%s- \n", + (char *)"test_strljustify_s", + (unsigned int)109,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABC"); + len = (unsigned int)2; + rc = strljustify_s(str,len); + if (rc != 407) printf_va_624("%s %u Error rc=%u \n", + (char *)"test_strljustify_s", + (unsigned int)122,(unsigned int)rc); + if ((int)str[0] != '\000') printf_va_625("%s %u Error -%s- \n", + (char *)"test_strljustify_s", + (unsigned int)127,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABC"); + len = (unsigned int)5; + rc = strljustify_s(str,len); + if (rc != 0) printf_va_626("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)140, + (unsigned int)rc); + ind = strcmp((char const *)(str),"ABC"); + if (ind != 0) printf_va_627("%s %u Error -%s- \n", + (char *)"test_strljustify_s",(unsigned int)146, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," B "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_628("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)158, + (unsigned int)rc); + ind = strcmp((char const *)(str),"B "); + if (ind != 0) printf_va_629("%s %u Error -%s- ind=%d \n", + (char *)"test_strljustify_s",(unsigned int)164, + str,ind); + strzero_s(str,(unsigned int)128); + strcpy(str," B "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_630("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)176, + (unsigned int)rc); + ind = strcmp((char const *)(str),"B "); + if (ind != 0) printf_va_631("%s %u Error -%s- \n", + (char *)"test_strljustify_s",(unsigned int)182, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," C "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_632("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)194, + (unsigned int)rc); + ind = strcmp((char const *)(str),"C "); + if (ind != 0) printf_va_633("%s %u Error -%s- \n", + (char *)"test_strljustify_s",(unsigned int)200, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," NowISTHETimE "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_634("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)212, + (unsigned int)rc); + ind = strcmp((char const *)(str),"NowISTHETimE "); + if (ind != 0) printf_va_635("%s %u Error -%s- \n", + (char *)"test_strljustify_s",(unsigned int)218, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," qq21ego "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_636("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)230, + (unsigned int)rc); + strzero_s(str,(unsigned int)128); + strcpy(str," 1234 "); + len = strlen((char const *)(str)); + rc = strljustify_s(str,len); + if (rc != 0) printf_va_637("%s %u Error rc=%u \n", + (char *)"test_strljustify_s",(unsigned int)242, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static char str1_6[128]; +static char str2_6[128]; +int test_strncat_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + rc = strncat_s((char *)0,(unsigned int)128,(char const *)(str2_6), + (unsigned int)128); + if (rc != 400) ; + rc = strncat_s(str1_6,(unsigned int)128,(char const *)0,(unsigned int)128); + if (rc != 400) ; + rc = strncat_s(str1_6,(unsigned int)0,(char const *)(str2_6), + (unsigned int)128); + if (rc != 401) ; + rc = strncat_s(str1_6,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_6),(unsigned int)128); + if (rc != 403) ; + rc = strncat_s(str1_6,(unsigned int)(4UL << 10),(char const *)(str2_6), + (unsigned int)((4UL << 10) + (unsigned long)1)); + if (rc != 403) ; + strcpy(str1_6,"aaaaaaaaaa"); + strcpy(str2_6,"keep it simple"); + rc = strncat_s(str1_6,(unsigned int)1,(char const *)(str2_6), + (unsigned int)128); + if (rc != 407) ; + if ((int)str1_6[0] != '\000') ; + strcpy(str1_6,"aaaaaaaaaa"); + strcpy(str2_6,"keep it simple"); + rc = strncat_s(str1_6,(unsigned int)2,(char const *)(str2_6), + (unsigned int)128); + if (rc != 407) ; + if ((int)str1_6[0] != '\000') ; + strcpy(str1_6,"a"); + strcpy(str2_6,"b"); + rc = strncat_s(str1_6,(unsigned int)2,(char const *)(str2_6), + (unsigned int)1); + if (rc != 406) ; + if ((int)str1_6[0] != '\000') ; + strcpy(str1_6,"a"); + strcpy(str2_6,"b"); + rc = strncat_s(str1_6,(unsigned int)3,(char const *)(str2_6), + (unsigned int)1); + if (rc != 0) ; + ind = strcmp((char const *)(str1_6),"ab"); + if (ind != 0) ; + strcpy(str1_6,"aaaaaaaaaa"); + strcpy(str2_6,"keep it simple"); + rc = strncat_s(str1_6,(unsigned int)50,(char const *)(str2_6), + (unsigned int)128); + if (rc != 0) ; + ind = strcmp((char const *)(str1_6),"aaaaaaaaaakeep it simple"); + if (ind != 0) ; + strcpy(str1_6,"good"); + strcpy(str2_6,"bye"); + rc = strncat_s(str1_6,(unsigned int)100,(char const *)(str2_6), + (unsigned int)100); + if (rc != 0) ; + ind = strcmp((char const *)(str1_6),"goodbye"); + if (ind != 0) ; + strcpy(str1_6,"hello"); + rc = strncat_s(str1_6,(unsigned int)6,"",(unsigned int)1); + if (rc != 0) ; + ind = strcmp((char const *)(str1_6),"hello"); + if (ind != 0) ; + strcpy(str1_6,"hello"); + rc = strncat_s(str1_6,(unsigned int)6,"X",(unsigned int)2); + if (rc != 406) ; + if ((int)str1_6[0] != '\000') ; + strcpy(str1_6,"abc"); + rc = strncat_s(str1_6,(unsigned int)7,"defghijklmn",(unsigned int)3); + if (rc != 0) ; + ind = strcmp((char const *)(str1_6),"abcdef"); + if (ind != 0) ; + __retres = 0; + return __retres; +} + +static char str1_7[128]; +static char str2_7[128]; +static char dest[128]; +int test_strncpy_s(void) +{ + int __retres; + errno_t rc; + rsize_t nlen; + int32_t ind; + nlen = (unsigned int)5; + rc = strncpy_s((char *)0,(unsigned int)128,(char const *)(str2_7),nlen); + if (rc != 400) ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + nlen = (unsigned int)5; + rc = strncpy_s(str1_7,(unsigned int)5,(char const *)0,nlen); + if (rc != 400) ; + if ((int)str1_7[0] != '\000') ; + nlen = (unsigned int)5; + rc = strncpy_s(str1_7,(unsigned int)0,(char const *)(str2_7),nlen); + if (rc != 401) ; + rc = strncpy_s(str1_7,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_7),nlen); + if (rc != 403) ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_7[0] = (char)'\000'; + rc = strncpy_s(str1_7,(unsigned int)5,(char const *)(str2_7), + (unsigned int)0); + if (rc != 401) ; + if ((int)str1_7[0] != '\000') ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2_7,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + rc = strncpy_s(str1_7,(unsigned int)5,(char const *)(str2_7), + (unsigned int)((4UL << 10) + (unsigned long)1)); + if (rc != 403) ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2_7[0] = (char)'\000'; + nlen = (unsigned int)5; + rc = strncpy_s(str1_7,(unsigned int)(128 / 2),(char const *)(str2_7),nlen); + if (rc != 0) ; + if ((int)str1_7[0] != '\000') ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + nlen = (unsigned int)5; + rc = strncpy_s(str1_7,(unsigned int)128,(char const *)(str1_7),nlen); + if (rc != 404) ; + if ((int)str1_7[0] != '\000') ; + strcpy(str1_7,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + nlen = (unsigned int)18; + rc = strncpy_s(str1_7,(unsigned int)128,(char const *)(& str1_7[5]),nlen); + if (rc != 404) ; + if ((int)str1_7[0] != '\000') ; + strcpy(str1_7,"keep it simple"); + str2_7[0] = (char)'\000'; + nlen = (unsigned int)10; + rc = strncpy_s(str1_7,(unsigned int)128,(char const *)(str2_7),nlen); + if (rc != 0) ; + if ((int)str1_7[0] != '\000') ; + str1_7[0] = (char)'\000'; + strcpy(str2_7,"keep it simple"); + nlen = (unsigned int)20; + rc = strncpy_s(str1_7,(unsigned int)128,(char const *)(str2_7),nlen); + if (rc != 0) ; + ind = strcmp((char const *)(str1_7),(char const *)(str2_7)); + if (ind != 0) ; + strcpy(str1_7,"qqweqeqeqeq"); + strcpy(str2_7,"keep it simple"); + nlen = (unsigned int)32; + rc = strncpy_s(str1_7,(unsigned int)128,(char const *)(str2_7),nlen); + if (rc != 0) ; + ind = strcmp((char const *)(str1_7),(char const *)(str2_7)); + if (ind != 0) ; + strcpy(str1_7,"qqweqeqeqeq"); + strcpy(str2_7,"keep it simple"); + rc = strncpy_s(str1_7,(unsigned int)1,(char const *)(str2_7),nlen); + if (rc != 406) ; + if ((int)str1_7[0] != '\000') ; + strcpy(str1_7,"qqweqeqeqeq"); + strcpy(str2_7,"keep it simple"); + rc = strncpy_s(str1_7,(unsigned int)2,(char const *)(str2_7),nlen); + if (rc != 406) ; + if ((int)str1_7[0] != '\000') ; + strcpy(dest," "); + strcpy(str1_7,"hello"); + rc = strncpy_s(dest,(unsigned int)6,(char const *)(str1_7), + (unsigned int)100); + if (rc != 0) ; + ind = strcmp((char const *)(dest),(char const *)(str1_7)); + if (ind != 0) ; + strcpy(dest," "); + strcpy(str2_7,"goodbye"); + rc = strncpy_s(dest,(unsigned int)5,(char const *)(str2_7),(unsigned int)7); + if (rc != 406) ; + strcpy(dest," "); + strcpy(str2_7,"goodbye"); + rc = strncpy_s(dest,(unsigned int)5,(char const *)(str2_7),(unsigned int)4); + if (rc != 0) ; + ind = strcmp((char const *)(dest),"good"); + if (ind != 0) ; + strcpy(dest," "); + strcpy(str2_7,"good"); + rc = strncpy_s(dest,(unsigned int)5,(char const *)(str2_7),(unsigned int)8); + if (rc != 0) ; + ind = strcmp((char const *)(dest),"good"); + if (ind != 0) ; + strcpy(str1_7,"qq12345weqeqeqeq"); + strcpy(str2_7,"it"); + nlen = (unsigned int)10; + rc = strncpy_s(str1_7,(unsigned int)10,(char const *)(str2_7),nlen); + if (rc != 0) ; + ind = strcmp((char const *)(str1_7),(char const *)(str2_7)); + if (ind != 0) ; + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_638(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_639(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_640(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_641(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_642(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_643(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_644(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_645(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_646(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_647(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +int test_strnlen_s(void) +{ + int __retres; + rsize_t len; + rsize_t std_len; + rsize_t max_len; + max_len = (unsigned int)3; + len = strnlen_s((char const *)0,max_len); + if (len != (rsize_t)0) printf_va_638("%s %u Len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)25,len); + max_len = (unsigned int)0; + len = strnlen_s("test",max_len); + if (len != (rsize_t)0) printf_va_639("%s %u Len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)34,len); + max_len = (unsigned int)((4UL << 10) + (unsigned long)1); + len = strnlen_s("test",max_len); + if (len != (rsize_t)0) printf_va_640("%s %u Len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)43,len); + std_len = strlen(""); + max_len = (unsigned int)(4UL << 10); + len = strnlen_s("",max_len); + if (std_len != len) printf_va_641("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)55,std_len,len); + std_len = strlen("t"); + max_len = (unsigned int)(4UL << 10); + len = strnlen_s("t",max_len); + if (std_len != len) printf_va_642("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)67,std_len,len); + std_len = strlen("to"); + max_len = (unsigned int)(4UL << 10); + len = strnlen_s("to",max_len); + if (std_len != len) printf_va_643("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)79,std_len,len); + std_len = strlen("testing"); + max_len = (unsigned int)(4UL << 10); + len = strnlen_s("testing",max_len); + if (std_len != len) printf_va_644("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)91,std_len,len); + max_len = (unsigned int)1; + len = strnlen_s("testing",max_len); + if (len != max_len) printf_va_645("%s %u len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)101,len); + max_len = (unsigned int)2; + len = strnlen_s("testing",max_len); + if (len != max_len) printf_va_646("%s %u len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)111,len); + max_len = (unsigned int)3; + len = strnlen_s("testing",max_len); + if (len != max_len) printf_va_647("%s %u len=%zu \n", + (char *)"test_strnlen_s", + (unsigned int)121,len); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_648(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_649(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_650(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_651(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_652(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_653(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_654(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_655(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_656(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, size_t param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_657(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_658(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_659(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_660(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_661(char const * __restrict format, char *param0, + unsigned int param1, size_t param2); + +int test_strnterminate_s(void) +{ + int __retres; + rsize_t len; + rsize_t std_len; + rsize_t max_len; + char dest_0[128]; + size_t tmp; + strcpy(dest_0,""); + max_len = (unsigned int)3; + len = strnterminate_s((char *)0,max_len); + if (len != (rsize_t)0) printf_va_648("%s %u Len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)29,len); + strcpy(dest_0,"test"); + max_len = (unsigned int)0; + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)0) printf_va_649("%s %u Len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)39,len); + strcpy(dest_0,"test"); + max_len = (unsigned int)((4UL << 10) + (unsigned long)1); + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)0) printf_va_650("%s %u Len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)49,len); + strcpy(dest_0,"ff"); + std_len = strlen((char const *)(dest_0)); + max_len = (unsigned int)(4UL << 10); + len = strnterminate_s(dest_0,max_len); + if (std_len != len) printf_va_651("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)62,std_len,len); + strcpy(dest_0,"ff"); + len = strnterminate_s(dest_0,(unsigned int)1); + if (len != (rsize_t)0) printf_va_652("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)72,std_len,len); + strcpy(dest_0,"f"); + max_len = (unsigned int)(4UL << 10); + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)1) printf_va_653("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)83,std_len,len); + strcpy(dest_0,"f"); + max_len = (unsigned int)(4UL << 10); + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)1) printf_va_654("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)94,std_len,len); + strcpy(dest_0,"ff"); + max_len = (unsigned int)(4UL << 10); + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)2) printf_va_655("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)105,std_len,len); + strcpy(dest_0,"test"); + max_len = (unsigned int)(4UL << 10); + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)4) printf_va_656("%s %u std_len=%zu len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)116,std_len,len); + strcpy(dest_0,"testing"); + max_len = (unsigned int)1; + len = strnterminate_s(dest_0,max_len); + if (len != (rsize_t)0) printf_va_657("%s %u len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)127,len); + strcpy(dest_0,"testing"); + max_len = (unsigned int)2; + len = strnterminate_s(dest_0,max_len); + if (len != max_len - (rsize_t)1) printf_va_658("%s %u len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)138,len); + strcpy(dest_0,"testing"); + max_len = (unsigned int)3; + len = strnterminate_s(dest_0,max_len); + if (len != max_len - (rsize_t)1) printf_va_659("%s %u len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)149,len); + strcpy(dest_0,"testing"); + max_len = (unsigned int)33; + len = strnterminate_s(dest_0,max_len); + tmp = strlen((char const *)(dest_0)); + ; + if (len != tmp) printf_va_660("%s %u len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)160,len); + strcpy(dest_0,"012345678901234567890"); + len = (unsigned int)21; + while (len) { + size_t tmp_0; + len = strnterminate_s(dest_0,len); + tmp_0 = strlen((char const *)(dest_0)); + ; + if (len != tmp_0) printf_va_661("%s %u len=%zu \n", + (char *)"test_strnterminate_s", + (unsigned int)173,len); + } + __retres = 0; + return __retres; +} + +static char str1_8[128]; +static char str2_8[128]; +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_662(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_663(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_664(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_665(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_666(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_667(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_668(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_669(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_670(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_671(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_672(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_673(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_674(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_675(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_676(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_677(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_678(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_679(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_680(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_681(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_682(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_683(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_684(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_685(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_686(char const * __restrict format, char *param0, + unsigned int param1, void *param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_687(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_688(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_689(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_690(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_691(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_692(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_693(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_694(char const * __restrict format, char *param0, + unsigned int param1, void *param2, void *param3, int param4); + +int test_strpbrk_s(void) +{ + int __retres; + errno_t rc; + char *first; + char *std_first; + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128, + (char **)0); + if (rc != 400) printf_va_662("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)28,rc); + rc = strpbrk_s((char *)0,(unsigned int)128,str2_8,(unsigned int)128, + & first); + if (rc != 400) printf_va_663("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)36,rc); + if (first) printf_va_664("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)41, + (void *)first,rc); + rc = strpbrk_s(str1_8,(unsigned int)128,(char *)0,(unsigned int)128, + & first); + if (rc != 400) printf_va_665("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)49,rc); + if (first) printf_va_666("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)54, + (void *)first,rc); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128, + (char **)0); + if (rc != 400) printf_va_667("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)62,rc); + rc = strpbrk_s(str1_8,(unsigned int)0,str2_8,(unsigned int)128,& first); + if (rc != 401) printf_va_668("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)70,rc); + if (first) printf_va_669("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)75, + (void *)first,rc); + rc = strpbrk_s(str1_8,(unsigned int)((4UL << 10) + (unsigned long)1), + str2_8,(unsigned int)128,& first); + if (rc != 403) printf_va_670("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)83,rc); + if (first) printf_va_671("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)88, + (void *)first,rc); + rc = strpbrk_s(str1_8,(unsigned int)(4UL << 10),str2_8, + (unsigned int)((4UL << 10) + (unsigned long)1),& first); + if (rc != 403) printf_va_672("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)96,rc); + if (first) printf_va_673("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)101, + (void *)first,rc); + str1_8[0] = (char)'\000'; + str2_8[0] = (char)'\000'; + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128,& first); + if (rc != 409) printf_va_674("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)113, + (void *)first,rc); + if (first) printf_va_675("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)118, + (void *)first,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_676("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)124,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"1234"); + rc = strpbrk_s(str1_8,(unsigned int)2,str2_8,(unsigned int)128,& first); + if (rc != 409) printf_va_677("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)135, + (void *)first,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_678("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)141,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"ke"); + rc = strpbrk_s(str1_8,(unsigned int)2,str2_8,(unsigned int)128,& first); + if (rc != 0) printf_va_679("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)152, + (void *)first,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_680("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)158,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simplez"); + strcpy(str2_8,"z"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128,& first); + if (rc != 0) printf_va_681("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)169, + (void *)first,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_682("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)175,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"123456"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)2,& first); + if (rc != 409) printf_va_683("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)186,rc); + if (first != (char *)0) printf_va_684("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)191,(void *)first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,""); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)1,& first); + if (rc != 409) printf_va_685("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)202,rc); + if (first != (char *)0) printf_va_686("%s %u Error first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)207,(void *)first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"k"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)1,& first); + if (rc != 0) printf_va_687("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)218,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_688("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)224,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"ke"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)2,& first); + if (rc != 0) printf_va_689("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)235,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_690("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)241,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simple"); + strcpy(str2_8,"hip"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128,& first); + if (rc != 0) printf_va_691("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)252,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_692("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)258,(void *)first, + (void *)std_first,rc); + strcpy(str1_8,"keep it simply"); + strcpy(str2_8,"123y"); + rc = strpbrk_s(str1_8,(unsigned int)128,str2_8,(unsigned int)128,& first); + if (rc != 0) printf_va_693("%s %u Error rc=%d \n", + (char *)"test_strpbrk_s",(unsigned int)269,rc); + std_first = strpbrk((char const *)(str1_8),(char const *)(str2_8)); + if (first != std_first) printf_va_694("%s %u first=%p std_first=%p rc=%d \n", + (char *)"test_strpbrk_s", + (unsigned int)275,(void *)first, + (void *)std_first,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_695(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_696(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_697(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_698(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_699(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_700(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_701(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_702(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_703(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_704(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_705(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_706(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_707(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +int test_strprefix_s(void) +{ + int __retres; + errno_t rc; + rsize_t len; + char str1_17[128]; + char str2_16[128]; + rc = strprefix_s((char const *)0,(unsigned int)128,(char const *)(str2_16)); + if (rc != 400) printf_va_695("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)28, + rc); + rc = strprefix_s((char const *)(str1_17),(unsigned int)128,(char const *)0); + if (rc != 400) printf_va_696("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)36, + rc); + rc = strprefix_s((char const *)(str1_17),(unsigned int)0, + (char const *)(str2_16)); + if (rc != 401) printf_va_697("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)44, + rc); + rc = strprefix_s((char const *)(str1_17), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_16)); + if (rc != 403) printf_va_698("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)52, + rc); + str1_17[0] = (char)'\000'; + str2_16[0] = (char)'\000'; + rc = strprefix_s((char const *)(str1_17),(unsigned int)128, + (char const *)(str2_16)); + if (rc != 409) printf_va_699("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)63, + rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)55, + (char const *)(str2_16)); + if (rc != 0) printf_va_700("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)74,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"kerp"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)55, + (char const *)(str2_16)); + if (rc != 409) printf_va_701("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)85, + rc); + strcpy(str1_17,"ke"); + strcpy(str2_16,"kerp"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)2, + (char const *)(str2_16)); + if (rc != 0) printf_va_702("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)96,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)4, + (char const *)(str2_16)); + if (rc != 0) printf_va_703("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)107,rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keeeep"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)4, + (char const *)(str2_16)); + if (rc != 409) printf_va_704("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)118, + rc); + strcpy(str1_17,"keep it simple"); + rc = strprefix_s((char const *)(str1_17),(unsigned int)4,""); + if (rc != 409) printf_va_705("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)128, + rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep it sipmle and very long"); + len = strlen((char const *)(str1_17)); + rc = strprefix_s((char const *)(str1_17),len,(char const *)(str2_16)); + if (rc != 409) printf_va_706("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)141, + rc); + strcpy(str1_17,"keep it simple"); + strcpy(str2_16,"keep it simple"); + len = strlen((char const *)(str1_17)); + rc = strprefix_s((char const *)(str1_17),len,(char const *)(str2_16)); + if (rc != 0) printf_va_707("%s %u Error rc=%d \n", + (char *)"test_strprefix_s",(unsigned int)154,rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_708(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_709(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_710(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_711(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_712(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_713(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_714(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_715(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_716(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_717(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_718(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_719(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_720(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_721(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_722(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_723(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_724(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_725(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_726(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_727(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_728(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_729(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_730(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +int test_strremovews_s(void) +{ + int __retres; + errno_t rc; + int ind; + uint32_t len; + char str[128]; + len = (unsigned int)5; + rc = strremovews_s((char *)0,len); + if (rc != 400) printf_va_708("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)28, + (unsigned int)rc); + len = (unsigned int)0; + rc = strremovews_s((char *)"test",len); + if (rc != 401) printf_va_709("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)37, + (unsigned int)rc); + len = (unsigned int)99999; + rc = strremovews_s((char *)"test",len); + if (rc != 403) printf_va_710("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)46, + (unsigned int)rc); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABCDEFGHIJK"); + len = (unsigned int)1; + rc = strremovews_s(str,len); + if (rc != 0) printf_va_711("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)57, + (unsigned int)rc); + if ((int)str[0] != '\000') printf_va_712("%s %u Error -%s- \n", + (char *)"test_strremovews_s", + (unsigned int)62,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABCDEFGHIJK"); + len = (unsigned int)2; + rc = strremovews_s(str,len); + if (rc != 407) printf_va_713("%s %u Error rc=%u --%s--\n", + (char *)"test_strremovews_s",(unsigned int)74, + (unsigned int)rc,str); + strzero_s(str,(unsigned int)128); + strcpy(str," ABCDEFGHIJK"); + len = (unsigned int)3; + rc = strremovews_s(str,len); + if (rc != 407) printf_va_714("%s %u Error rc=%u --%s--\n", + (char *)"test_strremovews_s",(unsigned int)86, + (unsigned int)rc,str); + if ((int)str[0] != '\000') printf_va_715("%s %u Error rc=%u --%s--\n", + (char *)"test_strremovews_s", + (unsigned int)91,(unsigned int)rc, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," ABCDEFGHIJK"); + len = (unsigned int)9; + rc = strremovews_s(str,len); + if (rc != 407) printf_va_716("%s %u Error rc=%u --%s--\n", + (char *)"test_strremovews_s", + (unsigned int)103,(unsigned int)rc,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"A"); + len = (unsigned int)1; + rc = strremovews_s(str,len); + if (rc != 0) printf_va_717("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)116, + (unsigned int)rc); + if ((int)str[0] != '\000') printf_va_718("%s %u Error -%s- \n", + (char *)"test_strremovews_s", + (unsigned int)121,str); + strzero_s(str,(unsigned int)128); + strcpy(str,"ABC"); + len = (unsigned int)8; + rc = strremovews_s(str,len); + if (rc != 0) printf_va_719("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)133, + (unsigned int)rc); + if ((int)str[0] != 'A') printf_va_720("%s %u Error -%s- \n", + (char *)"test_strremovews_s", + (unsigned int)138,str); + strzero_s(str,(unsigned int)128); + strcpy(str," B"); + len = strlen((char const *)(str)); + rc = strremovews_s(str,len); + if (rc != 0) printf_va_721("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)150, + (unsigned int)rc); + if ((int)str[0] != 'B') printf_va_722("%s %u Error -%s- \n", + (char *)"test_strremovews_s", + (unsigned int)155,str); + strzero_s(str,(unsigned int)128); + strcpy(str," C "); + len = strlen((char const *)(str)); + rc = strremovews_s(str,len); + if (rc != 0) printf_va_723("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)167, + (unsigned int)rc); + ind = strcmp((char const *)(str),"C"); + if (ind != 0) printf_va_724("%s %u Error -%s- \n", + (char *)"test_strremovews_s",(unsigned int)173, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," NowISTHETimE 1 2 "); + len = strlen((char const *)(str)); + rc = strremovews_s(str,len); + if (rc != 0) printf_va_725("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)185, + (unsigned int)rc); + ind = strcmp((char const *)(str),"NowISTHETimE 1 2"); + if (ind != 0) printf_va_726("%s %u Error -%s- \n", + (char *)"test_strremovews_s",(unsigned int)191, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," q q21ego"); + len = strlen((char const *)(str)); + rc = strremovews_s(str,len); + if (rc != 0) printf_va_727("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)203, + (unsigned int)rc); + ind = strcmp((char const *)(str),"q q21ego"); + if (ind != 0) printf_va_728("%s %u Error -%s- \n", + (char *)"test_strremovews_s",(unsigned int)209, + str); + strzero_s(str,(unsigned int)128); + strcpy(str," 1 2 3 4 "); + len = strlen((char const *)(str)); + rc = strremovews_s(str,len); + if (rc != 0) printf_va_729("%s %u Error rc=%u \n", + (char *)"test_strremovews_s",(unsigned int)221, + (unsigned int)rc); + ind = strcmp((char const *)(str),"1 2 3 4"); + if (ind != 0) printf_va_730("%s %u Error -%s- \n", + (char *)"test_strremovews_s",(unsigned int)227, + str); + __retres = 0; + return __retres; +} + +static char str1_9[128]; +static char str2_9[128]; +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_731(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_732(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_733(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_734(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_735(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_736(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_737(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_738(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_739(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_740(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_741(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_742(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_743(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_744(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_745(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_746(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_747(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_748(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_749(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_750(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_751(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_752(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_753(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_754(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_755(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_756(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_757(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_758(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_759(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_760(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_761(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_762(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_763(char const * __restrict format, char *param0, + unsigned int param1, size_t param2, int param3, int param4); + +int test_strspn_s(void) +{ + int __retres; + size_t tmp; + size_t tmp_0; + size_t tmp_1; + size_t tmp_2; + size_t tmp_3; + size_t tmp_4; + errno_t rc = 0; + rsize_t count = (unsigned int)0; + int32_t std_count = 0; + rc = strspn_s((char const *)0,(unsigned int)128,(char const *)(str2_9), + (unsigned int)128,& count); + if (rc != 400) printf_va_731("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)29,rc); + if (count != (rsize_t)0) printf_va_732("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)34,count,std_count,rc); + rc = strspn_s((char const *)(str1_9),(unsigned int)128,(char const *)0, + (unsigned int)128,& count); + if (rc != 400) printf_va_733("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)42,rc); + if (count != (rsize_t)0) printf_va_734("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)47,count,std_count,rc); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,(rsize_t *)0); + if (rc != 400) printf_va_735("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)55,rc); + rc = strspn_s((char const *)(str1_9),(unsigned int)0, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 401) printf_va_736("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)63,rc); + if (count != (rsize_t)0) printf_va_737("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)68,count,std_count,rc); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)0,& count); + if (rc != 401) printf_va_738("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)76,rc); + if (count != (rsize_t)0) printf_va_739("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)81,count,std_count,rc); + rc = strspn_s((char const *)(str1_9), + (unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 403) printf_va_740("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)89,rc); + if (count != (rsize_t)0) printf_va_741("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)94,count,std_count,rc); + rc = strspn_s((char const *)(str1_9),(unsigned int)(4UL << 10), + (char const *)(str2_9), + (unsigned int)((4UL << 10) + (unsigned long)1),& count); + if (rc != 403) printf_va_742("%s %u Error rc=%d \n", + (char *)"test_strspn_s",(unsigned int)102,rc); + if (count != (rsize_t)0) printf_va_743("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)107,count,std_count, + rc); + str1_9[0] = (char)'\000'; + str2_9[0] = (char)'\000'; + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_744("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)118,rc); + if (count != (rsize_t)0) printf_va_745("%s %u Error count=%zu rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)123,count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"keep"); + rc = strspn_s((char const *)(str1_9),(unsigned int)1, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_746("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)134,rc); + if (count != (rsize_t)1) printf_va_747("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)139,count,std_count, + rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"keep"); + rc = strspn_s((char const *)(str1_9),(unsigned int)2, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_748("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)150,rc); + if (count != (rsize_t)2) printf_va_749("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)155,count,std_count, + rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"keep"); + rc = strspn_s((char const *)(str1_9),(unsigned int)3, + (char const *)(str2_9),(unsigned int)12,& count); + if (rc != 0) printf_va_750("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)166,rc); + if (count != (rsize_t)3) printf_va_751("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)171,count,std_count, + rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"k"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)1,& count); + if (rc != 0) printf_va_752("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)182,rc); + tmp = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp; + if (count != (rsize_t)std_count) printf_va_753("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)188,count, + std_count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"ke"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)2,& count); + if (rc != 0) printf_va_754("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)199,rc); + tmp_0 = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp_0; + if (count != (rsize_t)std_count) printf_va_755("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)205,count, + std_count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"keep"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_756("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)217,rc); + tmp_1 = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp_1; + if (count != (rsize_t)std_count) printf_va_757("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)223,count, + std_count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"keep"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_758("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)234,rc); + tmp_2 = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp_2; + if (count != (rsize_t)std_count) printf_va_759("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)240,count, + std_count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"notincluded"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_760("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)251,rc); + tmp_3 = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp_3; + if (count != (rsize_t)std_count) printf_va_761("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)257,count, + std_count,rc); + strcpy(str1_9,"keep it simple"); + strcpy(str2_9,"1234567890"); + rc = strspn_s((char const *)(str1_9),(unsigned int)128, + (char const *)(str2_9),(unsigned int)128,& count); + if (rc != 0) printf_va_762("%s %u Error rc=%d \n",(char *)"test_strspn_s", + (unsigned int)268,rc); + tmp_4 = strspn((char const *)(str1_9),(char const *)(str2_9)); + std_count = (int)tmp_4; + if (count != (rsize_t)std_count) printf_va_763("%s %u count=%zu std_count=%d rc=%d \n", + (char *)"test_strspn_s", + (unsigned int)274,count, + std_count,rc); + __retres = 0; + return __retres; +} + +static char str1_10[128]; +static char str2_10[128]; +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_764(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_765(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_766(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_767(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_768(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_769(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_770(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_771(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_772(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_773(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_774(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_775(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_776(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_777(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_778(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_779(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_780(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_781(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_782(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_783(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_784(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_785(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_786(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_787(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_788(char const * __restrict format, char *param0, + unsigned int param1, int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_789(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), param2, param1, *(param0 + (0 ..)); + */ +int printf_va_790(char const * __restrict format, char *param0, + unsigned int param1, int param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_791(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_792(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_793(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_794(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_795(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_796(char const * __restrict format, char *param0, + unsigned int param1, int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_797(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_798(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_799(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strstr_s(void) +{ + int __retres; + errno_t rc; + char *sub; + char *std_sub; + rsize_t len1; + rsize_t len2; + rc = strstr_s((char *)0,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 400) printf_va_764("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)31,rc); + if (sub) printf_va_765("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)36,rc); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)0,(unsigned int)128, + & sub); + if (rc != 400) printf_va_766("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)44,rc); + if (sub) printf_va_767("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)49,rc); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,(char **)0); + if (rc != 400) printf_va_768("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)57,rc); + rc = strstr_s(str1_10,(unsigned int)0,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 401) printf_va_769("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)65,rc); + if (sub) printf_va_770("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)70,rc); + rc = strstr_s(str1_10,(unsigned int)((4UL << 10) + (unsigned long)1), + (char const *)(str2_10),(unsigned int)128,& sub); + if (rc != 403) printf_va_771("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)78,rc); + if (sub) printf_va_772("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)83,rc); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)0,& sub); + if (rc != 401) printf_va_773("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)91,rc); + if (sub) printf_va_774("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)96,rc); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)((4UL << 10) + (unsigned long)1),& sub); + if (rc != 403) printf_va_775("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)104,rc); + if (sub) printf_va_776("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)109,rc); + str1_10[0] = (char)'\000'; + str2_10[0] = (char)'\000'; + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_777("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)120,rc); + if (sub != str1_10) printf_va_778("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)125,rc); + strcpy(str1_10,"keep it all together"); + str2_10[0] = (char)'\000'; + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_779("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)136,rc); + if (sub != str1_10) printf_va_780("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)141,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"kee"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_781("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)153,rc); + if (sub != str1_10) printf_va_782("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)158,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"eep it"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_783("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)170,rc); + if (sub != & str1_10[1]) printf_va_784("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)175,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"ethe"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_785("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)187,rc); + if (sub != & str1_10[15]) printf_va_786("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)192,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"he"); + len1 = strlen((char const *)(str1_10)); + len2 = strlen((char const *)(str2_10)); + rc = strstr_s(str1_10,len1,(char const *)(str2_10),len2,& sub); + if (rc != 0) printf_va_787("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)206,rc); + if (sub != & str1_10[17]) printf_va_788("%s %u Error rc=%d sub=%s \n", + (char *)"test_strstr_s", + (unsigned int)211,rc,sub); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"er"); + len1 = strlen((char const *)(str1_10)); + len2 = strlen((char const *)(str2_10)); + rc = strstr_s(str1_10,len1,(char const *)(str2_10),len2,& sub); + if (rc != 0) printf_va_789("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)225,rc); + if (sub != & str1_10[18]) printf_va_790("%s %u Error rc=%d sub=%s \n", + (char *)"test_strstr_s", + (unsigned int)230,rc,sub); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"it all"); + rc = strstr_s(str1_10,(unsigned int)3,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 409) printf_va_791("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)241,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"it all"); + rc = strstr_s(str1_10,(unsigned int)333,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_792("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)252,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"it all"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)5,& sub); + if (rc != 0) printf_va_793("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)263,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"1234"); + len1 = strlen((char const *)(str1_10)); + rc = strstr_s(str1_10,len1,(char const *)(str2_10),(unsigned int)128,& sub); + if (rc != 409) printf_va_794("%s %u Error rc=%d \n", + (char *)"test_strstr_s",(unsigned int)276,rc); + if (sub != (char *)0) printf_va_795("%s %u Error rc=%d \n", + (char *)"test_strstr_s", + (unsigned int)281,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"it all"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)2,& sub); + if (rc != 0) printf_va_796("%s %u Error rc=%d \n",(char *)"test_strstr_s", + (unsigned int)292,rc); + strcpy(str1_10,"keep it all together"); + strcpy(str2_10,"eep"); + rc = strstr_s(str1_10,(unsigned int)128,(char const *)(str2_10), + (unsigned int)128,& sub); + if (rc != 0) printf_va_797("%s %u Error rc=%u \n",(char *)"test_strstr_s", + (unsigned int)303,(unsigned int)rc); + if (sub != & str1_10[1]) printf_va_798("%s %u Error rc=%u \n", + (char *)"test_strstr_s", + (unsigned int)308,(unsigned int)rc); + std_sub = strstr((char const *)(str1_10),(char const *)(str2_10)); + if (sub != std_sub) printf_va_799("%s %u Error rc=%u \n", + (char *)"test_strstr_s", + (unsigned int)315,(unsigned int)rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_800(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_801(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_802(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_803(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_804(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_805(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_806(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param1); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param1 + (0 ..))), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param1 + (0 ..)), *(param0 + (0 ..)); + */ +int printf_va_807(char const * __restrict format, char *param0, char *param1); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_808(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_809(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_810(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_811(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: *(param3 + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_812(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3, int param4); + +/*@ requires valid_read_string(format); + requires valid_read_string(param3); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: *(param3 + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_813(char const * __restrict format, char *param0, + unsigned int param1, char *param2, char *param3, int param4); + +int test_strtok_s(void) +{ + int __retres; + errno_t rc; + char *p2str; + char *p2tok; + rsize_t len; + char str1_17[128]; + char str2_16[128]; + size_t tmp; + int tmp_0; + int tmp_1; + int tmp_2; + p2tok = strtok_s(str1_17,(rsize_t *)0,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_800("%s %u Error rc=%u \n", + (char *)"test_strtok_s", + (unsigned int)31,(unsigned int)rc); + len = (unsigned int)0; + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_801("%s %u Error rc=%u \n", + (char *)"test_strtok_s", + (unsigned int)41,(unsigned int)rc); + len = (unsigned int)((4UL << 10) + (unsigned long)1); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_802("%s %u Error rc=%u \n", + (char *)"test_strtok_s", + (unsigned int)51,(unsigned int)rc); + len = (unsigned int)0; + p2tok = strtok_s(str1_17,& len,(char const *)0,& p2str); + if (p2tok != (char *)0) printf_va_803("%s %u Error rc=%u \n", + (char *)"test_strtok_s", + (unsigned int)61,(unsigned int)rc); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),(char **)0); + if (p2tok != (char *)0) printf_va_804("%s %u Error rc=%u \n", + (char *)"test_strtok_s", + (unsigned int)70,(unsigned int)rc); + strcpy(str1_17,"aaaaaaaa"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"fedcba"); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_805("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s", + (unsigned int)85,p2tok,p2str); + strcpy(str1_17,"jklmnopqrst"); + tmp = strlen((char const *)(str1_17)); + len = tmp - (size_t)2; + strcpy(str2_16,"fedcba"); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_806("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s", + (unsigned int)99,p2tok,p2str); + if (p2tok != (char *)0) printf_va_807("token -%s- -%s- \n",p2tok,p2str); + strcpy(str1_17,"aaamnopqrst"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"fedcba"); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok == (char *)0) printf_va_808("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s", + (unsigned int)117,p2tok,p2str); + strcpy(str1_17,"aaamnopqrstfedcba"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"fedcba"); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + if (p2tok == (char *)0) printf_va_809("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s", + (unsigned int)132,p2tok,p2str); + tmp_0 = strcmp((char const *)p2tok,"mnopqrst"); + if (tmp_0) printf_va_810("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s",(unsigned int)137,p2tok, + p2str); + p2tok = strtok_s(p2str,& len,(char const *)(str2_16),& p2str); + if (p2tok != (char *)0) printf_va_811("%s %u token -%s- remaining -%s- \n", + (char *)"test_strtok_s", + (unsigned int)148,p2tok,p2str); + strcpy(str1_17,"?a?\?\?b,,,#c"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,"?"); + p2tok = strtok_s(str1_17,& len,(char const *)(str2_16),& p2str); + tmp_1 = strcmp((char const *)p2tok,"a"); + if (tmp_1) printf_va_812("%s %u token -%s- -%s- len=%d \n", + (char *)"test_strtok_s",(unsigned int)167,p2tok, + p2str,(int)len); + strcpy(str1_17,"?a?\?\?b,,,#c"); + len = strlen((char const *)(str1_17)); + strcpy(str2_16,","); + p2tok = strtok_s((char *)0,& len,(char const *)(str2_16),& p2str); + tmp_2 = strcmp((char const *)p2tok,"?\?b"); + if (tmp_2) printf_va_813("%s %u token -%s- -%s- len=%d \n", + (char *)"test_strtok_s",(unsigned int)184,p2tok, + p2str,(int)len); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_814(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_815(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_816(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_817(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_818(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_819(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_820(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_821(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_822(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_823(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_824(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_825(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_826(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_827(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strtolowercase_s(void) +{ + int __retres; + errno_t rc; + rsize_t len; + char str[128]; + int tmp; + int tmp_0; + int tmp_1; + int tmp_2; + int tmp_3; + len = (unsigned int)5; + rc = strtolowercase_s((char *)0,len); + if (rc != 400) printf_va_814("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)26,(unsigned int)rc); + len = (unsigned int)0; + rc = strtolowercase_s((char *)"test",len); + if (rc != 401) printf_va_815("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)35,(unsigned int)rc); + len = (unsigned int)99999; + rc = strtolowercase_s((char *)"test",len); + if (rc != 403) printf_va_816("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)44,(unsigned int)rc); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strtolowercase_s(str,len); + if (rc != 0) printf_va_817("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)55,(unsigned int)rc); + tmp = strcmp((char const *)(str),"n"); + if (tmp) printf_va_818("%s %u Error -%s- \n", + (char *)"test_strtolowercase_s",(unsigned int)60, + str); + strcpy(str,"n"); + len = strlen((char const *)(str)); + rc = strtolowercase_s(str,len); + if (rc != 0) printf_va_819("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)71,(unsigned int)rc); + tmp_0 = strcmp((char const *)(str),"n"); + if (tmp_0) printf_va_820("%s %u Error -%s- \n", + (char *)"test_strtolowercase_s",(unsigned int)76, + str); + strcpy(str,"NOWISTHETIM3"); + rc = strtolowercase_s(str,(unsigned int)25); + if (rc != 0) printf_va_821("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)86,(unsigned int)rc); + tmp_1 = strcmp((char const *)(str),"nowisthetim3"); + if (tmp_1) printf_va_822("%s %u Error -%s- \n", + (char *)"test_strtolowercase_s",(unsigned int)91, + str); + strcpy(str,"NOWISTHETIME"); + len = strlen((char const *)(str)); + rc = strtolowercase_s(str,len); + if (rc != 0) printf_va_823("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)102,(unsigned int)rc); + tmp_2 = strcmp((char const *)(str),"nowisthetime"); + if (tmp_2) printf_va_824("%s %u Error -%s- \n", + (char *)"test_strtolowercase_s",(unsigned int)107, + str); + strcpy(str,"qqeRo"); + len = strlen((char const *)(str)); + rc = strtolowercase_s(str,len); + if (rc != 0) printf_va_825("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)118,(unsigned int)rc); + tmp_3 = strcmp((char const *)(str),"qqero"); + if (tmp_3) printf_va_826("%s %u Error -%s- \n", + (char *)"test_strtolowercase_s",(unsigned int)123, + str); + strcpy(str,"1234"); + len = strlen((char const *)(str)); + rc = strtolowercase_s(str,(unsigned int)4); + if (rc != 0) printf_va_827("%s %u Error rc=%u \n", + (char *)"test_strtolowercase_s", + (unsigned int)134,(unsigned int)rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_828(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_829(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_830(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_831(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_832(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_833(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_834(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_835(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_836(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_837(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_838(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_839(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_840(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_strtouppercase_s(void) +{ + int __retres; + errno_t rc; + rsize_t len; + char str[128]; + int tmp; + int tmp_0; + int tmp_1; + int tmp_2; + len = (unsigned int)5; + rc = strtouppercase_s((char *)0,len); + if (rc != 400) printf_va_828("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)27,(unsigned int)rc); + len = (unsigned int)0; + rc = strtouppercase_s((char *)"test",len); + if (rc != 401) printf_va_829("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)37,(unsigned int)rc); + len = (unsigned int)5; + rc = strtouppercase_s((char *)"",len); + if (rc != 0) printf_va_830("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)48,(unsigned int)rc); + len = (unsigned int)99999; + rc = strtouppercase_s((char *)"test",len); + if (rc != 403) printf_va_831("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)60,(unsigned int)rc); + strcpy(str,"n"); + len = strlen((char const *)(str)); + rc = strtouppercase_s(str,len); + if (rc != 0) printf_va_832("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)72,(unsigned int)rc); + tmp = strcmp((char const *)(str),"N"); + if (tmp) printf_va_833("%s %u Error -%s- \n", + (char *)"test_strtouppercase_s",(unsigned int)78, + str); + strcpy(str,"N"); + len = strlen((char const *)(str)); + rc = strtouppercase_s(str,len); + if (rc != 0) printf_va_834("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)90,(unsigned int)rc); + tmp_0 = strcmp((char const *)(str),"N"); + if (tmp_0) printf_va_835("%s %u Error -%s- \n", + (char *)"test_strtouppercase_s",(unsigned int)96, + str); + strcpy(str,"nowisthetime"); + len = strlen((char const *)(str)); + rc = strtouppercase_s(str,len); + if (rc != 0) printf_va_836("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)108,(unsigned int)rc); + tmp_1 = strcmp((char const *)(str),"NOWISTHETIME"); + if (tmp_1) printf_va_837("%s %u Error -%s- \n", + (char *)"test_strtouppercase_s",(unsigned int)114, + str); + strcpy(str,"qqeRo"); + len = strlen((char const *)(str)); + rc = strtouppercase_s(str,len); + if (rc != 0) printf_va_838("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)126,(unsigned int)rc); + tmp_2 = strcmp((char const *)(str),"QQERO"); + if (tmp_2) printf_va_839("%s %u Error -%s- \n", + (char *)"test_strtouppercase_s",(unsigned int)132, + str); + strcpy(str,"1234"); + len = strlen((char const *)(str)); + rc = strtouppercase_s(str,(unsigned int)22); + if (rc != 0) printf_va_840("%s %u Error rc=%u \n", + (char *)"test_strtouppercase_s", + (unsigned int)144,(unsigned int)rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_841(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_842(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_843(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_844(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_845(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_846(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_847(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_848(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_849(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_850(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_851(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_852(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_853(char const * __restrict format, char *param0, + unsigned int param1, char *param2); + +int test_strzero_s(void) +{ + int __retres; + errno_t rc; + rsize_t max_len; + char str1_17[128]; + uint32_t i; + int tmp; + rc = strzero_s((char *)0,(unsigned int)5); + if (rc != 400) printf_va_841("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)27, + (unsigned int)rc); + rc = strzero_s(str1_17,(unsigned int)0); + if (rc != 401) printf_va_842("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)35, + (unsigned int)rc); + rc = strzero_s(str1_17,(unsigned int)((4UL << 10) + (unsigned long)1)); + if (rc != 403) printf_va_843("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)43, + (unsigned int)rc); + max_len = (unsigned int)1; + rc = strzero_s(str1_17,max_len); + if (rc != 0) printf_va_844("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)52, + (unsigned int)rc); + i = (unsigned int)0; + while (i < max_len) { + if ((int)str1_17[i] != '\000') printf_va_845("%s %u Error rc=%u \n", + (char *)"test_strzero_s", + (unsigned int)58, + (unsigned int)rc); + i += (uint32_t)1; + } + max_len = (unsigned int)2; + rc = strzero_s(str1_17,max_len); + if (rc != 0) printf_va_846("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)68, + (unsigned int)rc); + i = (unsigned int)0; + while (i < max_len) { + if ((int)str1_17[i] != '\000') printf_va_847("%s %u Error rc=%u \n", + (char *)"test_strzero_s", + (unsigned int)74, + (unsigned int)rc); + i += (uint32_t)1; + } + max_len = (unsigned int)3; + rc = strzero_s(str1_17,max_len); + if (rc != 0) printf_va_848("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)84, + (unsigned int)rc); + i = (unsigned int)0; + while (i < max_len) { + if ((int)str1_17[i] != '\000') printf_va_849("%s %u Error rc=%u \n", + (char *)"test_strzero_s", + (unsigned int)90, + (unsigned int)rc); + i += (uint32_t)1; + } + max_len = (unsigned int)128; + rc = strzero_s(str1_17,max_len); + if (rc != 0) printf_va_850("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)100, + (unsigned int)rc); + i = (unsigned int)0; + while (i < max_len) { + if ((int)str1_17[i] != '\000') printf_va_851("%s %u Error rc=%u \n", + (char *)"test_strzero_s", + (unsigned int)106, + (unsigned int)rc); + i += (uint32_t)1; + } + strcpy(str1_17,"Now is the time for all data to be zeroed"); + max_len = strlen("Now is the "); + rc = strzero_s(str1_17,max_len); + if (rc != 0) printf_va_852("%s %u Error rc=%u \n", + (char *)"test_strzero_s",(unsigned int)118, + (unsigned int)rc); + tmp = strcmp((char const *)(& str1_17[max_len]), + "time for all data to be zeroed"); + if (tmp) printf_va_853("%s %u ERROR --%s-- \n",(char *)"test_strzero_s", + (unsigned int)123,& str1_17[max_len]); + __retres = 0; + return __retres; +} + +static wchar_t str1_11[128]; +static wchar_t str2_11[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_854(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_855(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_856(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_857(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_858(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_859(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_860(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_861(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_862(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_863(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_864(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_865(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_866(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_867(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_868(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_869(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_870(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_871(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_872(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_873(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_874(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_875(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_876(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_877(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_878(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_879(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_880(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_881(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_882(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_883(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_884(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_885(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_886(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_887(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_888(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_889(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_890(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_891(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_892(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3, + unsigned long param4, unsigned int param5); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_893(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_894(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_895(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_896(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_897(char const * __restrict format, char *param0, + unsigned int param1, unsigned long param2, + unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_898(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3, + unsigned long param4, unsigned int param5); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_899(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_900(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_901(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_902(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_903(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_904(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_905(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_906(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_907(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_908(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_909(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_910(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_911(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_912(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_913(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_914(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_915(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_916(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_917(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_918(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +int test_wcpcpy_s(void) +{ + int __retres; + wchar_t *ret; + errno_t rc; + int32_t ind; + rsize_t sz; + rsize_t tmp_1; + unsigned int testno = (unsigned int)0; + printf_va_854("\nTesting wcpcpy_s:\n"); + testno ++; + printf_va_855("Test #%d:\n",(int)testno); + ret = wcpcpy_s((wchar_t *)0,(unsigned int)128,(wchar_t const *)(str2_11), + & rc); + if (rc != 400) printf_va_856("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)105, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_857("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)110,(unsigned int)rc); + testno ++; + printf_va_858("Test #%d:\n",(int)testno); + ret = wcpcpy_s(str1_11,(unsigned int)0,(wchar_t const *)(str2_11),& rc); + if (rc != 401) printf_va_859("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)120, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_860("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)124,(unsigned int)rc); + testno ++; + printf_va_861("Test #%d:\n",(int)testno); + ret = wcpcpy_s(str1_11,(unsigned int)((4UL << 10) + (unsigned long)1), + (wchar_t const *)(str2_11),& rc); + if (rc != 403) printf_va_862("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)135, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_863("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)139,(unsigned int)rc); + testno ++; + printf_va_864("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" ); + ret = wcpcpy_s(str1_11,(unsigned int)5,(wchar_t const *)0,& rc); + if (rc != 400) printf_va_865("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)151, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_866("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)156,(unsigned int)rc); + if (str1_11[0] != 0) printf_va_867("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)169,(unsigned int)rc); + testno ++; + printf_va_868("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" ); + ret = wcpcpy_s(str1_11,(unsigned int)5,(wchar_t const *)(str1_11),& rc); + if (rc != 403) printf_va_869("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)183, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_870("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)188,(unsigned int)rc); + testno ++; + printf_va_871("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" ); + ret = wcpcpy_s(str1_11,(unsigned int)128,(wchar_t const *)(str1_11),& rc); + if (rc != 0) printf_va_872("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)201, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR; + else + if (*(ret + 0) != 0) goto _LOR; + else { + rsize_t tmp; + tmp = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ; + if (ret != & str1_11[tmp]) _LOR: + printf_va_873("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)206, + (unsigned int)rc); + } + testno ++; + printf_va_874("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + sz = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ret = wcpcpy_s(str1_11,(unsigned int)128,(wchar_t const *)(& str1_11[5]), + & rc); + if (rc != 404) printf_va_875("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)222, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_876("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)226,(unsigned int)rc); + if (str1_11[0] != 0) printf_va_877("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)239,(unsigned int)rc); + testno ++; + printf_va_878("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + sz = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ret = wcpcpy_s(& str1_11[5],(unsigned int)128,(wchar_t const *)(str1_11), + & rc); + if (rc != 404) printf_va_879("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)256, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_880("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)260,(unsigned int)rc); + if (str1_11[5] != 0) printf_va_881("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)273,(unsigned int)rc); + testno ++; + printf_va_882("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" ); + str2_11[0] = 0; + ret = wcpcpy_s(str1_11,(unsigned int)(128 / 2),(wchar_t const *)(str2_11), + & rc); + if (rc != 0) printf_va_883("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)295, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_0; + else + if (*(ret + 0) != 0) goto _LOR_0; + else + if (ret != str1_11) _LOR_0: + printf_va_884("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)299,(unsigned int)rc); + if (str1_11[0] != 0) printf_va_885("%s %u Error - string should be NULL rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)312,(unsigned int)rc); + testno ++; + printf_va_886("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + memset_s((void *)(str2_11),(unsigned int)'\000',(unsigned char)30); + ret = wcpcpy_s(str2_11,(unsigned int)128,(wchar_t const *)(str1_11),& rc); + if (rc != 0) printf_va_887("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)328, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_1; + else + if (*(ret + 0) != 0) goto _LOR_1; + else { + rsize_t tmp_0; + tmp_0 = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ; + if (ret != & str2_11[tmp_0]) _LOR_1: + printf_va_888("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)332, + (unsigned int)rc); + } + rc = memcmp_s((void const *)(str2_11),(unsigned int)128,(void const *)L"k" + "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" "e" , + (unsigned int)15 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_889("%s %u Error -%ls- \n", + (char *)"test_wcpcpy_s",(unsigned int)338, + str1_11); + testno ++; + printf_va_890("Test #%d:\n",(int)testno); + memset_s((void *)(str1_11),(unsigned int)'\000',(unsigned char)50); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + sz = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ret = wcpcpy_s(str1_11,(unsigned int)128,(wchar_t const *)(str2_11),& rc); + if (rc != 0) printf_va_891("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)354, + (unsigned int)rc); + tmp_1 = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + rc = memcmp_s((void const *)(str1_11),(unsigned int)128, + (void const *)(str2_11),tmp_1 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_892("%s %u -%ls- <> -%ls- (smax=%lu) Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)360, + str1_11,str2_11,(unsigned long)sz, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_2; + else + if (*(ret + 0) != 0) goto _LOR_2; + else { + rsize_t tmp_2; + tmp_2 = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ; + if (ret != & str1_11[tmp_2]) _LOR_2: + printf_va_893("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)365, + (unsigned int)rc); + } + testno ++; + printf_va_894("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"x" "x" "x" "x" "x" + "x" "x" "x" "x" "x" ); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"a" "b" "c" "d" "e" ); + ret = wcpcpy_s(str1_11,(unsigned int)128,(wchar_t const *)(str2_11),& rc); + if (rc != 0) printf_va_895("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)378, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_3; + else + if (*(ret + 0) != 0) goto _LOR_3; + else { + rsize_t tmp_3; + tmp_3 = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ; + if (ret != & str1_11[tmp_3]) _LOR_3: + printf_va_896("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)383, + (unsigned int)rc); + } + sz = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + if (sz != (rsize_t)5) printf_va_897("%s %u (sz=%lu <> 5) Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)389,(unsigned long)sz, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_11),(unsigned int)128, + (void const *)(str2_11),(unsigned int)6 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_898("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)394, + str1_11,str2_11,(unsigned long)sz, + (unsigned int)rc); + testno ++; + printf_va_899("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "e" "q" "e" "q" "e" "q" ); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + sz = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ret = wcpcpy_s(str1_11,(unsigned int)14,(wchar_t const *)(str2_11),& rc); + if (rc != 406) printf_va_900("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)409, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_901("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)413,(unsigned int)rc); + if (str1_11[0] != 0) printf_va_902("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)418,str1_11, + (unsigned int)rc); + testno ++; + printf_va_903("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "e" "q" "e" "q" "e" "q" ); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + sz = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ret = wcpcpy_s(str2_11,(unsigned int)6,(wchar_t const *)(str1_11),& rc); + if (rc != 406) printf_va_904("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)432, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_905("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)436,(unsigned int)rc); + if (str2_11[0] != 0) printf_va_906("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)441,str1_11, + (unsigned int)rc); + testno ++; + printf_va_907("Test #%d:\n",(int)testno); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "e" "q" "e" "q" "e" "q" ); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"i" "t" ); + ret = wcpcpy_s(str2_11,(unsigned int)3,(wchar_t const *)(str1_11),& rc); + if (rc != 0) printf_va_908("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)454, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_11),(unsigned int)128, + (void const *)(str2_11),(unsigned int)3 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_909("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)460, + str1_11,(unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_4; + else + if (*(ret + 0) != 0) goto _LOR_4; + else { + rsize_t tmp_4; + tmp_4 = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ; + if (ret != & str2_11[tmp_4]) _LOR_4: + printf_va_910("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)464, + (unsigned int)rc); + } + testno ++; + printf_va_911("Test #%d:\n",(int)testno); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"q" "q" "1" "2" "3" + "4" "5" "w" "e" "q" "e" "q" "e" "q" "e" "q" ); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"i" "t" ); + ret = wcpcpy_s(str1_11,(unsigned int)10,(wchar_t const *)(str2_11),& rc); + if (rc != 0) printf_va_912("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)477, + (unsigned int)rc); + if (ret == (wchar_t *)0) goto _LOR_5; + else + if (*(ret + 0) != 0) goto _LOR_5; + else { + rsize_t tmp_5; + tmp_5 = wcsnlen_s((wchar_t const *)(str1_11),(unsigned int)128); + ; + if (ret != & str1_11[tmp_5]) _LOR_5: + printf_va_913("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)481, + (unsigned int)rc); + } + rc = memcmp_s((void const *)(str1_11),(unsigned int)128, + (void const *)(str2_11),(unsigned int)3 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_914("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)487, + str1_11,(unsigned int)rc); + testno ++; + printf_va_915("Test #%d:\n",(int)testno); + wcscpy_s(str2_11,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "e" "q" "e" "q" "e" "q" ); + wcscpy_s(str1_11,(unsigned int)128,(wchar_t const *)L"i" "t" ); + sz = wcsnlen_s((wchar_t const *)(str2_11),(unsigned int)128); + ret = wcpcpy_s(str2_11,(unsigned int)2,(wchar_t const *)(str1_11),& rc); + if (rc != 406) printf_va_916("%s %u Error rc=%u \n", + (char *)"test_wcpcpy_s",(unsigned int)502, + (unsigned int)rc); + if (ret != (wchar_t *)0) printf_va_917("Returned pointer incorrect: %s %u Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)507,(unsigned int)rc); + if (str2_11[0] != 0) printf_va_918("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcpcpy_s", + (unsigned int)512,str1_11, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static wchar_t str1_12[128]; +static wchar_t str2_12[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_919(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_920(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_921(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_922(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_923(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_924(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_925(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_926(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_927(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_928(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_929(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_930(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_931(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_932(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_933(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_934(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_935(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_936(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_937(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_938(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_939(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_940(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_941(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_942(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, + unsigned int param3, unsigned int param4); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_943(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_944(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_945(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_946(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_947(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_948(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_949(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_950(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_951(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_952(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_953(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_954(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_955(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_956(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_957(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_958(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_959(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_960(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_961(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_962(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_963(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_964(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_965(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_966(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_967(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_968(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_969(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_970(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_971(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_972(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_973(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_974(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_975(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_976(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_977(char const * __restrict format, char *param0, + unsigned int param1); + +int test_wcscat_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + rsize_t tmp; + rsize_t tmp_0; + rsize_t tmp_1; + rsize_t tmp_2; + unsigned int testno = (unsigned int)0; + printf_va_919("\nTesting wcscat_s:\n"); + testno ++; + printf_va_920("Test #%d:\n",(int)testno); + rc = wcscat_s((wchar_t *)0,(unsigned int)128,(wchar_t const *)(str2_12)); + if (rc != 400) printf_va_921("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)62, + (unsigned int)rc); + testno ++; + printf_va_922("Test #%d:\n",(int)testno); + rc = wcscat_s(str1_12,(unsigned int)128,(wchar_t const *)0); + if (rc != 400) printf_va_923("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)72, + (unsigned int)rc); + testno ++; + printf_va_924("Test #%d:\n",(int)testno); + rc = wcscat_s(str1_12,(unsigned int)0,(wchar_t const *)(str2_12)); + if (rc != 401) printf_va_925("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)82, + (unsigned int)rc); + testno ++; + printf_va_926("Test #%d:\n",(int)testno); + rc = wcscat_s(str1_12,(unsigned int)((4UL << 10) + (unsigned long)1), + (wchar_t const *)(str2_12)); + if (rc != 403) printf_va_927("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)92, + (unsigned int)rc); + testno ++; + printf_va_928("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" "5" + "6" "7" "8" "9" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" ); + rc = wcscat_s(str1_12,(unsigned int)8,(wchar_t const *)(& str1_12[7])); + if (rc != 404) printf_va_929("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)105, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_930("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)110); + testno ++; + printf_va_931("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)1,(wchar_t const *)(str2_12)); + if (rc != 407) printf_va_932("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)123, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_933("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)128); + testno ++; + printf_va_934("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)10,(wchar_t const *)(str2_12)); + if (rc != 407) printf_va_935("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)141, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_936("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)146); + testno ++; + printf_va_937("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + wcscpy_s(& str1_12[20],(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" ); + rc = wcscat_s(str1_12,(unsigned int)30,(wchar_t const *)(& str1_12[20])); + if (rc != 404) printf_va_938("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)159, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_939("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)164); + testno ++; + printf_va_940("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + tmp = wcsnlen_s((wchar_t const *)(str1_12),(unsigned int)128); + len1 = (int)tmp; + tmp_0 = wcsnlen_s((wchar_t const *)(str2_12),(unsigned int)128); + len2 = (int)tmp_0; + rc = wcscat_s(str1_12,(unsigned int)50,(wchar_t const *)(str2_12)); + if (rc != 0) printf_va_941("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)180, + (unsigned int)rc); + tmp_1 = wcsnlen_s((wchar_t const *)(str1_12),(unsigned int)128); + len3 = (int)tmp_1; + if (len3 != len1 + len2) printf_va_942("%s %u lengths wrong: %u %u %u \n", + (char *)"test_wcscat_s", + (unsigned int)186, + (unsigned int)len1, + (unsigned int)len2, + (unsigned int)len3); + testno ++; + printf_va_943("Test #%d:\n",(int)testno); + str1_12[0] = '\000'; + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)1,(wchar_t const *)(str2_12)); + if (rc != 406) printf_va_944("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)200, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_945("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)205); + testno ++; + printf_va_946("Test #%d:\n",(int)testno); + str1_12[0] = '\000'; + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)11,(wchar_t const *)(str2_12)); + if (rc != 406) printf_va_947("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)218, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_948("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)223); + testno ++; + printf_va_949("Test #%d:\n",(int)testno); + str1_12[0] = '\000'; + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)20,(wchar_t const *)(str2_12)); + if (rc != 0) printf_va_950("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)236, + (unsigned int)rc); + tmp_2 = wcsnlen_s((wchar_t const *)(str2_12),(unsigned int)128); + rc = memcmp_s((void const *)(str1_12),(unsigned int)128, + (void const *)(str2_12),tmp_2 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_951("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)242, + str1_12); + testno ++; + printf_va_952("Test #%d:\n",(int)testno); + str1_12[0] = '\000'; + str2_12[0] = '\000'; + rc = wcscat_s(str1_12,(unsigned int)128,(wchar_t const *)(str2_12)); + if (rc != 0) printf_va_953("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)256, + (unsigned int)rc); + if (str1_12[0] != 0) printf_va_954("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)261); + testno ++; + printf_va_955("Test #%d:\n",(int)testno); + str1_12[0] = '\000'; + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str2_12,(unsigned int)128,(wchar_t const *)(str1_12)); + if (rc != 0) printf_va_956("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)274, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_12),(unsigned int)128,(void const *)L"k" + "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" "e" , + (unsigned int)15 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_957("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)280, + str1_12); + testno ++; + printf_va_958("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "q" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str1_12,(unsigned int)128,(wchar_t const *)(str2_12)); + if (rc != 0) printf_va_959("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)293, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_12),(unsigned int)128,(void const *)L"q" + "q" "w" "e" "q" "q" "k" "e" "e" "p" " " "i" "t" " " "s" "i" + "m" "p" "l" "e" ,(unsigned int)20 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_960("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)299, + str1_12); + testno ++; + printf_va_961("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str2_12,(unsigned int)16,(wchar_t const *)(str1_12)); + if (rc != 406) printf_va_962("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)312, + (unsigned int)rc); + testno ++; + printf_va_963("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str2_12,(unsigned int)19,(wchar_t const *)(str1_12)); + if (rc != 0) printf_va_964("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)325, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_12),(unsigned int)128,(void const *)L"k" + "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" "e" "1" "2" + "3" "4" ,(unsigned int)19 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_965("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)331, + str1_12); + testno ++; + printf_va_966("Test #%d:\n",(int)testno); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" "5" + "6" "7" "8" "9" "1" "2" "3" "4" "5" "6" "7" "8" "9" ); + wcscpy_s(& str1_12[13],(unsigned int)128,(wchar_t const *)L"A" "B" "C" "D" + "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "1" "2" "3" "4" + "5" "6" "7" "8" "9" ); + rc = wcscat_s(& str1_12[13],(unsigned int)128,(wchar_t const *)(str1_12)); + if (rc != 404) printf_va_967("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)345, + (unsigned int)rc); + if (str1_12[13] != 0) printf_va_968("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)350); + testno ++; + printf_va_969("Test #%d:\n",(int)testno); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" ); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcscat_s(str2_12,(unsigned int)31,(wchar_t const *)(str1_12)); + if (rc != 0) printf_va_970("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)363, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_12),(unsigned int)128,(void const *)L"1" + "2" "3" "k" "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" + "e" ,(unsigned int)17 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_971("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)369, + str1_12); + testno ++; + printf_va_972("Test #%d:\n",(int)testno); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"5" "6" "7" "8" "9" ); + rc = wcscat_s(str2_12,(unsigned int)10,(wchar_t const *)(str1_12)); + if (rc != 0) printf_va_973("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)382, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_12),(unsigned int)128,(void const *)L"1" + "2" "3" "4" "5" "6" "7" "8" "9" , + (unsigned int)9 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_974("%s %u Error -%ls- \n", + (char *)"test_wcscat_s",(unsigned int)389, + str1_12); + testno ++; + printf_va_975("Test #%d:\n",(int)testno); + wcscpy_s(str2_12,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str1_12,(unsigned int)128,(wchar_t const *)L"5" "6" "7" "8" "9" ); + rc = wcscat_s(str2_12,(unsigned int)9,(wchar_t const *)(str1_12)); + if (rc != 406) printf_va_976("%s %u Error rc=%u \n", + (char *)"test_wcscat_s",(unsigned int)402, + (unsigned int)rc); + if (str2_12[0] != 0) printf_va_977("%s %u Expected null \n", + (char *)"test_wcscat_s", + (unsigned int)407); + __retres = 0; + return __retres; +} + +static wchar_t str1_13[128 * 4]; +static wchar_t str2_13[128 * 4]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_978(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_979(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_980(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_981(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_982(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_983(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_984(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_985(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_986(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_987(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_988(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_989(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_990(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_991(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_992(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_993(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_994(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_995(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_996(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_997(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_998(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_999(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1000(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1001(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1002(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1003(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1004(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1005(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1006(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3, + unsigned long param4, unsigned int param5); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1007(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1008(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1009(char const * __restrict format, char *param0, + unsigned int param1, unsigned long param2, + unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1010(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3, + unsigned long param4, unsigned int param5); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1011(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1012(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1013(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1014(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1015(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1016(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1017(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1018(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1019(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1020(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1021(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1022(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1023(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1024(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1025(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +int test_wcscpy_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + rsize_t sz; + rsize_t sz_orig; + unsigned int testno = (unsigned int)0; + printf_va_978("\nTesting wcscpy_s:\n"); + testno ++; + printf_va_979("Test #%d:\n",(int)testno); + rc = wcscpy_s((wchar_t *)0,(unsigned int)(128 * 4), + (wchar_t const *)(str2_13)); + if (rc != 400) printf_va_980("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)104, + (unsigned int)rc); + testno ++; + printf_va_981("Test #%d:\n",(int)testno); + rc = wcscpy_s(str1_13,(unsigned int)0,(wchar_t const *)(str2_13)); + if (rc != 401) printf_va_982("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)114, + (unsigned int)rc); + testno ++; + printf_va_983("Test #%d:\n",(int)testno); + rc = wcscpy_s(str1_13,(unsigned int)((4UL << 10) + (unsigned long)1), + (wchar_t const *)(str2_13)); + if (rc != 403) printf_va_984("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)124, + (unsigned int)rc); + testno ++; + printf_va_985("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" ,(unsigned int)5); + rc = wcscpy_s(str1_13,(unsigned int)5,(wchar_t const *)0); + if (rc != 400) printf_va_986("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)136, + (unsigned int)rc); + if (str1_13[0] != 0) printf_va_987("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)149,(unsigned int)rc); + testno ++; + printf_va_988("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + rc = wcscpy_s(str1_13,(unsigned int)5,(wchar_t const *)(str1_13)); + if (rc != 403) printf_va_989("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)163, + (unsigned int)rc); + testno ++; + printf_va_990("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + rc = wcscpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)(str1_13)); + if (rc != 0) printf_va_991("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)175, + (unsigned int)rc); + testno ++; + printf_va_992("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + rc = wcscpy_s(str1_13,(unsigned int)(128 * 4), + (wchar_t const *)(& str1_13[5])); + if (rc != 404) printf_va_993("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)190, + (unsigned int)rc); + if (str1_13[0] != 0) printf_va_994("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)203,(unsigned int)rc); + testno ++; + printf_va_995("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str1_13),(unsigned int)(128 * 4)); + rc = wcscpy_s(& str1_13[8],(unsigned int)(128 * 4), + (wchar_t const *)(str1_13)); + if (rc != 404) printf_va_996("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)220, + (unsigned int)rc); + if (str1_13[8] != 0) printf_va_997("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)233,(unsigned int)rc); + testno ++; + printf_va_998("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)41); + str2_13[0] = 0; + rc = wcscpy_s(str1_13,(unsigned int)((128 * 4) / 2), + (wchar_t const *)(str2_13)); + if (rc != 0) printf_va_999("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)250, + (unsigned int)rc); + if (str1_13[0] != 0) printf_va_1000("%s %u Error - string should be NULL rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)263,(unsigned int)rc); + testno ++; + printf_va_1001("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str1_13),(unsigned int)(128 * 4)); + memset_s((void *)(str2_13),(unsigned int)'\000',(unsigned char)30); + rc = wcscpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)(str1_13)); + if (rc != 0) printf_va_1002("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)279, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_13),(unsigned int)(128 * 4), + (void const *)(str1_13),(sz + (rsize_t)1) * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1003("%s %u Error -%ls- <> -%ls-\n", + (char *)"test_wcscpy_s",(unsigned int)285, + str2_13,str1_13); + testno ++; + printf_va_1004("Test #%d:\n",(int)testno); + memset_s((void *)(str1_13),(unsigned int)'\000',(unsigned char)50); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str2_13),(unsigned int)(128 * 4)); + rc = wcscpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)(str2_13)); + if (rc != 0) printf_va_1005("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)300, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_13),(unsigned int)(128 * 4), + (void const *)(str2_13),sz * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1006("%s %u -%ls- <> -%ls- (smax=%lu) Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)306, + str1_13,str2_13,(unsigned long)sz, + (unsigned int)rc); + testno ++; + printf_va_1007("Test #%d:\n",(int)testno); + wmemset_s(str1_13,120,(unsigned int)20); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)15); + sz_orig = wcsnlen_s((wchar_t const *)(str2_13),(unsigned int)(128 * 4)); + rc = wcscpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)(str2_13)); + if (rc != 0) printf_va_1008("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)320, + (unsigned int)rc); + sz = wcsnlen_s((wchar_t const *)(str1_13),(unsigned int)(128 * 4)); + if (sz != sz_orig) + if (sz == (rsize_t)14) printf_va_1009("%s %u (sz=%lu <> 5) Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)326, + (unsigned long)sz,(unsigned int)rc); + rc = memcmp_s((void const *)(str1_13),(unsigned int)(128 * 4), + (void const *)(str2_13),sz * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1010("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)331, + str1_13,str2_13,(unsigned long)sz, + (unsigned int)rc); + testno ++; + printf_va_1011("Test #%d:\n",(int)testno); + wmemset_s(str1_13,120,(unsigned int)20); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)15); + rc = wcscpy_s(str1_13,(unsigned int)14,(wchar_t const *)(str2_13)); + if (rc != 406) printf_va_1012("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)346, + (unsigned int)rc); + if (str1_13[0] != 0) printf_va_1013("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)351,str1_13, + (unsigned int)rc); + testno ++; + printf_va_1014("Test #%d:\n",(int)testno); + wmemset_s(str1_13,120,(unsigned int)20); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)15); + rc = wcscpy_s(str2_13,(unsigned int)6,(wchar_t const *)(str1_13)); + if (rc != 406) printf_va_1015("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)364, + (unsigned int)rc); + if (str2_13[0] != 0) printf_va_1016("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)369,str1_13, + (unsigned int)rc); + testno ++; + printf_va_1017("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"i" "t" , + (unsigned int)3); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"q" "q" "w" "e" + "q" "e" "q" "e" "q" "e" "q" ,(unsigned int)12); + rc = wcscpy_s(str2_13,(unsigned int)3,(wchar_t const *)(str1_13)); + if (rc != 0) printf_va_1018("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)383, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_13),(unsigned int)(128 * 4), + (void const *)(str2_13),(unsigned int)3 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1019("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)389, + str1_13,(unsigned int)rc); + testno ++; + printf_va_1020("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"q" "q" "1" "2" + "3" "4" "5" "w" "e" "q" "e" "q" "e" "q" "e" "q" , + (unsigned int)17); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"i" "t" , + (unsigned int)3); + sz_orig = wcsnlen_s((wchar_t const *)(str2_13),(unsigned int)(128 * 4)); + rc = wcscpy_s(str1_13,(unsigned int)10,(wchar_t const *)(str2_13)); + if (rc != 0) printf_va_1021("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)404, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_13),(unsigned int)(128 * 4), + (void const *)(str2_13),(unsigned int)3 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1022("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)410, + str1_13,(unsigned int)rc); + testno ++; + printf_va_1023("Test #%d:\n",(int)testno); + wmemcpy_s(str1_13,(unsigned int)(128 * 4),(wchar_t const *)L"i" "t" , + (unsigned int)3); + wmemcpy_s(str2_13,(unsigned int)(128 * 4),(wchar_t const *)L"q" "q" "w" "e" + "q" "e" "q" "e" "q" "e" "q" ,(unsigned int)12); + sz = wcsnlen_s((wchar_t const *)(str2_13),(unsigned int)(128 * 4)); + rc = wcscpy_s(str2_13,(unsigned int)2,(wchar_t const *)(str1_13)); + if (rc != 406) printf_va_1024("%s %u Error rc=%u \n", + (char *)"test_wcscpy_s",(unsigned int)426, + (unsigned int)rc); + if (str2_13[0] != 0) printf_va_1025("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcscpy_s", + (unsigned int)431,str1_13, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static wchar_t str1_14[128]; +static wchar_t str2_14[128]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1026(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1027(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1028(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1029(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1030(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1031(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1032(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1033(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1034(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1035(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1036(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1037(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1038(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1039(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1040(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1041(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1042(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1043(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1044(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1045(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1046(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1047(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1048(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, + unsigned int param3, unsigned int param4); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1049(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1050(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1051(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param4), + (indirect: param3), (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param4, param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1052(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2, + unsigned int param3, unsigned int param4); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1053(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1054(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1055(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1056(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1057(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1058(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1059(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1060(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1061(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1062(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1063(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1064(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1065(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1066(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1067(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1068(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1069(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1070(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1071(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1072(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1073(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1074(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1075(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1076(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1077(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1078(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1079(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1080(char const * __restrict format, char *param0, + unsigned int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1081(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1082(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1083(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1084(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1085(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param2 + (0 ..))), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1086(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1087(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1088(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, *(param0 + (0 ..)); + */ +int printf_va_1089(char const * __restrict format, char *param0, + unsigned int param1); + +int test_wcsncat_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + rsize_t tmp; + rsize_t tmp_0; + rsize_t tmp_1; + rsize_t tmp_2; + rsize_t tmp_3; + rsize_t tmp_4; + unsigned int testno = (unsigned int)0; + printf_va_1026("\nTesting wcsncat_s:\n"); + testno ++; + printf_va_1027("Test #%d:\n",(int)testno); + rc = wcsncat_s((wchar_t *)0,(unsigned int)128,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 400) printf_va_1028("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)105, + (unsigned int)rc); + testno ++; + printf_va_1029("Test #%d:\n",(int)testno); + rc = wcsncat_s(str1_14,(unsigned int)128,(wchar_t const *)0, + (unsigned int)128); + if (rc != 400) printf_va_1030("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)115, + (unsigned int)rc); + testno ++; + printf_va_1031("Test #%d:\n",(int)testno); + rc = wcsncat_s(str1_14,(unsigned int)128,(wchar_t const *)(str2_14), + (unsigned int)((4UL << 10) + (unsigned long)1)); + if (rc != 403) printf_va_1032("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)125, + (unsigned int)rc); + testno ++; + printf_va_1033("Test #%d:\n",(int)testno); + rc = wcsncat_s(str1_14,(unsigned int)0,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 401) printf_va_1034("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)134, + (unsigned int)rc); + testno ++; + printf_va_1035("Test #%d:\n",(int)testno); + rc = wcsncat_s(str1_14,(unsigned int)((4UL << 10) + (unsigned long)1), + (wchar_t const *)(str2_14),(unsigned int)128); + if (rc != 403) printf_va_1036("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)144, + (unsigned int)rc); + testno ++; + printf_va_1037("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" " " "k" "e" "e" "p" " " "i" "t" " " "s" "i" + "m" "p" "l" "e" ); + rc = wcsncat_s(str1_14,(unsigned int)128,(wchar_t const *)(& str1_14[11]), + (unsigned int)128); + if (rc != 404) printf_va_1038("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)158, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1039("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)163); + testno ++; + printf_va_1040("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str1_14,(unsigned int)2,(wchar_t const *)(& str1_14[20]), + (unsigned int)128); + if (rc != 407) printf_va_1041("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)175, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1042("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)180); + testno ++; + printf_va_1043("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + wcscpy_s(& str1_14[20],(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" ); + rc = wcsncat_s(str1_14,(unsigned int)30,(wchar_t const *)(& str1_14[20]), + (unsigned int)128); + if (rc != 404) printf_va_1044("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)193, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1045("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)198); + testno ++; + printf_va_1046("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" ); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + tmp = wcsnlen_s((wchar_t const *)(str1_14),(unsigned int)128); + len1 = (int)tmp; + len2 = 10; + rc = wcsncat_s(str1_14,(unsigned int)50,(wchar_t const *)(str2_14), + (unsigned int)len2); + if (rc != 0) printf_va_1047("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)214, + (unsigned int)rc); + tmp_0 = wcsnlen_s((wchar_t const *)(str1_14),(unsigned int)128); + len3 = (int)tmp_0; + if (len3 != len1 + len2) printf_va_1048("%s %u lengths wrong: %u %u %u \n", + (char *)"test_wcsncat_s", + (unsigned int)220, + (unsigned int)len1, + (unsigned int)len2, + (unsigned int)len3); + rc = memcmp_s((void const *)(str1_14),(unsigned int)128,(void const *)L"a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "k" "e" "e" "p" " " "i" + "t" " " "s" "i" ,(unsigned int)(len3 + 1) * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1049("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)226, + str1_14); + testno ++; + printf_va_1050("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" ); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + tmp_1 = wcsnlen_s((wchar_t const *)(str1_14),(unsigned int)128); + len1 = (int)tmp_1; + tmp_2 = wcsnlen_s((wchar_t const *)(str2_14),(unsigned int)128); + len2 = (int)tmp_2; + rc = wcsncat_s(str1_14,(unsigned int)50,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 0) printf_va_1051("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)242, + (unsigned int)rc); + tmp_3 = wcsnlen_s((wchar_t const *)(str1_14),(unsigned int)128); + len3 = (int)tmp_3; + if (len3 != len1 + len2) printf_va_1052("%s %u lengths wrong: %u %u %u \n", + (char *)"test_wcsncat_s", + (unsigned int)248, + (unsigned int)len1, + (unsigned int)len2, + (unsigned int)len3); + rc = memcmp_s((void const *)(str1_14),(unsigned int)128,(void const *)L"a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "k" "e" "e" "p" " " "i" + "t" " " "s" "i" "m" "p" "l" "e" , + (unsigned int)(len3 + 1) * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1053("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)254, + str1_14); + testno ++; + printf_va_1054("Test #%d:\n",(int)testno); + str1_14[0] = '\000'; + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str1_14,(unsigned int)1,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 406) printf_va_1055("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)268, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1056("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)273); + testno ++; + printf_va_1057("Test #%d:\n",(int)testno); + str1_14[0] = '\000'; + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str1_14,(unsigned int)14,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 406) printf_va_1058("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)286, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1059("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)291); + testno ++; + printf_va_1060("Test #%d:\n",(int)testno); + str1_14[0] = '\000'; + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str1_14,(unsigned int)20,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 0) printf_va_1061("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)304, + (unsigned int)rc); + tmp_4 = wcsnlen_s((wchar_t const *)(str2_14),(unsigned int)128); + rc = memcmp_s((void const *)(str1_14),(unsigned int)128, + (void const *)(str2_14),tmp_4 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1062("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)310, + str1_14); + testno ++; + printf_va_1063("Test #%d:\n",(int)testno); + str1_14[0] = '\000'; + str2_14[0] = '\000'; + rc = wcsncat_s(str1_14,(unsigned int)128,(wchar_t const *)(str2_14), + (unsigned int)128); + if (rc != 0) printf_va_1064("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)324, + (unsigned int)rc); + if (str1_14[0] != '\000') printf_va_1065("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)329); + testno ++; + printf_va_1066("Test #%d:\n",(int)testno); + str1_14[0] = '\000'; + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)128,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 0) printf_va_1067("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)342, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_14),(unsigned int)128,(void const *)L"k" + "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" "e" , + (unsigned int)15 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1068("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)348, + str1_14); + testno ++; + printf_va_1069("Test #%d:\n",(int)testno); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"q" "q" "w" "e" "q" + "q" ); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)128,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 0) printf_va_1070("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)361, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_14),(unsigned int)128,(void const *)L"q" + "q" "w" "e" "q" "q" "k" "e" "e" "p" " " "i" "t" " " "s" "i" + "m" "p" "l" "e" ,(unsigned int)20 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1071("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)367, + str1_14); + testno ++; + printf_va_1072("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)12,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 407) printf_va_1073("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)380, + (unsigned int)rc); + if (str2_14[0] != '\000') printf_va_1074("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)385); + testno ++; + printf_va_1075("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)16,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 406) printf_va_1076("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)398, + (unsigned int)rc); + if (str2_14[0] != '\000') printf_va_1077("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)403); + testno ++; + printf_va_1078("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" "5" + "6" "7" "8" "9" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" ); + rc = wcsncat_s(& str1_14[7],(unsigned int)128,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 404) printf_va_1079("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)415, + (unsigned int)rc); + if (str1_14[7] != '\000') printf_va_1080("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)420); + testno ++; + printf_va_1081("Test #%d:\n",(int)testno); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)19,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 0) printf_va_1082("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)433, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_14),(unsigned int)128,(void const *)L"k" + "e" "e" "p" " " "i" "t" " " "s" "i" "m" "p" "l" "e" "1" "2" + "3" "4" ,(unsigned int)19 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1083("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)439, + str1_14); + testno ++; + printf_va_1084("Test #%d:\n",(int)testno); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" "5" + "6" "7" "8" "9" ); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"k" "e" "e" "p" " " + "i" "t" " " "s" "i" "m" "p" "l" "e" ); + rc = wcsncat_s(str2_14,(unsigned int)128,(wchar_t const *)(str1_14), + (unsigned int)7); + if (rc != 0) printf_va_1085("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)452, + (unsigned int)rc); + rc = memcmp_s((void const *)(str2_14),(unsigned int)128,(void const *)L"1" + "2" "3" "4" "5" "6" "7" "8" "9" "k" "e" "e" "p" " " "i" "t" , + (unsigned int)17 * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1086("%s %u Error -%ls- \n", + (char *)"test_wcsncat_s",(unsigned int)458, + str1_14); + testno ++; + printf_va_1087("Test #%d:\n",(int)testno); + wcscpy_s(str2_14,(unsigned int)128,(wchar_t const *)L"1" "2" "3" "4" ); + wcscpy_s(str1_14,(unsigned int)128,(wchar_t const *)L"5" "6" "7" "8" "9" ); + rc = wcsncat_s(str2_14,(unsigned int)9,(wchar_t const *)(str1_14), + (unsigned int)128); + if (rc != 406) printf_va_1088("%s %u Error rc=%u \n", + (char *)"test_wcsncat_s",(unsigned int)471, + (unsigned int)rc); + if (str2_14[0] != 0) printf_va_1089("%s %u Expected null \n", + (char *)"test_wcsncat_s", + (unsigned int)476); + __retres = 0; + return __retres; +} + +static wchar_t str1_15[128 * 4]; +static wchar_t str2_15[128 * 4]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1090(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1091(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1092(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1093(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1094(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1095(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1096(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1097(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1098(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1099(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1100(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1101(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1102(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1103(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1104(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1105(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1106(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1107(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1108(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1109(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1110(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1111(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1112(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1113(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1114(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1115(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1116(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1117(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1118(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1119(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1120(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1121(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1122(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1123(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1124(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1125(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1126(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1127(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1128(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1129(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1130(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1131(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1132(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1133(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1134(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1135(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1136(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1137(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1138(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1139(char const * __restrict format, char *param0, + unsigned int param1, unsigned long param2, + unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param3); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param5), + (indirect: param4), (indirect: *(param3 + (0 ..))), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param5, param4, *(param3 + (0 ..)), *(param2 + (0 ..)), param1, + *(param0 + (0 ..)); + */ +int printf_va_1140(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, wchar_t *param3, + unsigned long param4, unsigned int param5); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1141(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1142(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1143(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1144(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1145(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + requires valid_read_wstring(param2); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: *(param2 + (0 ..))), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, *(param2 + (0 ..)), param1, *(param0 + (0 ..)); + */ +int printf_va_1146(char const * __restrict format, char *param0, + unsigned int param1, wchar_t *param2, unsigned int param3); + +int test_wcsncpy_s(void) +{ + int __retres; + errno_t rc; + int32_t ind; + rsize_t sz; + rsize_t sz_orig; + unsigned int testno = (unsigned int)0; + printf_va_1090("\nTesting wcsncpy_s:\n"); + testno ++; + printf_va_1091("Test #%d:\n",(int)testno); + rc = wcsncpy_s((wchar_t *)0,(unsigned int)(128 * 4), + (wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + if (rc != 400) printf_va_1092("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)104, + (unsigned int)rc); + testno ++; + printf_va_1093("Test #%d:\n",(int)testno); + rc = wcsncpy_s(str1_15,(unsigned int)0,(wchar_t const *)(str2_15), + (unsigned int)(128 * 4)); + if (rc != 401) printf_va_1094("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)114, + (unsigned int)rc); + testno ++; + printf_va_1095("Test #%d:\n",(int)testno); + rc = wcsncpy_s(str1_15,(unsigned int)((4UL << 10) + (unsigned long)1), + (wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + if (rc != 403) printf_va_1096("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)124, + (unsigned int)rc); + testno ++; + printf_va_1097("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" ,(unsigned int)5); + rc = wcsncpy_s(str1_15,(unsigned int)5,(wchar_t const *)0, + (unsigned int)(128 * 4)); + if (rc != 400) printf_va_1098("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)136, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1099("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)149,(unsigned int)rc); + testno ++; + printf_va_1100("Test #%d:\n",(int)testno); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)(str2_15), + (unsigned int)0); + if (rc != 401) printf_va_1101("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)160, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1102("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)172,(unsigned int)rc); + testno ++; + printf_va_1103("Test #%d:\n",(int)testno); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)(str2_15), + (unsigned int)((4UL << 10) + (unsigned long)1)); + if (rc != 403) printf_va_1104("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)183, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1105("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)195,(unsigned int)rc); + testno ++; + printf_va_1106("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + rc = wcsncpy_s(str1_15,(unsigned int)5,(wchar_t const *)(str1_15), + (unsigned int)(128 * 4)); + if (rc != 404) printf_va_1107("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)208, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1108("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)220,(unsigned int)rc); + testno ++; + printf_va_1109("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4), + (wchar_t const *)(& str1_15[5]),(unsigned int)30); + if (rc != 404) printf_va_1110("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)233, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1111("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)245,(unsigned int)rc); + testno ++; + printf_va_1112("Test #%d:\n",(int)testno); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + wmemset_s(str1_15,0,(unsigned int)20); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)(str2_15), + (unsigned int)10); + if (rc != 0) printf_va_1113("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)260, + (unsigned int)rc); + if (str1_15[9] == 0) + if (str2_15[10] != 0) printf_va_1114("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)265,(unsigned int)rc); + rc = memcmp_s((void const *)(str1_15),(unsigned int)(128 * 4), + (void const *)(str2_15),(unsigned int)10 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1115("%s %u Error -%ls- <> -%ls-\n", + (char *)"test_wcsncpy_s",(unsigned int)271, + str1_15,str2_15); + testno ++; + printf_va_1116("Test #%d:\n",(int)testno); + wmemset_s(str1_15,0,(unsigned int)20); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)(str2_15), + (unsigned int)(128 * 4)); + if (rc != 0) printf_va_1117("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)286, + (unsigned int)rc); + if (str1_15[sz] != 0) printf_va_1118("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)291,(unsigned int)rc); + rc = memcmp_s((void const *)(str1_15),(unsigned int)(128 * 4), + (void const *)(str2_15),(sz + (rsize_t)1) * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1119("%s %u Error -%ls- <> -%ls-\n", + (char *)"test_wcsncpy_s",(unsigned int)297, + str1_15,str2_15); + testno ++; + printf_va_1120("Test #%d:\n",(int)testno); + wmemset_s(str1_15,0,(unsigned int)20); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str1_15,sz - (rsize_t)5,(wchar_t const *)(str2_15), + (unsigned int)(128 * 4)); + if (rc != 406) printf_va_1121("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)312, + (unsigned int)rc); + if (str1_15[0] != 0) printf_va_1122("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)324,(unsigned int)rc); + testno ++; + printf_va_1123("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + rc = wcsncpy_s(& str1_15[5],(unsigned int)(128 * 4), + (wchar_t const *)(str1_15),(unsigned int)30); + if (rc != 404) printf_va_1124("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)337, + (unsigned int)rc); + if (str1_15[5] != 0) printf_va_1125("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)349,(unsigned int)rc); + testno ++; + printf_va_1126("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + wmemset_s(str2_15,0,(unsigned int)20); + rc = wcsncpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)(str1_15), + (unsigned int)17); + if (rc != 0) printf_va_1127("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)364, + (unsigned int)rc); + if (str2_15[16] == 0) + if (str2_15[17] != 0) printf_va_1128("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)369,(unsigned int)rc); + rc = memcmp_s((void const *)(str1_15),(unsigned int)(128 * 4), + (void const *)(str2_15),(unsigned int)17 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1129("%s %u Error -%ls- <> -%ls-\n", + (char *)"test_wcsncpy_s",(unsigned int)375, + str1_15,str2_15); + testno ++; + printf_va_1130("Test #%d:\n",(int)testno); + wmemset_s(str2_15,0,(unsigned int)20); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str1_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)(str1_15), + (unsigned int)(128 * 4)); + if (rc != 0) printf_va_1131("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)390, + (unsigned int)rc); + if (str1_15[sz] != 0) printf_va_1132("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)395,(unsigned int)rc); + rc = memcmp_s((void const *)(str2_15),(unsigned int)(128 * 4), + (void const *)(str1_15),(sz + (rsize_t)1) * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1133("%s %u Error -%ls- <> -%ls-\n", + (char *)"test_wcsncpy_s",(unsigned int)401, + str2_15,str1_15); + testno ++; + printf_va_1134("Test #%d:\n",(int)testno); + wmemset_s(str2_15,0,(unsigned int)20); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" "-" "-" "k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)47); + sz = wcsnlen_s((wchar_t const *)(str1_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str2_15,sz - (rsize_t)5,(wchar_t const *)(str1_15), + (unsigned int)(128 * 4)); + if (rc != 406) printf_va_1135("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)416, + (unsigned int)rc); + if (str2_15[0] != 0) printf_va_1136("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)428,(unsigned int)rc); + testno ++; + printf_va_1137("Test #%d:\n",(int)testno); + wmemset_s(str1_15,120,(unsigned int)20); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"k" "e" "e" "p" + " " "i" "t" " " "s" "i" "m" "p" "l" "e" ,(unsigned int)15); + sz_orig = wcsnlen_s((wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)(str2_15), + (unsigned int)(128 * 4)); + if (rc != 0) printf_va_1138("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)444, + (unsigned int)rc); + sz = wcsnlen_s((wchar_t const *)(str1_15),(unsigned int)(128 * 4)); + if (sz != sz_orig) + if (sz == (rsize_t)14) printf_va_1139("%s %u (sz=%lu <> 5) Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)450, + (unsigned long)sz,(unsigned int)rc); + rc = memcmp_s((void const *)(str1_15),(unsigned int)(128 * 4), + (void const *)(str2_15),sz * sizeof(wchar_t),(int *)(& ind)); + if (ind != 0) printf_va_1140("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)455, + str1_15,str2_15,(unsigned long)sz, + (unsigned int)rc); + testno ++; + printf_va_1141("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"i" "t" , + (unsigned int)3); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"q" "q" "w" "e" + "q" "e" "q" "e" "q" "e" "q" ,(unsigned int)12); + rc = wcsncpy_s(str2_15,(unsigned int)3,(wchar_t const *)(str1_15), + (unsigned int)(128 * 4)); + if (rc != 0) printf_va_1142("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)471, + (unsigned int)rc); + rc = memcmp_s((void const *)(str1_15),(unsigned int)(128 * 4), + (void const *)(str2_15),(unsigned int)3 * sizeof(wchar_t), + (int *)(& ind)); + if (ind != 0) printf_va_1143("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)477, + str1_15,(unsigned int)rc); + testno ++; + printf_va_1144("Test #%d:\n",(int)testno); + wmemcpy_s(str1_15,(unsigned int)(128 * 4),(wchar_t const *)L"i" "t" , + (unsigned int)3); + wmemcpy_s(str2_15,(unsigned int)(128 * 4),(wchar_t const *)L"q" "q" "w" "e" + "q" "e" "q" "e" "q" "e" "q" ,(unsigned int)12); + sz = wcsnlen_s((wchar_t const *)(str2_15),(unsigned int)(128 * 4)); + rc = wcsncpy_s(str2_15,(unsigned int)2,(wchar_t const *)(str1_15), + (unsigned int)(128 * 4)); + if (rc != 406) printf_va_1145("%s %u Error rc=%u \n", + (char *)"test_wcsncpy_s",(unsigned int)494, + (unsigned int)rc); + if (str2_15[0] != 0) printf_va_1146("%s %u -%ls- Error rc=%u \n", + (char *)"test_wcsncpy_s", + (unsigned int)499,str1_15, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +static wchar_t str1_16[128 * 4]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1147(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1148(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1149(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1150(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1151(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1152(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1153(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1154(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1155(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1156(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1157(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1158(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1159(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1160(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1161(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +int test_wcsnlen_s(void) +{ + int __retres; + errno_t rc; + rsize_t tmp; + rsize_t tmp_0; + rsize_t tmp_1; + rsize_t tmp_2; + rsize_t tmp_3; + rsize_t tmp_4; + rsize_t tmp_5; + unsigned int testno = (unsigned int)0; + printf_va_1147("\nTesting wcsnlen_s:\n"); + testno ++; + printf_va_1148("Test #%d:\n",(int)testno); + tmp = wcsnlen_s((wchar_t const *)0,(unsigned int)(128 * 4)); + rc = (int)tmp; + if (rc != 0) printf_va_1149("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)78, + (unsigned int)rc); + testno ++; + printf_va_1150("Test #%d:\n",(int)testno); + tmp_0 = wcsnlen_s((wchar_t const *)(str1_16), + (unsigned int)((4UL << 10) + (unsigned long)1)); + rc = (int)tmp_0; + if (rc != 0) printf_va_1151("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)88, + (unsigned int)rc); + testno ++; + printf_va_1152("Test #%d:\n",(int)testno); + wmemcpy_s(str1_16,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + tmp_1 = wcsnlen_s((wchar_t const *)(str1_16),(unsigned int)41); + rc = (int)tmp_1; + if (rc != 40) printf_va_1153("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)100, + (unsigned int)rc); + testno ++; + printf_va_1154("Test #%d:\n",(int)testno); + wmemcpy_s(str1_16,(unsigned int)(128 * 4),(wchar_t const *)L"a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" ,(unsigned int)42); + tmp_2 = wcsnlen_s((wchar_t const *)(str1_16),(unsigned int)20); + rc = (int)tmp_2; + if (rc != 20) printf_va_1155("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)112, + (unsigned int)rc); + testno ++; + printf_va_1156("Test #%d:\n",(int)testno); + wmemset_s(str1_16,0,(unsigned int)42); + tmp_3 = wcsnlen_s((wchar_t const *)(str1_16),(unsigned int)(128 * 4)); + rc = (int)tmp_3; + if (rc != 0) printf_va_1157("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)124, + (unsigned int)rc); + testno ++; + printf_va_1158("Test #%d:\n",(int)testno); + memset_s((void *)(str1_16),(unsigned int)'\000',(unsigned char)50); + str1_16[0] = 65; + tmp_4 = wcsnlen_s((wchar_t const *)(str1_16),(unsigned int)(128 * 4)); + rc = (int)tmp_4; + if (rc != 1) printf_va_1159("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)138, + (unsigned int)rc); + testno ++; + printf_va_1160("Test #%d:\n",(int)testno); + wmemcpy_s(str1_16,(unsigned int)(128 * 4),(wchar_t const *)L"1" "2" , + (unsigned int)3); + tmp_5 = wcsnlen_s((wchar_t const *)(str1_16),(unsigned int)(128 * 4)); + rc = (int)tmp_5; + if (rc != 2) printf_va_1161("%s %u Error rc=%u \n", + (char *)"test_wcsnlen_s",(unsigned int)150, + (unsigned int)rc); + __retres = 0; + return __retres; +} + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1162(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1163(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1164(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1165(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1166(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1167(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1168(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1169(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1170(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1171(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1172(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1173(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1174(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1175(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1176(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1177(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1178(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1179(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1180(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1181(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1182(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1183(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1184(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1185(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1186(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1187(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1188(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1189(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1190(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1191(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1192(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1193(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1194(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1195(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1196(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1197(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1198(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1199(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1200(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1201(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1202(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1203(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1204(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1205(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), + (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1206(char const * __restrict format, char *param0, + unsigned int param1, int param2, unsigned int param3); + +int test_wmemcmp_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + int32_t ind; + uint32_t i; + wchar_t mem1_6[128]; + wchar_t mem2_4[128]; + unsigned int testno = (unsigned int)0; + printf_va_1162("\nTesting wmemcmp_s:\n"); + testno ++; + printf_va_1163("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)0,(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 400) printf_va_1164("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)93, + ind,(unsigned int)rc); + testno ++; + printf_va_1165("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)0,(unsigned int)128,(int *)(& ind)); + if (rc != 400) printf_va_1166("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)103, + ind,(unsigned int)rc); + testno ++; + printf_va_1167("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)0); + if (rc != 400) printf_va_1168("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)113, + ind,(unsigned int)rc); + testno ++; + printf_va_1169("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)0, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 401) printf_va_1170("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)123, + ind,(unsigned int)rc); + testno ++; + printf_va_1171("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)0,(int *)(& ind)); + if (rc != 401) printf_va_1172("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)133, + ind,(unsigned int)rc); + testno ++; + printf_va_1173("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6), + (unsigned int)((256UL << 20) + (unsigned long)1), + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 403) printf_va_1174("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)143, + ind,(unsigned int)rc); + testno ++; + printf_va_1175("Test #%d:\n",(int)testno); + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4), + (unsigned int)((256UL << 20) + (unsigned long)1), + (int *)(& ind)); + if (rc != 403) printf_va_1176("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)153, + ind,(unsigned int)rc); + testno ++; + printf_va_1177("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + len = (unsigned int)1; + rc = wmemcmp_s((wchar_t const *)(mem1_6),len,(wchar_t const *)(mem2_4),len, + (int *)(& ind)); + if (rc != 0) printf_va_1178("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)167,ind, + (unsigned int)rc); + if (ind != 0) printf_va_1179("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)172, + ind,(unsigned int)rc); + ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)4); + if (ind != 0) printf_va_1180("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)178, + ind,(unsigned int)rc); + testno ++; + printf_va_1181("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + len = (unsigned int)2; + rc = wmemcmp_s((wchar_t const *)(mem1_6),len,(wchar_t const *)(mem2_4),len, + (int *)(& ind)); + if (rc != 0) printf_va_1182("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)192,ind, + (unsigned int)rc); + if (ind != 0) printf_va_1183("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)197, + ind,(unsigned int)rc); + ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + len * (uint32_t)4); + if (ind != 0) printf_va_1184("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)203, + ind,(unsigned int)rc); + testno ++; + printf_va_1185("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1186("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)216,ind, + (unsigned int)rc); + if (ind != 0) printf_va_1187("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)221, + ind,(unsigned int)rc); + ind = memcmp((void const *)(mem1_6),(void const *)(mem2_4), + (unsigned int)(128 * 4)); + if (ind != 0) printf_va_1188("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)227, + ind,(unsigned int)rc); + testno ++; + printf_va_1189("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(128 - 10)) { + mem2_4[i] = 5; + i += (uint32_t)1; + } + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1190("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)242,ind, + (unsigned int)rc); + if (ind <= 0) printf_va_1191("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)247, + ind,(unsigned int)rc); + testno ++; + printf_va_1192("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(128 - 10)) { + mem2_4[i] = 5; + i += (uint32_t)1; + } + rc = wmemcmp_s((wchar_t const *)(mem2_4),(unsigned int)128, + (wchar_t const *)(mem1_6),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1193("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)263,ind, + (unsigned int)rc); + if (ind >= 0) printf_va_1194("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)268, + ind,(unsigned int)rc); + testno ++; + printf_va_1195("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + (mem2_4[1]) ++; + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1196("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)283,ind, + (unsigned int)rc); + if (ind >= 0) printf_va_1197("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)288, + ind,(unsigned int)rc); + testno ++; + printf_va_1198("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + (mem2_4[1]) --; + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1199("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)303,ind, + (unsigned int)rc); + if (ind <= 0) printf_va_1200("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)308, + ind,(unsigned int)rc); + testno ++; + printf_va_1201("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + (mem2_4[128 - 1]) ++; + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1202("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)323,ind, + (unsigned int)rc); + if (ind >= 0) printf_va_1203("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)328, + ind,(unsigned int)rc); + testno ++; + printf_va_1204("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem1_6[i] = (int)i; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)128) { + mem2_4[i] = (int)i; + i += (uint32_t)1; + } + (mem2_4[128 - 1]) --; + rc = wmemcmp_s((wchar_t const *)(mem1_6),(unsigned int)128, + (wchar_t const *)(mem2_4),(unsigned int)128,(int *)(& ind)); + if (rc != 0) printf_va_1205("%s %u Ind=%d Error rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)343,ind, + (unsigned int)rc); + if (ind <= 0) printf_va_1206("%s %u Ind=%d rc=%u \n", + (char *)"test_wmemcmp_s",(unsigned int)348, + ind,(unsigned int)rc); + __retres = 0; + return __retres; +} + +static wchar_t mem1_3[256 * 4 + 2]; +static wchar_t mem2_2[256 * 4 + 2]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1207(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1208(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1209(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1210(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1211(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1212(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1213(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1214(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1215(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1216(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1217(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1218(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1219(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1220(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1221(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1222(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1223(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1224(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1225(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1226(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1227(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1228(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1229(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1230(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1231(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1232(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1233(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1234(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1235(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1236(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1237(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1238(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1239(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1240(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1241(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1242(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1243(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1244(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1245(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1246(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1247(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1248(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1249(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1250(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1251(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1252(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1253(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1254(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1255(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1256(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1257(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1258(char const * __restrict format, int param0, int param1, + int param2, int param3); + +int test_wmemcpy_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + unsigned int testno = (unsigned int)0; + printf_va_1207("\nTesting wmemcpy_s:\n"); + testno ++; + printf_va_1208("Test #%d:\n",(int)testno); + rc = wmemcpy_s((wchar_t *)0,(unsigned int)(256 * 4), + (wchar_t const *)(mem2_2),(unsigned int)(256 * 4)); + if (rc != 400) printf_va_1209("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)85, + (unsigned int)rc); + testno ++; + printf_va_1210("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)0,(wchar_t const *)(mem2_2), + (unsigned int)(256 * 4)); + if (rc != 401) printf_va_1211("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)96, + (unsigned int)rc); + testno ++; + printf_va_1212("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)((256UL << 20) + (unsigned long)1), + (wchar_t const *)(mem2_2),(unsigned int)(256 * 4)); + if (rc != 403) printf_va_1213("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)106, + (unsigned int)rc); + testno ++; + printf_va_1214("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)(256 * 4),(wchar_t const *)0, + (unsigned int)(256 * 4)); + if (rc != 400) printf_va_1215("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)116, + (unsigned int)rc); + testno ++; + printf_va_1216("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)10,(wchar_t const *)(mem2_2), + (unsigned int)0); + if (rc != 401) printf_va_1217("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)126, + (unsigned int)rc); + testno ++; + printf_va_1218("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)(256 * 4),(wchar_t const *)(mem2_2), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) printf_va_1219("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)136, + (unsigned int)rc); + testno ++; + printf_va_1220("Test #%d:\n",(int)testno); + rc = wmemcpy_s(mem1_3,(unsigned int)(256 * 4), + (wchar_t const *)(& mem1_3[20]),(unsigned int)21); + if (rc != 404) printf_va_1221("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)146, + (unsigned int)rc); + testno ++; + printf_va_1222("Test #%d:\n",(int)testno); + rc = wmemcpy_s(& mem1_3[25],(unsigned int)(256 * 4), + (wchar_t const *)(mem1_3),(unsigned int)26); + if (rc != 404) printf_va_1223("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)156, + (unsigned int)rc); + testno ++; + printf_va_1224("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)10) { + mem1_3[i] = 33; + i += (uint32_t)1; + } + mem1_3[10] = 40; + i = (unsigned int)11; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 44; + i += (uint32_t)1; + } + rc = wmemcpy_s(mem1_3,(unsigned int)10,(wchar_t const *)(& mem1_3[10]), + (unsigned int)10); + if (rc != 0) printf_va_1225("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)171, + (unsigned int)rc); + else { + if (mem1_3[0] != 40) + if (mem1_3[10] != 40) printf_va_1226("%d - %d m1[0]=%d m1[10]=%d should be 40 \n", + 176,(int)i,mem1_3[0],mem1_3[10]); + i = (unsigned int)1; + while (i < (uint32_t)10) { + if (mem1_3[i] != 44) printf_va_1227("%d - %d m1=%d should be 44 \n", + 181,(int)i,mem1_3[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1228("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 1)) { + mem1_3[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4); + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(mem2_2),len + (rsize_t)1); + if (rc == 0) printf_va_1229("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)197, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 0) printf_va_1230("%d - %d m1=%d m2=%d \n",204, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + if (mem1_3[i] != 33) printf_va_1231("%d - %lu m1=%d m2=%d \n",210, + (unsigned long)len,mem1_3[len], + mem2_2[len]); + } + testno ++; + printf_va_1232("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 2)) { + mem1_3[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)((256 * 4) / 2); + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(mem2_2), + (unsigned int)(256 * 4)); + if (rc != 403) printf_va_1233("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)226, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 0) printf_va_1234("%d - %d m1=%d m2=%d \n",233, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + if (mem1_3[len] != 33) printf_va_1235("%d - %lu m1=%d m2=%d \n",239, + (unsigned long)len,mem1_3[len], + mem2_2[len]); + } + testno ++; + printf_va_1236("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 2)) { + mem1_3[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4); + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(mem2_2),(unsigned int)0); + if (rc != 401) printf_va_1237("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)254, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 0) printf_va_1238("%d - %d m1=%d m2=%d \n",262, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + if (mem1_3[len] != 33) printf_va_1239("%d - %lu m1=%d m2=%d \n",268, + (unsigned long)len,mem1_3[len], + mem2_2[len]); + } + testno ++; + printf_va_1240("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4); + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(mem2_2), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) printf_va_1241("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)284, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 0) printf_va_1242("%d - %d m1=%d m2=%d \n",291, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + if (mem1_3[len] == 0) printf_va_1243("%d - %d m1=%d m2=%d \n",297, + (int)i,mem1_3[i],mem2_2[i]); + } + testno ++; + printf_va_1244("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 55; + i += (uint32_t)1; + } + rc = wmemcpy_s(mem1_3,(unsigned int)(256 * 4),(wchar_t const *)(mem1_3), + (unsigned int)(256 * 4)); + if (rc != 0) printf_va_1245("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)312, + (unsigned int)rc); + testno ++; + printf_va_1246("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 55; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 65; + i += (uint32_t)1; + } + len = (unsigned int)100; + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(& mem1_3[10]),len); + if (rc != 404) printf_va_1247("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)327, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 0) printf_va_1248("%d - %d m1=%d m2=%d \n",333, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + if (mem1_3[len] == 0) printf_va_1249("%d - %d m1=%d m2=%d \n",339, + (int)i,mem1_3[i],mem2_2[i]); + } + testno ++; + printf_va_1250("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 55; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 65; + i += (uint32_t)1; + } + len = (unsigned int)100; + rc = wmemcpy_s(& mem1_3[10],len,(wchar_t const *)(mem1_3),len); + if (rc != 404) printf_va_1251("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)356, + (unsigned int)rc); + else { + i = (unsigned int)10; + while (i < len + (rsize_t)10) { + if (mem1_3[i] != 0) printf_va_1252("%d - %d m1=%d m2=%d \n",362, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1253("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 55; + i += (uint32_t)1; + } + len = (unsigned int)5; + rc = wmemcpy_s(mem1_3,len,(wchar_t const *)(mem2_2),len); + if (rc != 0) printf_va_1254("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)379, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_3[i] != 55) printf_va_1255("%d - %d m1=%d\n",385,(int)i, + mem1_3[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1256("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_3[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_2[i] = 55; + i += (uint32_t)1; + } + rc = wmemcpy_s(mem1_3,(unsigned int)(256 * 4),(wchar_t const *)(mem2_2), + (unsigned int)((256 * 4) / 2)); + if (rc != 0) printf_va_1257("%s %u Error rc=%u \n", + (char *)"test_wmemcpy_s",(unsigned int)401, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < (uint32_t)((256 * 4) / 2)) { + if (mem1_3[i] != 55) printf_va_1258("%d - %d m1=%d m2=%d \n",407, + (int)i,mem1_3[i],mem2_2[i]); + i += (uint32_t)1; + } + } + __retres = 0; + return __retres; +} + +static wchar_t mem1_4[256 * 4 + 2]; +static wchar_t mem2_3[256 * 4 + 2]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1259(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1260(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1261(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1262(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1263(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1264(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1265(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1266(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1267(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1268(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1269(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1270(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1271(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1272(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1273(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1274(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1275(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1276(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1277(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1278(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1279(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1280(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1281(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1282(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1283(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1284(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1285(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1286(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1287(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1288(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1289(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1290(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1291(char const * __restrict format, int param0, + unsigned long param1, int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1292(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1293(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1294(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1295(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1296(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1297(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1298(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1299(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1300(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1301(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1302(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1303(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1304(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1305(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1306(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param3), + (indirect: param2), (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param3, param2, param1, param0; + */ +int printf_va_1307(char const * __restrict format, int param0, int param1, + int param2, int param3); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1308(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1309(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1310(char const * __restrict format, int param0, int param1, + unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1311(char const * __restrict format, int param0, int param1, + unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1312(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1313(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1314(char const * __restrict format, int param0, int param1, + unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1315(char const * __restrict format, int param0, int param1, + unsigned int param2); + +int test_wmemmove_s(void) +{ + int __retres; + errno_t rc; + uint32_t i; + rsize_t len; + unsigned int testno = (unsigned int)0; + printf_va_1259("\nTesting wmemmove_s:\n"); + testno ++; + printf_va_1260("Test #%d:\n",(int)testno); + rc = wmemmove_s((wchar_t *)0,(unsigned int)(256 * 4), + (wchar_t const *)(mem2_3),(unsigned int)(256 * 4)); + if (rc != 400) printf_va_1261("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)94, + (unsigned int)rc); + testno ++; + printf_va_1262("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)0,(wchar_t const *)(mem2_3), + (unsigned int)(256 * 4)); + if (rc != 401) printf_va_1263("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)105, + (unsigned int)rc); + testno ++; + printf_va_1264("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)((256UL << 20) + (unsigned long)1), + (wchar_t const *)(mem2_3),(unsigned int)(256 * 4)); + if (rc != 403) printf_va_1265("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)115, + (unsigned int)rc); + testno ++; + printf_va_1266("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)(256 * 4),(wchar_t const *)0, + (unsigned int)(256 * 4)); + if (rc != 400) printf_va_1267("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)125, + (unsigned int)rc); + testno ++; + printf_va_1268("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)10,(wchar_t const *)(mem2_3), + (unsigned int)0); + if (rc != 401) printf_va_1269("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)135, + (unsigned int)rc); + testno ++; + printf_va_1270("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)(256 * 4),(wchar_t const *)(mem2_3), + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) printf_va_1271("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)145, + (unsigned int)rc); + testno ++; + printf_va_1272("Test #%d:\n",(int)testno); + rc = wmemmove_s(mem1_4,(unsigned int)(256 * 4), + (wchar_t const *)(& mem1_4[20]),(unsigned int)21); + if (rc != 0) printf_va_1273("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)155, + (unsigned int)rc); + testno ++; + printf_va_1274("Test #%d:\n",(int)testno); + rc = wmemmove_s(& mem1_4[25],(unsigned int)(256 * 4), + (wchar_t const *)(mem1_4),(unsigned int)26); + if (rc != 0) printf_va_1275("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)165, + (unsigned int)rc); + testno ++; + printf_va_1276("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)10) { + mem1_4[i] = 33; + i += (uint32_t)1; + } + mem1_4[10] = 40; + i = (unsigned int)11; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 44; + i += (uint32_t)1; + } + rc = wmemmove_s(mem1_4,(unsigned int)10,(wchar_t const *)(& mem1_4[10]), + (unsigned int)10); + if (rc != 0) printf_va_1277("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)180, + (unsigned int)rc); + else { + if (mem1_4[0] != 40) + if (mem1_4[10] != 40) printf_va_1278("%d - %d m1[0]=%d m1[10]=%d should be 40 \n", + 185,(int)i,mem1_4[0],mem1_4[10]); + i = (unsigned int)1; + while (i < (uint32_t)10) { + if (mem1_4[i] != 44) printf_va_1279("%d - %d m1=%d should be 44 \n", + 190,(int)i,mem1_4[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1280("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 1)) { + mem1_4[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4); + rc = wmemmove_s(mem1_4,len,(wchar_t const *)(mem2_3),len + (rsize_t)1); + if (rc == 0) printf_va_1281("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)206, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_4[i] != 0) printf_va_1282("%d - %d m1=%d m2=%d \n",213, + (int)i,mem1_4[i],mem2_3[i]); + i += (uint32_t)1; + } + if (mem1_4[i] != 33) printf_va_1283("%d - %lu m1=%d m2=%d \n",219, + (unsigned long)len,mem1_4[len], + mem2_3[len]); + } + testno ++; + printf_va_1284("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 2)) { + mem1_4[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)((256 * 4) / 2); + rc = wmemmove_s(mem1_4,len,(wchar_t const *)(mem2_3), + (unsigned int)(256 * 4)); + if (rc != 403) printf_va_1285("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)235, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_4[i] != 0) printf_va_1286("%d - %d m1=%d m2=%d \n",242, + (int)i,mem1_4[i],mem2_3[i]); + i += (uint32_t)1; + } + if (mem1_4[len] != 33) printf_va_1287("%d - %lu m1=%d m2=%d \n",248, + (unsigned long)len,mem1_4[len], + mem2_3[len]); + } + testno ++; + printf_va_1288("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 2)) { + mem1_4[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4); + rc = wmemmove_s(mem1_4,len,(wchar_t const *)(mem2_3),len); + if (rc != 0) printf_va_1289("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)263, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_4[i] != mem2_3[i]) printf_va_1290("%d - %d m1=%d <> m2=%d \n", + 271,(int)i,mem1_4[i], + mem2_3[i]); + i += (uint32_t)1; + } + if (mem1_4[len] != 33) + if (mem1_4[len + (rsize_t)1] != 33) printf_va_1291("%d - %lu m1[len]=%d m1[len+1]=%d \n", + 277, + (unsigned long)len, + mem1_4[len], + mem1_4[len + (rsize_t)1]); + } + testno ++; + printf_va_1292("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)10) { + mem1_4[i] = 33; + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 44; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4 - 10); + rc = wmemmove_s(mem1_4,len,(wchar_t const *)(& mem1_4[10]),len); + if (rc != 0) printf_va_1293("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)293, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_4[i] != 44) printf_va_1294("%d - %d m1=%d m2=%d \n",300, + (int)i,mem1_4[i],mem2_3[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1295("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4 + 2)) { + mem1_4[i] = (int)i; + i += (uint32_t)1; + } + len = (unsigned int)(256 * 4 - 10); + rc = wmemmove_s(& mem1_4[10],len,(wchar_t const *)(mem1_4),len); + if (rc != 0) printf_va_1296("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)317, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < (uint32_t)10) { + if ((uint32_t)mem1_4[i] != i) printf_va_1297("%d - %d m1=%d m2=%d \n", + 324,(int)i,mem1_4[i], + mem2_3[i]); + i += (uint32_t)1; + } + i = (unsigned int)10; + while (i < (uint32_t)(256 * 4)) { + if ((uint32_t)mem1_4[i] != i - (uint32_t)10) printf_va_1298("%d - %d m1=%d should=%d \n", + 330,(int)i, + mem1_4[i], + (int)( + i - (uint32_t)10)); + i += (uint32_t)1; + } + if (mem1_4[256 * 4] != 256 * 4) + if (mem1_4[256 * 4 + 1] != 256 * 4 + 1) printf_va_1299("%d - %d m1[LEN]=%d mem1[LEN+1]=%d should be 1024 & 1025 \n", + 336,(int)i, + mem1_4[256 * 4], + mem1_4[256 * 4 + 1]); + } + testno ++; + printf_va_1300("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 55; + i += (uint32_t)1; + } + rc = wmemmove_s(mem1_4,(unsigned int)(256 * 4),(wchar_t const *)(mem1_4), + (unsigned int)(256 * 4)); + if (rc != 0) printf_va_1301("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)351, + (unsigned int)rc); + testno ++; + printf_va_1302("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 55; + i += (uint32_t)1; + } + len = (unsigned int)5; + rc = wmemmove_s(mem1_4,len,(wchar_t const *)(mem2_3),len); + if (rc != 0) printf_va_1303("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)366, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < len) { + if (mem1_4[i] != 55) printf_va_1304("%d - %d m1=%d\n",372,(int)i, + mem1_4[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1305("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 55; + i += (uint32_t)1; + } + rc = wmemmove_s(mem1_4,(unsigned int)(256 * 4),(wchar_t const *)(mem2_3), + (unsigned int)((256 * 4) / 2)); + if (rc != 0) printf_va_1306("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)388, + (unsigned int)rc); + else { + i = (unsigned int)0; + while (i < (uint32_t)((256 * 4) / 2)) { + if (mem1_4[i] != 55) printf_va_1307("%d - %d m1=%d m2=%d \n",394, + (int)i,mem1_4[i],mem2_3[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1308("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 55; + i += (uint32_t)1; + } + rc = wmemmove_s((wchar_t *)((char *)(mem1_4) + 1),(unsigned int)(256 * 4), + (wchar_t const *)(mem2_3),(unsigned int)10); + if (rc != 0) printf_va_1309("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)410, + (unsigned int)rc); + else { + if (mem1_4[0] != 0x00003723) printf_va_1310("%d - %d first char memory incorrect m1=%04x \n", + 415,(int)i, + (unsigned int)mem1_4[i]); + i = (unsigned int)1; + while (i < (uint32_t)10) { + if (mem1_4[i] != 0x00003700) printf_va_1311("%d - %d m1=%04x \n",420, + (int)i, + (unsigned int)mem1_4[i]); + i += (uint32_t)1; + } + } + testno ++; + printf_va_1312("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem1_4[i] = 35; + i += (uint32_t)1; + } + i = (unsigned int)0; + while (i < (uint32_t)(256 * 4)) { + mem2_3[i] = 55; + i += (uint32_t)1; + } + rc = wmemmove_s((wchar_t *)((char *)(mem1_4) + 2),(unsigned int)(256 * 4), + (wchar_t const *)(mem2_3),(unsigned int)10); + if (rc != 0) printf_va_1313("%s %u Error rc=%u \n", + (char *)"test_wmemmove_s",(unsigned int)436, + (unsigned int)rc); + else { + if (mem1_4[0] != 0x00370023) printf_va_1314("%d - %d first char memory incorrect m1=%04x \n", + 441,(int)i, + (unsigned int)mem1_4[i]); + i = (unsigned int)1; + while (i < (uint32_t)10) { + if (mem1_4[i] != 0x00370000) printf_va_1315("%d - %d m1=%04x \n",446, + (int)i, + (unsigned int)mem1_4[i]); + i += (uint32_t)1; + } + } + __retres = 0; + return __retres; +} + +static wchar_t mem1_5[256]; +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))); + */ +int printf_va_1316(char const * __restrict format); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1317(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1318(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1319(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1320(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1321(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1322(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1323(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1324(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param1), + (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param1, param0; + */ +int printf_va_1325(char const * __restrict format, int param0, int param1); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1326(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1327(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1328(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1329(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1330(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1331(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1332(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1333(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1334(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1335(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1336(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1337(char const * __restrict format, int param0, int param1, + int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param0; + */ +int printf_va_1338(char const * __restrict format, int param0); + +/*@ requires valid_read_string(format); + requires valid_read_string(param0); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: *(param0 + (0 ..))); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, *(param0 + (0 ..)); + */ +int printf_va_1339(char const * __restrict format, char *param0, + unsigned int param1, unsigned int param2); + +/*@ requires valid_read_string(format); + assigns \result, __fc_stdout->__fc_FILE_data; + assigns \result + \from (indirect: __fc_stdout->__fc_FILE_id), + (indirect: __fc_stdout->__fc_FILE_data), + (indirect: *(format + (0 ..))), (indirect: param2), + (indirect: param1), (indirect: param0); + assigns __fc_stdout->__fc_FILE_data + \from (indirect: __fc_stdout->__fc_FILE_id), + __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))), + param2, param1, param0; + */ +int printf_va_1340(char const * __restrict format, int param0, int param1, + int param2); + +int test_wmemset_s(void) +{ + int __retres; + errno_t rc; + uint32_t len; + uint32_t i; + wchar_t value; + unsigned int testno = (unsigned int)0; + printf_va_1316("\nTesting wmemset_s:\n"); + testno ++; + printf_va_1317("Test #%d:\n",(int)testno); + value = 34; + rc = wmemset_s((wchar_t *)0,value,(unsigned int)256); + if (rc != 400) printf_va_1318("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)84, + (unsigned int)rc); + testno ++; + printf_va_1319("Test #%d:\n",(int)testno); + value = 34; + rc = wmemset_s(mem1_5,value,(unsigned int)0); + if (rc != 401) printf_va_1320("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)95, + (unsigned int)rc); + testno ++; + printf_va_1321("Test #%d:\n",(int)testno); + value = 34; + rc = wmemset_s(mem1_5,value, + (unsigned int)((256UL << 20) + (unsigned long)1)); + if (rc != 403) printf_va_1322("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)107, + (unsigned int)rc); + testno ++; + printf_va_1323("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_5[i] = 99; + i += (uint32_t)1; + } + len = (unsigned int)1; + value = 34; + rc = wmemset_s(mem1_5,value,len); + if (rc != 0) printf_va_1324("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)122, + (unsigned int)rc); + if (mem1_5[0] != value) printf_va_1325("%d - m1[0]=%d \n",127,mem1_5[0]); + i = (unsigned int)1; + while (i < (uint32_t)256) { + if (mem1_5[i] != 99) printf_va_1326("%d - %d m1=%d \n",132,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + testno ++; + printf_va_1327("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_5[i] = 99; + i += (uint32_t)1; + } + len = (unsigned int)2; + value = 34; + rc = wmemset_s(mem1_5,value,len); + if (rc != 0) printf_va_1328("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)148, + (unsigned int)rc); + if (mem1_5[0] != value) goto _LOR; + else + if (mem1_5[1] != value) _LOR: + printf_va_1329("%d - m1[0]=%d m1[1]=%d \n",153, + mem1_5[0],mem1_5[1]); + i = (unsigned int)2; + while (i < (uint32_t)256) { + if (mem1_5[i] != 99) printf_va_1330("%d - %d m1=%d \n",158,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + testno ++; + printf_va_1331("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_5[i] = 99; + i += (uint32_t)1; + } + len = (unsigned int)12; + value = 34; + rc = wmemset_s(mem1_5,value,len); + if (rc != 0) printf_va_1332("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)175, + (unsigned int)rc); + i = (unsigned int)0; + while (i < len) { + if (mem1_5[i] != value) printf_va_1333("%d - %d m1=%d \n",181,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + i = len; + while (i < (uint32_t)256) { + if (mem1_5[i] != 99) printf_va_1334("%d - %d m1=%d \n",187,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + testno ++; + printf_va_1335("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_5[i] = 99; + i += (uint32_t)1; + } + len = (unsigned int)31; + value = 3; + rc = wmemset_s(mem1_5,value,len); + if (rc != 0) printf_va_1336("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)203, + (unsigned int)rc); + i = (unsigned int)0; + while (i < len) { + if (mem1_5[i] != value) printf_va_1337("%d - %d m1=%d \n",209,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + testno ++; + printf_va_1338("Test #%d:\n",(int)testno); + i = (unsigned int)0; + while (i < (uint32_t)256) { + mem1_5[i] = 99; + i += (uint32_t)1; + } + len = (unsigned int)133; + value = 65; + rc = wmemset_s(mem1_5,value,len); + if (rc != 0) printf_va_1339("%s %u Error rc=%u \n", + (char *)"test_wmemset_s",(unsigned int)225, + (unsigned int)rc); + i = (unsigned int)0; + while (i < len) { + if (mem1_5[i] != value) printf_va_1340("%d - %d m1=%d \n",231,(int)i, + mem1_5[i]); + i += (uint32_t)1; + } + __retres = 0; + return __retres; +} + + diff --git a/safestringlib/.frama-c/intelsafestringlib.parse/metrics.log b/safestringlib/.frama-c/intelsafestringlib.parse/metrics.log new file mode 100644 index 0000000000000000000000000000000000000000..8e2f06ea1de7d6a86cd73d7709b43d774463a2d7 --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.parse/metrics.log @@ -0,0 +1,162 @@ +[metrics] Defined functions (246) +======================= + abort_handler_s (0 call); check_integer_format (2 calls); + handle_error (0 call); handle_error_0 (0 call); handle_error_1 (4 calls); + handle_error_10 (0 call); handle_error_11 (0 call); + handle_error_12 (0 call); handle_error_13 (0 call); + handle_error_14 (0 call); handle_error_15 (0 call); + handle_error_16 (0 call); handle_error_17 (0 call); + handle_error_18 (0 call); handle_error_19 (0 call); + handle_error_2 (2 calls); handle_error_20 (0 call); + handle_error_21 (0 call); handle_error_22 (0 call); + handle_error_23 (0 call); handle_error_24 (0 call); + handle_error_25 (0 call); handle_error_26 (0 call); + handle_error_27 (0 call); handle_error_28 (6 calls); + handle_error_29 (6 calls); handle_error_3 (0 call); + handle_error_30 (0 call); handle_error_31 (0 call); + handle_error_32 (0 call); handle_error_33 (0 call); + handle_error_34 (0 call); handle_error_35 (0 call); + handle_error_36 (0 call); handle_error_37 (0 call); + handle_error_38 (0 call); handle_error_39 (0 call); handle_error_4 (0 call); + handle_error_40 (0 call); handle_error_41 (0 call); + handle_error_42 (0 call); handle_error_43 (0 call); + handle_error_44 (0 call); handle_error_45 (0 call); + handle_error_46 (0 call); handle_error_5 (6 calls); handle_error_6 (0 call); + handle_error_7 (0 call); handle_error_8 (3 calls); handle_error_9 (0 call); + handle_wc_error (0 call); handle_wc_error_0 (0 call); + handle_wc_error_1 (0 call); handle_wc_error_10 (0 call); + handle_wc_error_11 (0 call); handle_wc_error_12 (0 call); + handle_wc_error_13 (0 call); handle_wc_error_14 (0 call); + handle_wc_error_15 (0 call); handle_wc_error_16 (0 call); + handle_wc_error_17 (0 call); handle_wc_error_18 (0 call); + handle_wc_error_19 (0 call); handle_wc_error_2 (0 call); + handle_wc_error_20 (0 call); handle_wc_error_21 (0 call); + handle_wc_error_22 (0 call); handle_wc_error_23 (0 call); + handle_wc_error_24 (0 call); handle_wc_error_25 (0 call); + handle_wc_error_26 (0 call); handle_wc_error_27 (0 call); + handle_wc_error_28 (0 call); handle_wc_error_29 (0 call); + handle_wc_error_3 (0 call); handle_wc_error_30 (0 call); + handle_wc_error_31 (0 call); handle_wc_error_32 (0 call); + handle_wc_error_33 (0 call); handle_wc_error_34 (0 call); + handle_wc_error_35 (0 call); handle_wc_error_36 (0 call); + handle_wc_error_37 (0 call); handle_wc_error_38 (0 call); + handle_wc_error_39 (0 call); handle_wc_error_4 (0 call); + handle_wc_error_40 (0 call); handle_wc_error_41 (3 calls); + handle_wc_error_42 (6 calls); handle_wc_error_43 (3 calls); + handle_wc_error_44 (6 calls); handle_wc_error_45 (6 calls); + handle_wc_error_46 (0 call); handle_wc_error_5 (0 call); + handle_wc_error_6 (0 call); handle_wc_error_7 (0 call); + handle_wc_error_8 (0 call); handle_wc_error_9 (0 call); + ignore_handler_s (address taken) (2 calls); + invoke_safe_mem_constraint_handler (101 calls); + invoke_safe_str_constraint_handler (310 calls); main (0 call); + mem_prim_move (4 calls); mem_prim_move16 (2 calls); + mem_prim_move32 (2 calls); mem_prim_move8 (0 call); mem_prim_set (16 calls); + mem_prim_set16 (9 calls); mem_prim_set32 (10 calls); memcmp16_s (11 calls); + memcmp32_s (11 calls); memcmp_s (42 calls); memcpy16_s (15 calls); + memcpy32_s (15 calls); memcpy_s (16 calls); memmove16_s (13 calls); + memmove32_s (13 calls); memmove_s (13 calls); memset16_s (7 calls); + memset32_s (7 calls); memset_s (14 calls); memzero16_s (7 calls); + memzero32_s (7 calls); memzero_s (7 calls); parse_format (4 calls); + set_mem_constraint_handler_s (0 call); + set_str_constraint_handler_s (0 call); snprintf_s_i (0 call); + snprintf_s_l (0 call); snprintf_s_si (1 call); snprintf_s_sl (0 call); + stpcpy_s (17 calls); stpncpy_s (19 calls); strcasecmp_s (14 calls); + strcasestr_s (22 calls); strcat_s (19 calls); strcmp_s (13 calls); + strcmpfld_s (13 calls); strcpy_s (15 calls); strcpyfld_s (11 calls); + strcpyfldin_s (13 calls); strcpyfldout_s (14 calls); strcspn_s (16 calls); + strfirstchar_s (9 calls); strfirstdiff_s (14 calls); + strfirstsame_s (15 calls); strisalphanumeric_s (11 calls); + strisascii_s (10 calls); strisdigit_s (9 calls); strishex_s (11 calls); + strislowercase_s (8 calls); strismixedcase_s (9 calls); + strispassword_s (11 calls); strisuppercase_s (9 calls); + strlastchar_s (10 calls); strlastdiff_s (12 calls); + strlastsame_s (15 calls); strljustify_s (15 calls); strncat_s (14 calls); + strncpy_s (19 calls); strnlen_s (32 calls); strnterminate_s (14 calls); + strpbrk_s (17 calls); strprefix_s (13 calls); strremovews_s (14 calls); + strspn_s (17 calls); strstr_s (20 calls); strtok_s (12 calls); + strtolowercase_s (9 calls); strtouppercase_s (9 calls); + strzero_s (30 calls); test_memcmp16_s (1 call); test_memcmp32_s (1 call); + test_memcmp_s (1 call); test_memcpy16_s (1 call); test_memcpy32_s (1 call); + test_memcpy_s (1 call); test_memmove16_s (1 call); + test_memmove32_s (1 call); test_memmove_s (1 call); + test_memset16_s (1 call); test_memset32_s (1 call); test_memset_s (1 call); + test_memzero16_s (1 call); test_memzero32_s (1 call); + test_memzero_s (1 call); test_stpcpy_s (1 call); test_stpncpy_s (1 call); + test_strcasecmp_s (1 call); test_strcasestr_s (1 call); + test_strcat_s (1 call); test_strcmp_s (1 call); test_strcmpfld_s (1 call); + test_strcpy_s (1 call); test_strcpyfld_s (1 call); + test_strcpyfldin_s (1 call); test_strcpyfldout_s (1 call); + test_strcspn_s (1 call); test_strfirstchar_s (1 call); + test_strfirstdiff_s (1 call); test_strfirstsame_s (1 call); + test_strisalphanumeric_s (1 call); test_strisascii_s (1 call); + test_strisdigit_s (1 call); test_strishex_s (1 call); + test_strislowercase_s (1 call); test_strismixed_s (1 call); + test_strispassword_s (1 call); test_strisuppercase_s (1 call); + test_strlastchar_s (1 call); test_strlastdiff_s (1 call); + test_strlastsame_s (1 call); test_strljustify_s (1 call); + test_strncat_s (1 call); test_strncpy_s (1 call); test_strnlen_s (1 call); + test_strnterminate_s (1 call); test_strpbrk_s (1 call); + test_strprefix_s (1 call); test_strremovews_s (1 call); + test_strspn_s (1 call); test_strstr_s (1 call); test_strtok_s (1 call); + test_strtolowercase_s (1 call); test_strtouppercase_s (1 call); + test_strzero_s (1 call); test_wcpcpy_s (1 call); test_wcscat_s (1 call); + test_wcscpy_s (1 call); test_wcsncat_s (1 call); test_wcsncpy_s (1 call); + test_wcsnlen_s (1 call); test_wmemcmp_s (1 call); test_wmemcpy_s (1 call); + test_wmemmove_s (1 call); test_wmemset_s (1 call); wcpcpy_s (17 calls); + wcscat_s (21 calls); wcscpy_s (89 calls); wcsncat_s (22 calls); + wcsncpy_s (18 calls); wcsnlen_s (45 calls); wmemcmp_s (16 calls); + wmemcpy_s (53 calls); wmemmove_s (19 calls); wmemset_s (19 calls); + +Undefined functions (0) +======================= + + +'Extern' global variables (0) +============================= + + +Potential entry points (93) +=========================== + abort_handler_s; handle_error; handle_error_0; handle_error_10; + handle_error_11; handle_error_12; handle_error_13; handle_error_14; + handle_error_15; handle_error_16; handle_error_17; handle_error_18; + handle_error_19; handle_error_20; handle_error_21; handle_error_22; + handle_error_23; handle_error_24; handle_error_25; handle_error_26; + handle_error_27; handle_error_3; handle_error_30; handle_error_31; + handle_error_32; handle_error_33; handle_error_34; handle_error_35; + handle_error_36; handle_error_37; handle_error_38; handle_error_39; + handle_error_4; handle_error_40; handle_error_41; handle_error_42; + handle_error_43; handle_error_44; handle_error_45; handle_error_46; + handle_error_6; handle_error_7; handle_error_9; handle_wc_error; + handle_wc_error_0; handle_wc_error_1; handle_wc_error_10; + handle_wc_error_11; handle_wc_error_12; handle_wc_error_13; + handle_wc_error_14; handle_wc_error_15; handle_wc_error_16; + handle_wc_error_17; handle_wc_error_18; handle_wc_error_19; + handle_wc_error_2; handle_wc_error_20; handle_wc_error_21; + handle_wc_error_22; handle_wc_error_23; handle_wc_error_24; + handle_wc_error_25; handle_wc_error_26; handle_wc_error_27; + handle_wc_error_28; handle_wc_error_29; handle_wc_error_3; + handle_wc_error_30; handle_wc_error_31; handle_wc_error_32; + handle_wc_error_33; handle_wc_error_34; handle_wc_error_35; + handle_wc_error_36; handle_wc_error_37; handle_wc_error_38; + handle_wc_error_39; handle_wc_error_4; handle_wc_error_40; + handle_wc_error_46; handle_wc_error_5; handle_wc_error_6; + handle_wc_error_7; handle_wc_error_8; handle_wc_error_9; main; + mem_prim_move8; set_mem_constraint_handler_s; set_str_constraint_handler_s; + snprintf_s_i; snprintf_s_l; snprintf_s_sl; + +Global metrics +============== +Sloc = 13632 +Decision point = 2794 +Global variables = 50 +If = 2644 +Loop = 479 +Goto = 540 +Assignment = 5172 +Exit point = 246 +Function = 246 +Function call = 3745 +Pointer dereferencing = 1061 +Cyclomatic complexity = 3040 diff --git a/safestringlib/.frama-c/intelsafestringlib.parse/warnings.log b/safestringlib/.frama-c/intelsafestringlib.parse/warnings.log new file mode 100644 index 0000000000000000000000000000000000000000..984fefe05ad9743548b7f6ec204235faf02b1236 --- /dev/null +++ b/safestringlib/.frama-c/intelsafestringlib.parse/warnings.log @@ -0,0 +1,881 @@ +unittests/test_wmemmove_s.c:407:[kernel:typing:incompatible-types-call] warning: expected 'wchar_t *' but got argument of type 'int': (int)((char *)(mem1) + 1) +unittests/test_wmemmove_s.c:433:[kernel:typing:incompatible-types-call] warning: expected 'wchar_t *' but got argument of type 'int': (int)((char *)(mem1) + 2) +safeclib/abort_handler_s.c:71:[variadic] warning: Incorrect type for argument 3. The argument will be cast from errno_t to unsigned int. +safeclib/snprintf_support.c:241:[variadic] warning: Call to function snprintf with non-static format argument: +no specification will be generated. +safeclib/snprintf_support.c:266:[variadic] warning: Call to function snprintf with non-static format argument: +no specification will be generated. +safeclib/snprintf_support.c:297:[variadic] warning: Call to function snprintf with non-static format argument: +no specification will be generated. +safeclib/snprintf_support.c:328:[variadic] warning: Call to function snprintf with non-static format argument: +no specification will be generated. +unittests/test_memcpy16_s.c:85:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:104:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:124:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:143:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:162:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:194:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:214:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy16_s.c:232:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:84:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:84:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:84:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:103:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:103:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:103:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:123:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:123:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:123:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:142:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:142:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:142:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:161:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:161:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:161:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:193:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:193:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:193:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:213:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:213:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:213:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:231:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:231:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memcpy32_s.c:231:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:84:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:111:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:138:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:165:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:192:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:198:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:230:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:236:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:257:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:278:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memcpy_s.c:298:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:86:[variadic] warning: Incorrect type for argument 2. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:109:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:130:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:153:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:185:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove16_s.c:205:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:86:[variadic] warning: Incorrect type for argument 2. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:86:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:86:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:109:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:109:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:130:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:130:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:153:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:153:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:185:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:185:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:205:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove32_s.c:205:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:85:[variadic] warning: Incorrect type for argument 2. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:106:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:127:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:148:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:180:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memmove_s.c:203:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset16_s.c:58:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset16_s.c:78:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset16_s.c:98:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset16_s.c:118:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset16_s.c:138:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:61:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:61:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:81:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:81:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:101:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:101:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:121:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:121:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:141:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset32_s.c:141:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memset_s.c:58:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset_s.c:78:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset_s.c:98:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset_s.c:118:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memset_s.c:138:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero16_s.c:60:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero16_s.c:79:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero16_s.c:98:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero16_s.c:117:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:60:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:60:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:79:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:79:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:98:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:98:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:117:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero32_s.c:117:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_memzero_s.c:60:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero_s.c:79:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero_s.c:98:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_memzero_s.c:117:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_stpcpy_s.c:94:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:98:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:103:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:109:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:113:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:117:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:124:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:128:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:132:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:138:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:144:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:149:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:162:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:170:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:176:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:182:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:189:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:195:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:200:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:208:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:214:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:218:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:231:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:241:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:247:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:251:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:264:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:279:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:286:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:290:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:303:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:311:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:318:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:322:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:327:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:333:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:340:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:347:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:352:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:358:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:365:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:370:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:377:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:383:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:390:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:394:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:399:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:405:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:412:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:416:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:421:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:427:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:434:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:441:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:445:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:451:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpcpy_s.c:458:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:462:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpcpy_s.c:469:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:102:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:106:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:111:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:117:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:121:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:125:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:132:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:136:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:140:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:146:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:152:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:157:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:170:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:178:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:185:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:191:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:198:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:205:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:210:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:218:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:224:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:228:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:241:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:251:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:257:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:261:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:274:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:289:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:296:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:300:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:313:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:321:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:328:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:332:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:337:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:343:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:352:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:359:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:364:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:370:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:377:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:382:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:390:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:396:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_stpncpy_s.c:396:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:404:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:411:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:416:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:423:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:429:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_stpncpy_s.c:429:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:436:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_stpncpy_s.c:436:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:445:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:452:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:457:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:464:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:470:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_stpncpy_s.c:470:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:479:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:486:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:491:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:498:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:504:[variadic] warning: Incorrect type for argument 4. The argument will be cast from uint32_t to int. +unittests/test_stpncpy_s.c:504:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:513:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:521:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:525:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:530:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:536:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:544:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:548:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:553:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:559:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:567:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:574:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:578:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:584:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_stpncpy_s.c:591:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:595:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_stpncpy_s.c:602:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:134:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:161:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:189:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:271:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:302:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:415:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:420:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcasestr_s.c:427:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strcspn_s.c:28:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:43:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:58:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:68:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:83:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:98:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:113:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:128:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:152:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:171:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:190:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:210:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:229:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:248:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:268:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strcspn_s.c:288:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_strisalphanumeric_s.c:27:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:36:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:46:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:55:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:66:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:76:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:87:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:98:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:109:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:122:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisalphanumeric_s.c:133:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:26:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:35:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:44:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:53:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:63:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:74:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:96:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:106:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisascii_s.c:119:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:52:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:63:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:74:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:96:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisdigit_s.c:107:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:52:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:61:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:72:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:83:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:94:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:105:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:116:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strishex_s.c:128:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:52:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:63:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:74:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strislowercase_s.c:96:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:52:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:63:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:74:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:96:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strismixed_s.c:107:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:24:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:32:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:40:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:48:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:56:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:67:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:78:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:89:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:100:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:111:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strispassword_s.c:122:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:52:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:63:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:74:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:96:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strisuppercase_s.c:107:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int to unsigned int. +unittests/test_strljustify_s.c:26:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:35:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:44:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:53:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:67:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:103:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:121:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:139:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:157:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:175:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:193:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:211:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:229:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strljustify_s.c:241:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:27:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:36:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:45:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:56:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:73:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:90:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:102:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:115:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:132:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:149:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:166:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:184:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:202:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strremovews_s.c:220:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strstr_s.c:302:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strstr_s.c:307:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strstr_s.c:314:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtok_s.c:30:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtok_s.c:40:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtok_s.c:50:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtok_s.c:60:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtok_s.c:69:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:25:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:43:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:54:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:70:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:85:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:101:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:117:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtolowercase_s.c:133:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:26:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:36:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:47:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:59:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:71:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:89:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:107:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:125:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strtouppercase_s.c:143:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:26:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:34:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:42:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:51:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:57:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:67:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:73:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:83:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:89:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:99:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:105:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_strzero_s.c:117:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:100:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:104:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:109:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:115:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:119:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:123:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:130:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:134:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:138:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:144:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:150:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:155:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:168:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:176:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:182:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:187:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:194:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:200:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:205:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:214:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:221:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:225:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:238:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:248:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:255:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:259:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:272:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:287:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:294:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:298:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:311:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:319:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:327:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:331:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:344:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:353:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:359:[variadic] warning: Incorrect type for argument 6. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcpcpy_s.c:359:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:364:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:370:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:377:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:382:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:388:[variadic] warning: Incorrect type for argument 4. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcpcpy_s.c:388:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:393:[variadic] warning: Incorrect type for argument 6. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcpcpy_s.c:393:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:400:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:408:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:412:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:417:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:423:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:431:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:435:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:440:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:446:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:453:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:459:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:463:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:469:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:476:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:480:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:486:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:493:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcpcpy_s.c:501:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:506:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcpcpy_s.c:511:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:57:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:61:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:67:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:71:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:77:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:81:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:87:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:91:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:98:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:104:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:115:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:122:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:133:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:140:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:151:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:158:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:169:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:179:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:185:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int32_t to unsigned int. +unittests/test_wcscat_s.c:185:[variadic] warning: Incorrect type for argument 5. The argument will be cast from int32_t to unsigned int. +unittests/test_wcscat_s.c:185:[variadic] warning: Incorrect type for argument 6. The argument will be cast from int32_t to unsigned int. +unittests/test_wcscat_s.c:192:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:199:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:210:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:217:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:228:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:235:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:248:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:255:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:266:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:273:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:285:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:292:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:304:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:311:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:317:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:324:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:337:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:344:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:355:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:362:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:374:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:381:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscat_s.c:394:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscat_s.c:401:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:99:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:103:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:109:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:113:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:119:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:123:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:129:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:135:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:148:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:156:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:162:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:168:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:174:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:183:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:189:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:202:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:212:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:219:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:232:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:242:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:249:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:262:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:270:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:278:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:291:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:299:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:305:[variadic] warning: Incorrect type for argument 6. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcscpy_s.c:305:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:311:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:319:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:325:[variadic] warning: Incorrect type for argument 4. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcscpy_s.c:325:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:330:[variadic] warning: Incorrect type for argument 6. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcscpy_s.c:330:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:337:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:345:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:350:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:356:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:363:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:368:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:374:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:382:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:388:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:394:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:403:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:409:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:416:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcscpy_s.c:425:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcscpy_s.c:430:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:100:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:104:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:110:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:114:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:120:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:124:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:129:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:133:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:139:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:143:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:151:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:157:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:168:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:174:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:185:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:192:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:203:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:213:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:219:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:219:[variadic] warning: Incorrect type for argument 5. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:219:[variadic] warning: Incorrect type for argument 6. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:231:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:241:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:247:[variadic] warning: Incorrect type for argument 4. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:247:[variadic] warning: Incorrect type for argument 5. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:247:[variadic] warning: Incorrect type for argument 6. The argument will be cast from int32_t to unsigned int. +unittests/test_wcsncat_s.c:260:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:267:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:278:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:285:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:296:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:303:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:316:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:323:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:334:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:341:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:353:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:360:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:372:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:379:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:390:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:397:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:408:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:414:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:425:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:432:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:444:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:451:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncat_s.c:463:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncat_s.c:470:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:99:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:103:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:109:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:113:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:119:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:123:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:129:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:135:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:148:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:155:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:159:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:171:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:178:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:182:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:194:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:201:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:207:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:219:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:226:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:232:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:244:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:252:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:259:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:264:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:277:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:285:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:290:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:303:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:311:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:323:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:330:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:336:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:348:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:356:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:363:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:368:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:381:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:389:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:394:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:407:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:415:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:427:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:435:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:443:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:449:[variadic] warning: Incorrect type for argument 4. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcsncpy_s.c:449:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:454:[variadic] warning: Incorrect type for argument 6. The argument will be cast from rsize_t to unsigned long. +unittests/test_wcsncpy_s.c:454:[variadic] warning: Incorrect type for argument 7. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:462:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:470:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:476:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:484:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsncpy_s.c:493:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsncpy_s.c:498:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:73:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:77:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:83:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:87:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:93:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:99:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:105:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:111:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:117:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:123:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:130:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:137:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wcsnlen_s.c:143:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wcsnlen_s.c:149:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:89:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:92:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:99:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:102:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:109:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:112:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:119:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:122:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:129:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:132:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:139:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:142:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:149:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:152:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:159:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:166:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:171:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:177:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:184:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:191:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:196:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:202:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:209:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:215:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:220:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:226:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:233:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:241:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:246:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:254:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:262:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:267:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:274:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:282:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:287:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:294:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:302:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:307:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:314:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:322:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:327:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:334:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcmp_s.c:342:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcmp_s.c:347:[variadic] warning: Incorrect type for argument 5. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:80:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:84:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:91:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:95:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:101:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:105:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:111:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:115:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:121:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:125:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:131:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:135:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:141:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:145:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:151:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:155:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:162:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:170:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:175:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:180:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:188:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:196:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:203:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:209:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemcpy_s.c:217:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:225:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:232:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:238:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemcpy_s.c:245:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:253:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:261:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:267:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemcpy_s.c:275:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:283:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:290:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:296:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:304:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:311:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:317:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:326:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:332:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:338:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:346:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:355:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:361:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:370:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:378:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:384:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemcpy_s.c:393:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemcpy_s.c:400:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemcpy_s.c:406:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:89:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:93:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:100:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:104:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:110:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:114:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:120:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:124:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:130:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:134:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:140:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:144:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:150:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:154:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:160:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:164:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:171:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:179:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:184:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:189:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:197:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:205:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:212:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:218:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemmove_s.c:226:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:234:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:241:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:247:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemmove_s.c:254:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:262:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:270:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:276:[variadic] warning: Incorrect type for argument 3. The argument will be cast from rsize_t to unsigned long. +unittests/test_wmemmove_s.c:284:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:292:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:299:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:309:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:316:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:323:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:329:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:329:[variadic] warning: Incorrect type for argument 5. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:335:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:343:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:350:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:357:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:365:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:371:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:380:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:387:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:393:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:402:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:409:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:414:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:414:[variadic] warning: Incorrect type for argument 4. The argument will be cast from wchar_t to unsigned int. +unittests/test_wmemmove_s.c:419:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:419:[variadic] warning: Incorrect type for argument 4. The argument will be cast from wchar_t to unsigned int. +unittests/test_wmemmove_s.c:428:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemmove_s.c:435:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemmove_s.c:440:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:440:[variadic] warning: Incorrect type for argument 4. The argument will be cast from wchar_t to unsigned int. +unittests/test_wmemmove_s.c:445:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemmove_s.c:445:[variadic] warning: Incorrect type for argument 4. The argument will be cast from wchar_t to unsigned int. +unittests/test_wmemset_s.c:77:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:83:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:89:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:94:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:100:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:106:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:112:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:121:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:131:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemset_s.c:138:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:147:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:157:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemset_s.c:165:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:174:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:180:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemset_s.c:186:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemset_s.c:193:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:202:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:208:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. +unittests/test_wmemset_s.c:215:[variadic] warning: Incorrect type for argument 2. The argument will be cast from unsigned int to int. +unittests/test_wmemset_s.c:224:[variadic] warning: Incorrect type for argument 4. The argument will be cast from errno_t to unsigned int. +unittests/test_wmemset_s.c:230:[variadic] warning: Incorrect type for argument 3. The argument will be cast from uint32_t to int. diff --git a/safestringlib/.frama-c/path.mk b/safestringlib/.frama-c/path.mk new file mode 120000 index 0000000000000000000000000000000000000000..57620d6d4816c69648f7a48a2ab302665cd5ac66 --- /dev/null +++ b/safestringlib/.frama-c/path.mk @@ -0,0 +1 @@ +../../path.mk \ No newline at end of file diff --git a/safestringlib/CMakeLists.txt b/safestringlib/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..213d5a8f597ba36e3c6b572cfded92f20cc913f5 --- /dev/null +++ b/safestringlib/CMakeLists.txt @@ -0,0 +1,186 @@ +cmake_minimum_required(VERSION 3.1) +project(safestring) + +option(BUILD_UNITTESTS "Build also project unit-tests" OFF) + +if (NOT DEFINED BUILD_OPT_DEFAULT) + set (BUILD_OPT_DEFAULT YES CACHE PATH "Build option default") +endif (NOT DEFINED BUILD_OPT_DEFAULT) + +option(BUILD_MEMCMP "Build memcmp* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_MEMCPY "Build memcpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_MEMMOVE "Build memmove* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_MEMSET "Build memset* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_MEMZERO "Build memzero* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STPCPY "Build stpcpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STPNCPY "Build stpncpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCASECMP "Build strcasecmp* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCASESTR "Build strcasestr* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCAT "Build strcat* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCMPFLD "Build strcmpfld* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCMP "Build strcmp* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCPYFLDIN "Build strcpyfldin* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCPYFLDOUT "Build strcpyfldout* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCPYFLD "Build strcpyfld* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCPY "Build strcpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRCSPN "Build strcspn* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRFIRSTCHAR "Build strfirstchar* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRFIRSTDIFF "Build strfirstdiff* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRFIRSTSAME "Build strfirstsame* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISALPHANUMERIC "Build strisalphanumeric* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISASCII "Build strisascii* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISDIGIT "Build strisdigit* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISHEX "Build strishex* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISLOWERCASE "Build strislowercase* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISMIXEDCASE "Build strismixedcase* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISPASSWORD "Build strispassword* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRISUPPERCASE "Build strisuppercase* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRLASTCHAR "Build strlastchar* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRLASTDIFF "Build strlastdiff* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRLASTSAME "Build strlastsame* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRLJUSTIFY "Build strljustify* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRNCAT "Build strncat* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRNCPY "Build strncpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRNLEN "Build strnlen* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRNTERMINATE "Build strnterminate* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRPBRK "Build strpbrk* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRPREFIX "Build strprefix* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRREMOVEWS "Build strremovews* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRSPN "Build strspn* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRSTR "Build strstr* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRTOK "Build strtok* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRTOLOWERCASE "Build strtolowercase* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRTOUPPERCASE "Build strtouppercase* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_STRZERO "Build strzero* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCPCPY "Build wcpcpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCSCAT "Build wcscat* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCSCPY "Build wcscpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCSNCAT "Build wcsncat* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCSNCPY "Build wcsncpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WCSNLEN "Build wcsnlen* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WMEMCMP "Build wmemcmp* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WMEMCPY "Build wmemcpy* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WMEMMOVE "Build wmemmove* functions" ${BUILD_OPT_DEFAULT}) +option(BUILD_WMEMSET "Build wmemset* functions" ${BUILD_OPT_DEFAULT}) + +set(SOURCES + safeclib/abort_handler_s.c + safeclib/ignore_handler_s.c + $<$<BOOL:${BUILD_MEMCMP}>:safeclib/memcmp16_s.c> + $<$<BOOL:${BUILD_MEMCMP}>:safeclib/memcmp32_s.c> + $<$<BOOL:${BUILD_MEMCMP}>:safeclib/memcmp_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:safeclib/memcpy16_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:safeclib/memcpy32_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:safeclib/memcpy_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:safeclib/memmove16_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:safeclib/memmove32_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:safeclib/memmove_s.c> + safeclib/mem_primitives_lib.c + $<$<BOOL:${BUILD_MEMSET}>:safeclib/memset16_s.c> + $<$<BOOL:${BUILD_MEMSET}>:safeclib/memset32_s.c> + $<$<BOOL:${BUILD_MEMSET}>:safeclib/memset_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:safeclib/memzero16_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:safeclib/memzero32_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:safeclib/memzero_s.c> + safeclib/safe_mem_constraint.c + safeclib/safe_str_constraint.c + safeclib/snprintf_support.c + $<$<BOOL:${BUILD_STPCPY}>:safeclib/stpcpy_s.c> + $<$<BOOL:${BUILD_STPNCPY}>:safeclib/stpncpy_s.c> + $<$<BOOL:${BUILD_STRCASECMP}>:safeclib/strcasecmp_s.c> + $<$<BOOL:${BUILD_STRCASESTR}>:safeclib/strcasestr_s.c> + $<$<BOOL:${BUILD_STRCAT}>:safeclib/strcat_s.c> + $<$<BOOL:${BUILD_STRCMPFLD}>:safeclib/strcmpfld_s.c> + $<$<BOOL:${BUILD_STRCMP}>:safeclib/strcmp_s.c> + $<$<BOOL:${BUILD_STRCPYFLDIN}>:safeclib/strcpyfldin_s.c> + $<$<BOOL:${BUILD_STRCPYFLDOUT}>:safeclib/strcpyfldout_s.c> + $<$<BOOL:${BUILD_STRCPYFLD}>:safeclib/strcpyfld_s.c> + $<$<BOOL:${BUILD_STRCPY}>:safeclib/strcpy_s.c> + $<$<BOOL:${BUILD_STRCSPN}>:safeclib/strcspn_s.c> + $<$<BOOL:${BUILD_STRFIRSTCHAR}>:safeclib/strfirstchar_s.c> + $<$<BOOL:${BUILD_STRFIRSTDIFF}>:safeclib/strfirstdiff_s.c> + $<$<BOOL:${BUILD_STRFIRSTSAME}>:safeclib/strfirstsame_s.c> + $<$<BOOL:${BUILD_STRISALPHANUMERIC}>:safeclib/strisalphanumeric_s.c> + $<$<BOOL:${BUILD_STRISASCII}>:safeclib/strisascii_s.c> + $<$<BOOL:${BUILD_STRISDIGIT}>:safeclib/strisdigit_s.c> + $<$<BOOL:${BUILD_STRISHEX}>:safeclib/strishex_s.c> + $<$<BOOL:${BUILD_STRISLOWERCASE}>:safeclib/strislowercase_s.c> + $<$<BOOL:${BUILD_STRISMIXEDCASE}>:safeclib/strismixedcase_s.c> + $<$<BOOL:${BUILD_STRISPASSWORD}>:safeclib/strispassword_s.c> + $<$<BOOL:${BUILD_STRISUPPERCASE}>:safeclib/strisuppercase_s.c> + $<$<BOOL:${BUILD_STRLASTCHAR}>:safeclib/strlastchar_s.c> + $<$<BOOL:${BUILD_STRLASTDIFF}>:safeclib/strlastdiff_s.c> + $<$<BOOL:${BUILD_STRLASTSAME}>:safeclib/strlastsame_s.c> + $<$<BOOL:${BUILD_STRLJUSTIFY}>:safeclib/strljustify_s.c> + $<$<BOOL:${BUILD_STRNCAT}>:safeclib/strncat_s.c> + $<$<BOOL:${BUILD_STRNCPY}>:safeclib/strncpy_s.c> + $<$<BOOL:${BUILD_STRNLEN}>:safeclib/strnlen_s.c> + $<$<BOOL:${BUILD_STRNTERMINATE}>:safeclib/strnterminate_s.c> + $<$<BOOL:${BUILD_STRPBRK}>:safeclib/strpbrk_s.c> + $<$<BOOL:${BUILD_STRPREFIX}>:safeclib/strprefix_s.c> + $<$<BOOL:${BUILD_STRREMOVEWS}>:safeclib/strremovews_s.c> + $<$<BOOL:${BUILD_STRSPN}>:safeclib/strspn_s.c> + $<$<BOOL:${BUILD_STRSTR}>:safeclib/strstr_s.c> + $<$<BOOL:${BUILD_STRTOK}>:safeclib/strtok_s.c> + $<$<BOOL:${BUILD_STRTOLOWERCASE}>:safeclib/strtolowercase_s.c> + $<$<BOOL:${BUILD_STRTOUPPERCASE}>:safeclib/strtouppercase_s.c> + $<$<BOOL:${BUILD_STRZERO}>:safeclib/strzero_s.c> + $<$<BOOL:${BUILD_WCPCPY}>:safeclib/wcpcpy_s.c> + $<$<BOOL:${BUILD_WCSCAT}>:safeclib/wcscat_s.c> + $<$<BOOL:${BUILD_WCSCPY}>:safeclib/wcscpy_s.c> + $<$<BOOL:${BUILD_WCSNCAT}>:safeclib/wcsncat_s.c> + $<$<BOOL:${BUILD_WCSNCPY}>:safeclib/wcsncpy_s.c> + $<$<BOOL:${BUILD_WCSNLEN}>:safeclib/wcsnlen_s.c> + $<$<BOOL:${BUILD_WMEMCMP}>:safeclib/wmemcmp_s.c> + $<$<BOOL:${BUILD_WMEMCPY}>:safeclib/wmemcpy_s.c> + $<$<BOOL:${BUILD_WMEMMOVE}>:safeclib/wmemmove_s.c> + $<$<BOOL:${BUILD_WMEMSET}>:safeclib/wmemset_s.c> + ) + +include_directories(include) + +add_library(${PROJECT_NAME}_objlib OBJECT ${SOURCES}) +set_target_properties(${PROJECT_NAME}_objlib + PROPERTIES POSITION_INDEPENDENT_CODE ON) + +target_compile_definitions(${PROJECT_NAME}_objlib PRIVATE -DSTDC_HEADERS) + +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -Wno-unknown-pragmas -Wno-unused-parameter) +if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 7) + target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -Wno-implicit-fallthrough) +endif() +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -Wall -Wextra -Wsign-compare -Wformat-security) +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -Wstack-protector -Winit-self) +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -D_FORTIFY_SOURCE=2 -O2) +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE -fstack-protector-all) +target_compile_options(${PROJECT_NAME}_objlib + PRIVATE --param ssp-buffer-size=4 -ftrapv) +target_compile_options(${PROJECT_NAME}_objlib PRIVATE -fPIE -fPIC) + +if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 6) + target_compile_options(${PROJECT_NAME}_objlib PRIVATE -mmitigate-rop) +endif() +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now") + +option(BUILD_ERROR_ON_WARNING "Fail compilation on warning" OFF) + +if(BUILD_ERROR_ON_WARNING) + target_compile_options(${PROJECT_NAME}_objlib PRIVATE -Werror) +endif() + +target_compile_options(${PROJECT_NAME}_objlib PRIVATE $<$<CONFIG:RELEASE>:-s>) + +add_library(${PROJECT_NAME}_shared SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>) +add_library(${PROJECT_NAME}_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>) +target_include_directories(${PROJECT_NAME}_shared PUBLIC include) +target_include_directories(${PROJECT_NAME}_static PUBLIC include) + +if(BUILD_UNITTESTS) + add_subdirectory(unittests) +endif() diff --git a/safestringlib/CODE_OF_CONDUCT.md b/safestringlib/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000000000000000000000000000000000..8368286b4da3ec2cf3956e364c631be4b3c55176 --- /dev/null +++ b/safestringlib/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at webmaster@linux.intel.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/safestringlib/Debug/makefile b/safestringlib/Debug/makefile new file mode 100644 index 0000000000000000000000000000000000000000..09421dd3b22926c20aeac2fe4b703341015c14f1 --- /dev/null +++ b/safestringlib/Debug/makefile @@ -0,0 +1,44 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include safeclib/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: libSafeString.a + +# Tool invocations +libSafeString.a: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC Archiver' + ar -r "libSafeString.a" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(ARCHIVES) libSafeString.a + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/safestringlib/Debug/objects.mk b/safestringlib/Debug/objects.mk new file mode 100644 index 0000000000000000000000000000000000000000..742c2da043f4f5d93c414dca3a725ab2204d9817 --- /dev/null +++ b/safestringlib/Debug/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/safestringlib/Debug/sources.mk b/safestringlib/Debug/sources.mk new file mode 100644 index 0000000000000000000000000000000000000000..a3ae84324b6285a195ec11dd1beadb165f963c70 --- /dev/null +++ b/safestringlib/Debug/sources.mk @@ -0,0 +1,17 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +ARCHIVES := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +safeclib \ + diff --git a/safestringlib/LICENSE b/safestringlib/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fa365052e4f92b0c1c8d8e8e7587173f94c7ff94 --- /dev/null +++ b/safestringlib/LICENSE @@ -0,0 +1,47 @@ +MIT License + +Copyright (c) 2014-2018 Intel Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ + +Copyright (C) 2012, 2013 Cisco Systems +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/safestringlib/LICENSE©ING.txt b/safestringlib/LICENSE©ING.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e847784564655099c06567fae8d1d00c49f5b7a --- /dev/null +++ b/safestringlib/LICENSE©ING.txt @@ -0,0 +1,50 @@ +Safe C Library + + Copyright (c) 2014-2016, Intel Corporation. All rights reserved. + + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +Copyright (C) 2012, 2013 Cisco Systems +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/safestringlib/README.md b/safestringlib/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0b31e1c77cd5ce5e392a2719bfb9d220e0660014 --- /dev/null +++ b/safestringlib/README.md @@ -0,0 +1,86 @@ +# safestringlib +The Secure Development Lifecycle (SDL) recommends banning certain C Library functions because they directly contribute +to security vulnerabilities such as buffer overflows. However routines for the manipulation of strings and memory buffers +are common in software and firmware, and are essential to accomplish certain programming tasks. Safer replacements for +these functions that avoid or prevent serious security vulnerabilities (e.g. buffer overflows, string format attacks, +conversion overflows/underflows, etc.) are available in the SafeString Library. + +This library includes routines for safe string operations (like strcpy) and memory routines (like memcpy) that are +recommended for Linux/Android operating systems, and will also work for Windows. This library is especially useful for +cross-platform situations where one library for these routines is preferred. + +The Safe String Library is based on the Safe C Library by Cisco, and includes replacement C Library functions for the SDL +banned functions, as well as a number of additional useful routines that are also susceptible to buffer overflows. This +library continues to be made available under the MIT Open Source License. + +Cisco's Safe C Library was extended by Intel's Security Center of Excellence (SeCoE) to add additional routines, and +include additional unit tests. + +LIST OF PRIMARY FUNCTIONS: +----------------------------- +* memcmp_s() +* memcpy_s() +* memmove_s() +* memset_s() +* memzero_s() + +* stpcpy_s() +* stpncpy_s() +* strcat_s() +* strcpy_s() +* strcspn_s() +* strncat_s() +* strncpy_s() +* strnlen_s() +* strpbrk_s() +* strspn_s() +* strstr_s() +* strtok_s() + +* wcpcpy_s() +* wcscat_s() +* wcscpy_s() +* wcsncat_s() +* wcsnlen_s() +* wmemcmp_s() +* wmemcpy_s() +* wmemmove_s() +* wmemset_s() + + +LIST OF ADDITIONAL STRING ROUTINES: +------------------------------------ +* strcasecmp_s() +* strcasestr_s() +* strcmp_s() +* strcmpfld_s() +* strcpyfld_s() +* strcpyfldin_s() +* strcpyfldout_s() +* strfirstchar_s() +* strfirstdiff_s() +* strfirstsmae_s() +* strisalphanumeric_s() +* strisascii_s() +* strisdigit_s() +* strishes_s() +* strislowercase_s() +* strismixedcase_s() +* strispassword_s() +* strisuppercase_s() +* strlastchar_s() +* strlastdiff_s() +* strlastsame_s() +* strljustify_s() +* strnterminate_s() +* strprefix_s() +* stremovews_s() +* strtolowercase_s() +* strtouppercase_s() +* strzero_s() + + +PLANNED ENHANCEMENTS: +---------------------- +- Add full sprintf_s() support +- Add full sscanf_s() support diff --git a/safestringlib/include/safe_lib.h b/safestringlib/include/safe_lib.h new file mode 100644 index 0000000000000000000000000000000000000000..ba41b28477603d82d17eef6913035a8cf6edeee5 --- /dev/null +++ b/safestringlib/include/safe_lib.h @@ -0,0 +1,68 @@ +/*------------------------------------------------------------------ + * safe_lib.h -- Safe C Library + * + * October 2008, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008-2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_LIB_H__ +#define __SAFE_LIB_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "safe_types.h" +#include "safe_lib_errno.h" + +/* C11 appendix K types - specific for bounds checking */ +typedef size_t rsize_t; + +/* + * We depart from the standard and allow memory and string operations to + * have different max sizes. See the respective safe_mem_lib.h or + * safe_str_lib.h files. + */ +/* #define RSIZE_MAX (~(rsize_t)0) - leave here for completeness */ + +typedef void (*constraint_handler_t) (const char * /* msg */, + void * /* ptr */, + errno_t /* error */); + +extern void abort_handler_s(const char *msg, void *ptr, errno_t error); +extern void ignore_handler_s(const char *msg, void *ptr, errno_t error); + +#define sl_default_handler ignore_handler_s + +#include "safe_mem_lib.h" +#include "safe_str_lib.h" + +#ifdef __cplusplus +} +#endif +#endif /* __SAFE_LIB_H__ */ diff --git a/safestringlib/include/safe_lib_errno.h b/safestringlib/include/safe_lib_errno.h new file mode 100644 index 0000000000000000000000000000000000000000..8f27111c3530b9d270db029663fba61083c8282b --- /dev/null +++ b/safestringlib/include/safe_lib_errno.h @@ -0,0 +1,100 @@ +/*------------------------------------------------------------------ + * safe_lib_errno.h -- Safe C Lib Error codes + * + * October 2008, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008-2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_LIB_ERRNO_H__ +#define __SAFE_LIB_ERRNO_H__ + +#ifdef __KERNEL__ +# include <linux/errno.h> +#else +#include <errno.h> +#endif /* __KERNEL__ */ + +/* + * Safe Lib specific errno codes. These can be added to the errno.h file + * if desired. + */ +#ifndef ESNULLP +#define ESNULLP ( 400 ) /* null ptr */ +#endif + +#ifndef ESZEROL +#define ESZEROL ( 401 ) /* length is zero */ +#endif + +#ifndef ESLEMIN +#define ESLEMIN ( 402 ) /* length is below min */ +#endif + +#ifndef ESLEMAX +#define ESLEMAX ( 403 ) /* length exceeds max */ +#endif + +#ifndef ESOVRLP +#define ESOVRLP ( 404 ) /* overlap undefined */ +#endif + +#ifndef ESEMPTY +#define ESEMPTY ( 405 ) /* empty string */ +#endif + +#ifndef ESNOSPC +#define ESNOSPC ( 406 ) /* not enough space for s2 */ +#endif + +#ifndef ESUNTERM +#define ESUNTERM ( 407 ) /* unterminated string */ +#endif + +#ifndef ESNODIFF +#define ESNODIFF ( 408 ) /* no difference */ +#endif + +#ifndef ESNOTFND +#define ESNOTFND ( 409 ) /* not found */ +#endif + +/* Additional for safe snprintf_s interfaces */ +#ifndef ESBADFMT +#define ESBADFMT ( 410 ) /* bad format string */ +#endif + +#ifndef ESFMTTYP +#define ESFMTTYP ( 411 ) /* bad format type */ +#endif + +/* EOK may or may not be defined in errno.h */ +#ifndef EOK +#define EOK ( 0 ) +#endif + +#endif /* __SAFE_LIB_ERRNO_H__ */ diff --git a/safestringlib/include/safe_lib_errno.h.in b/safestringlib/include/safe_lib_errno.h.in new file mode 100644 index 0000000000000000000000000000000000000000..def3420d852c2c2868e1c5d463484468867f6201 --- /dev/null +++ b/safestringlib/include/safe_lib_errno.h.in @@ -0,0 +1,91 @@ +/*------------------------------------------------------------------ + * safe_lib_errno.h -- Safe C Lib Error codes + * + * October 2008, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008-2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_LIB_ERRNO_H__ +#define __SAFE_LIB_ERRNO_H__ + +#ifdef __KERNEL__ +# include <linux/errno.h> +#else +@INSERT_ERRNO_H@ +#endif /* __KERNEL__ */ + +/* + * Safe Lib specific errno codes. These can be added to the errno.h file + * if desired. + */ +#ifndef ESNULLP +#define ESNULLP ( 400 ) /* null ptr */ +#endif + +#ifndef ESZEROL +#define ESZEROL ( 401 ) /* length is zero */ +#endif + +#ifndef ESLEMIN +#define ESLEMIN ( 402 ) /* length is below min */ +#endif + +#ifndef ESLEMAX +#define ESLEMAX ( 403 ) /* length exceeds max */ +#endif + +#ifndef ESOVRLP +#define ESOVRLP ( 404 ) /* overlap undefined */ +#endif + +#ifndef ESEMPTY +#define ESEMPTY ( 405 ) /* empty string */ +#endif + +#ifndef ESNOSPC +#define ESNOSPC ( 406 ) /* not enough space for s2 */ +#endif + +#ifndef ESUNTERM +#define ESUNTERM ( 407 ) /* unterminated string */ +#endif + +#ifndef ESNODIFF +#define ESNODIFF ( 408 ) /* no difference */ +#endif + +#ifndef ESNOTFND +#define ESNOTFND ( 409 ) /* not found */ +#endif + +/* EOK may or may not be defined in errno.h */ +#ifndef EOK +#define EOK ( 0 ) +#endif + +#endif /* __SAFE_LIB_ERRNO_H__ */ diff --git a/safestringlib/include/safe_mem_lib.h b/safestringlib/include/safe_mem_lib.h new file mode 100644 index 0000000000000000000000000000000000000000..162efd2eb64665c7ff29b0bc6eba2b6c9290490c --- /dev/null +++ b/safestringlib/include/safe_mem_lib.h @@ -0,0 +1,122 @@ +/*------------------------------------------------------------------ + * safe_mem_lib.h -- Safe C Library Memory APIs + * + * October 2008, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008-2012 by Cisco Systems, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_MEM_LIB_H__ +#define __SAFE_MEM_LIB_H__ + +#include "safe_lib.h" +#include <wchar.h> + +#define RSIZE_MAX_MEM ( 256UL << 20 ) /* 256MB */ +#define RSIZE_MAX_MEM16 ( RSIZE_MAX_MEM/2 ) +#define RSIZE_MAX_MEM32 ( RSIZE_MAX_MEM/4 ) + +/* set memory constraint handler */ +extern constraint_handler_t +set_mem_constraint_handler_s(constraint_handler_t handler); + + +/* compare memory */ +extern errno_t memcmp_s(const void *dest, rsize_t dmax, + const void *src, rsize_t slen, int *diff); + +/* compare uint16_t memory */ +extern errno_t memcmp16_s(const uint16_t *dest, rsize_t dmax, + const uint16_t *src, rsize_t slen, int *diff); + +/* compare uint32_t memory */ +extern errno_t memcmp32_s(const uint32_t *dest, rsize_t dmax, + const uint32_t *src, rsize_t slen, int *diff); + +/* wide compare memory */ +extern errno_t wmemcmp_s(const wchar_t *dest, rsize_t dmax, + const wchar_t *src, rsize_t smax, int *diff); + + +/* copy memory */ +extern errno_t memcpy_s(void *dest, rsize_t dmax, + const void *src, rsize_t slen); + +/* copy uint16_t memory */ +extern errno_t memcpy16_s(uint16_t *dest, rsize_t dmax, + const uint16_t *src, rsize_t slen); + +/* copy uint32_t memory */ +extern errno_t memcpy32_s(uint32_t *dest, rsize_t dmax, + const uint32_t *src, rsize_t slen); + +/* copy wchar_t memory */ +extern errno_t wmemcpy_s(wchar_t *dest, rsize_t dmax, + const wchar_t *src, rsize_t slen); + + +/* move memory, including overlapping memory */ +extern errno_t memmove_s(void *dest, rsize_t dmax, + const void *src, rsize_t slen); + +/* uint16_t move memory, including overlapping memory */ +extern errno_t memmove16_s(uint16_t *dest, rsize_t dmax, + const uint16_t *src, rsize_t slen); + +/* uint32_t move memory, including overlapping memory */ +extern errno_t memmove32_s(uint32_t *dest, rsize_t dmax, + const uint32_t *src, rsize_t slen); + +/* copy wchar_t memory, including overlapping memory */ +extern errno_t wmemmove_s(wchar_t *dest, rsize_t dmax, + const wchar_t *src, rsize_t slen); + + +/* set bytes */ +extern errno_t memset_s(void *dest, rsize_t dmax, uint8_t value); + +/* set uint16_t */ +extern errno_t memset16_s(uint16_t *dest, rsize_t dmax, uint16_t value); + +/* set uint32_t */ +extern errno_t memset32_s(uint32_t *dest, rsize_t dmax, uint32_t value); + +/* wide set bytes */ +extern errno_t wmemset_s(wchar_t *dest, wchar_t value, rsize_t len); + + +/* byte zero */ +extern errno_t memzero_s(void *dest, rsize_t dmax); + +/* uint16_t zero */ +extern errno_t memzero16_s(uint16_t *dest, rsize_t dmax); + +/* uint32_t zero */ +extern errno_t memzero32_s(uint32_t *dest, rsize_t dmax); + + +#endif /* __SAFE_MEM_LIB_H__ */ diff --git a/safestringlib/include/safe_str_lib.h b/safestringlib/include/safe_str_lib.h new file mode 100644 index 0000000000000000000000000000000000000000..e763d4ec22b094992c10d7d137fad880e3123b70 --- /dev/null +++ b/safestringlib/include/safe_str_lib.h @@ -0,0 +1,294 @@ +/*------------------------------------------------------------------ + * safe_str_lib.h -- Safe C Library String APIs + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_STR_LIB_H__ +#define __SAFE_STR_LIB_H__ + +#include "safe_lib.h" +#include <wchar.h> +#include <ctype.h> + +/* + * The shortest string is a null string!! + */ +#define RSIZE_MIN_STR ( 1 ) + +/* maximum sring length */ +#define RSIZE_MAX_STR ( 4UL << 10 ) /* 4KB */ + + +/* The makeup of a password */ +#define SAFE_STR_MIN_LOWERCASE ( 2 ) +#define SAFE_STR_MIN_UPPERCASE ( 2 ) +#define SAFE_STR_MIN_NUMBERS ( 1 ) +#define SAFE_STR_MIN_SPECIALS ( 1 ) + +#define SAFE_STR_PASSWORD_MIN_LENGTH ( 6 ) +#define SAFE_STR_PASSWORD_MAX_LENGTH ( 32 ) + + +/* set string constraint handler */ +extern constraint_handler_t +set_str_constraint_handler_s(constraint_handler_t handler); + + +/* string compare */ +extern errno_t +strcasecmp_s(const char *dest, rsize_t dmax, + const char *src, int *indicator); + + +/* find a substring _ case insensitive */ +extern errno_t +strcasestr_s(char *dest, rsize_t dmax, + const char *src, rsize_t slen, char **substring); + + +/* string concatenate */ +extern errno_t +strcat_s(char *dest, rsize_t dmax, const char *src); + + +/* string compare */ +extern errno_t +strcmp_s(const char *dest, rsize_t dmax, + const char *src, int *indicator); + + +/* fixed field string compare */ +extern errno_t +strcmpfld_s(const char *dest, rsize_t dmax, + const char *src, int *indicator); + + +/* string copy */ +extern errno_t +strcpy_s(char *dest, rsize_t dmax, const char *src); + +/* string copy */ +extern char * +stpcpy_s(char *dest, rsize_t dmax, const char *src, errno_t *err); + +/* string copy */ +extern char * +stpncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t smax, errno_t *err); + +/* fixed char array copy */ +extern errno_t +strcpyfld_s(char *dest, rsize_t dmax, const char *src, rsize_t slen); + + +/* copy from a null terminated string to fixed char array */ +extern errno_t +strcpyfldin_s(char *dest, rsize_t dmax, const char *src, rsize_t slen); + + +/* copy from a char array to null terminated string */ +extern errno_t +strcpyfldout_s(char *dest, rsize_t dmax, const char *src, rsize_t slen); + + +/* computes excluded prefix length */ +extern errno_t +strcspn_s(const char *dest, rsize_t dmax, + const char *src, rsize_t slen, rsize_t *count); + + +/* returns a pointer to the first occurrence of c in dest */ +extern errno_t +strfirstchar_s(char *dest, rsize_t dmax, char c, char **first); + + +/* returns index of first difference */ +extern errno_t +strfirstdiff_s(const char *dest, rsize_t dmax, + const char *src, rsize_t *index); + + +/* validate alphanumeric string */ +extern bool +strisalphanumeric_s(const char *str, rsize_t slen); + + +/* validate ascii string */ +extern bool +strisascii_s(const char *str, rsize_t slen); + + +/* validate string of digits */ +extern bool +strisdigit_s(const char *str, rsize_t slen); + + +/* validate hex string */ +extern bool +strishex_s(const char *str, rsize_t slen); + + +/* validate lower case */ +extern bool +strislowercase_s(const char *str, rsize_t slen); + + +/* validate mixed case */ +extern bool +strismixedcase_s(const char *str, rsize_t slen); + + +/* validate password */ +extern bool +strispassword_s(const char *str, rsize_t slen); + + +/* validate upper case */ +extern bool +strisuppercase_s(const char *str, rsize_t slen); + + +/* returns a pointer to the last occurrence of c in s1 */ +extern errno_t +strlastchar_s(char *str, rsize_t smax, char c, char **first); + + +/* returns index of last difference */ +extern errno_t +strlastdiff_s(const char *dest, rsize_t dmax, + const char *src, rsize_t *index); + + +/* left justify */ +extern errno_t +strljustify_s(char *dest, rsize_t dmax); + + +/* fitted string concatenate */ +extern errno_t +strncat_s(char *dest, rsize_t dmax, const char *src, rsize_t slen); + + +/* fitted string copy */ +extern errno_t +strncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t slen); + + +/* string length */ +extern rsize_t +strnlen_s (const char *s, rsize_t smax); + + +/* string terminate */ +extern rsize_t +strnterminate_s (char *s, rsize_t smax); + + +/* get pointer to first occurrence from set of char */ +extern errno_t +strpbrk_s(char *dest, rsize_t dmax, + char *src, rsize_t slen, char **first); + + +extern errno_t +strfirstsame_s(const char *dest, rsize_t dmax, + const char *src, rsize_t *index); + +extern errno_t +strlastsame_s(const char *dest, rsize_t dmax, + const char *src, rsize_t *index); + + +/* searches for a prefix */ +extern errno_t +strprefix_s(const char *dest, rsize_t dmax, const char *src); + + +/* removes leading and trailing white space */ +extern errno_t +strremovews_s(char *dest, rsize_t dmax); + + +/* computes inclusive prefix length */ +extern errno_t +strspn_s(const char *dest, rsize_t dmax, + const char *src, rsize_t slen, rsize_t *count); + + +/* find a substring */ +extern errno_t +strstr_s(char *dest, rsize_t dmax, + const char *src, rsize_t slen, char **substring); + + +/* string tokenizer */ +extern char * +strtok_s(char *s1, rsize_t *s1max, const char *src, char **ptr); + + +/* convert string to lowercase */ +extern errno_t +strtolowercase_s(char *str, rsize_t slen); + + +/* convert string to uppercase */ +extern errno_t +strtouppercase_s(char *str, rsize_t slen); + + +/* zero an entire string with nulls */ +extern errno_t +strzero_s(char *dest, rsize_t dmax); + + +/* wide string copy */ +extern wchar_t * +wcpcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, errno_t *err); + +/* wide string concatenate */ +extern errno_t +wcscat_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); + +/* fitted wide string concatenate */ +extern errno_t +wcsncat_s(wchar_t *dest, rsize_t dmax, const wchar_t *src, rsize_t slen); + +/* wide string copy */ +errno_t +wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); + +/* fitted wide string copy */ +extern errno_t +wcsncpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t slen); + +/* wide string length */ +extern rsize_t +wcsnlen_s(const wchar_t *dest, rsize_t dmax); + + +#endif /* __SAFE_STR_LIB_H__ */ diff --git a/safestringlib/include/safe_types.h b/safestringlib/include/safe_types.h new file mode 100644 index 0000000000000000000000000000000000000000..dba74740f8bfe371832a955f4ae558ac8af2d8ec --- /dev/null +++ b/safestringlib/include/safe_types.h @@ -0,0 +1,68 @@ +/*------------------------------------------------------------------ + * safe_types.h - C99 std types & defs or Linux kernel equivalents + * + * March 2007, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2007-2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_TYPES_H__ +#define __SAFE_TYPES_H__ + +#ifdef __KERNEL__ +/* linux kernel environment */ + +#include <linux/stddef.h> +#include <linux/types.h> +#include <linux/errno.h> + +/* errno_t isn't defined in the kernel */ +typedef int errno_t; + +#else + +#include <stdio.h> + +/* For systems without sys/types.h, prefer to get size_t from stdlib.h */ +/* some armcc environments don't have a sys/types.h in the environment */ +#ifdef _USE_STDLIB +#include <stdlib.h> +#include <ctype.h> +#else +#include <sys/types.h> +#endif + +#include <inttypes.h> +#include <stdint.h> +#include <errno.h> + +typedef int errno_t; + +#include <stdbool.h> + +#endif /* __KERNEL__ */ +#endif /* __SAFE_TYPES_H__ */ diff --git a/safestringlib/include/safe_types.h.in b/safestringlib/include/safe_types.h.in new file mode 100644 index 0000000000000000000000000000000000000000..7e332f8001f3dc674064380921e0be20f5f36db9 --- /dev/null +++ b/safestringlib/include/safe_types.h.in @@ -0,0 +1,59 @@ +/*------------------------------------------------------------------ + * safe_types.h - C99 std types & defs or Linux kernel equivalents + * + * March 2007, Bo Berry + * Modified 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2007-2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_TYPES_H__ +#define __SAFE_TYPES_H__ + +#ifdef __KERNEL__ +/* linux kernel environment */ + +#include <linux/stddef.h> +#include <linux/types.h> +#include <linux/errno.h> + +/* errno_t isn't defined in the kernel */ +typedef int errno_t; + +#else + +#include <stdio.h> +@INSERT_SYS_TYPES_H@ +@INSERT_INTTYPES_H@ +@INSERT_STDINT_H@ +@INSERT_ERRNO_H@ + +@FALLBACK_ERRNO_T@ + +@INSERT_BOOL_SUPPORT@ + +#endif /* __KERNEL__ */ +#endif /* __SAFE_TYPES_H__ */ diff --git a/safestringlib/include/snprintf_s.h b/safestringlib/include/snprintf_s.h new file mode 100644 index 0000000000000000000000000000000000000000..60480fe81715fb8d2e7f80a08e8bc4401ead56d0 --- /dev/null +++ b/safestringlib/include/snprintf_s.h @@ -0,0 +1,48 @@ +/*------------------------------------------------------------------ + * sprintf_s.h -- Safe Sprintf Interfaces + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ +#ifndef SPRINTF_S_H_ +#define SPRINTF_S_H_ + +#include <safe_lib_errno.h> + + +#define SNPRFNEGATE(x) (-1*(x)) + + + +int snprintf_s_i(char *dest, rsize_t dmax, const char *format, int a); +int snprintf_s_si(char *dest, rsize_t dmax, const char *format, char *s, int a); +int snprintf_s_l(char *dest, rsize_t dmax, const char *format, long a); +int snprintf_s_sl(char *dest, rsize_t dmax, const char *format, char *s, long a); + + + +#endif /* SPRINTF_S_H_ */ diff --git a/safestringlib/makefile b/safestringlib/makefile new file mode 100644 index 0000000000000000000000000000000000000000..f7cc2680ad1f3a74940ebde08477514acf996073 --- /dev/null +++ b/safestringlib/makefile @@ -0,0 +1,69 @@ +IDIR = include +MKDIR_P = mkdir -p +CC=gcc +CFLAGS=-I$(IDIR) -fstack-protector-strong -fPIE -fPIC -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security +LDFLAGS=-z noexecstack -z relo -z now + +ODIR=obj +OTDIR=objtest +SRCDIR=safeclib +TESTDIR=unittests + + +_DEPS = safe_lib_errno.h safe_lib.h safe_str_lib.h safe_types.h.in safe_lib_errno.h.in safe_mem_lib.h safe_types.h + +_ODEPS = mem_primitives_lib.h safeclib_private.h safe_mem_constraint.h safe_str_constraint.h + +all: directories libsafestring.a safestringtest + + +DEPS = $(addprefix $(IDIR)/,$(_DEPS)) +ODEPS = $(addprefix $(SRCDIR)/,$(_ODEPS)) + + +_CLIB = abort_handler_s.c stpcpy_s.c strlastsame_s.c ignore_handler_s.c stpncpy_s.c strljustify_s.c memcmp16_s.c strcasecmp_s.c strncat_s.c memcmp32_s.c strcasestr_s.c strncpy_s.c memcmp_s.c strcat_s.c strnlen_s.c memcpy16_s.c strcmpfld_s.c strnterminate_s.c memcpy32_s.c strcmp_s.c strpbrk_s.c memcpy_s.c strcpyfldin_s.c strprefix_s.c memmove16_s.c strcpyfldout_s.c strremovews_s.c memmove32_s.c strcpyfld_s.c strspn_s.c memmove_s.c strcpy_s.c strstr_s.c mem_primitives_lib.c strcspn_s.c strtok_s.c strfirstchar_s.c strtolowercase_s.c memset16_s.c strfirstdiff_s.c strtouppercase_s.c memset32_s.c strfirstsame_s.c strzero_s.c memset_s.c strisalphanumeric_s.c wcpcpy_s.c memzero16_s.c strisascii_s.c wcscat_s.c memzero32_s.c strisdigit_s.c wcscpy_s.c memzero_s.c strishex_s.c wcsncat_s.c strislowercase_s.c wcsncpy_s.c safe_mem_constraint.c strismixedcase_s.c wcsnlen_s.c strispassword_s.c wmemcmp_s.c safe_str_constraint.c strisuppercase_s.c wmemcpy_s.c strlastchar_s.c wmemmove_s.c snprintf_support.c strlastdiff_s.c wmemset_s.c + +_TLIST = $(addprefix $(ODIR)/,$(_CLIB)) +OBJ = $(patsubst %.c,%.o,$(_TLIST)) +CLIB =$(addprefix $(SRCDIR)/,$(_CLIB)) + + + +$(ODIR)/%.o: $(SRCDIR)/%.c $(DEPS) $(ODEPS) + $(CC) $(LDFLAGS) -c -o $@ $< $(CFLAGS) + +libsafestring.a: $(OBJ) + ar rcs $@ $^ + + +_TESTFUNCS = Safe_String_UnitTestMain.c test_strcmp_s.c test_strnlen_s.c test_memcmp16_s.c test_strcpyfldin_s.c test_strnterminate_s.c test_memcmp32_s.c test_strcpyfldout_s.c test_strpbrk_s.c test_memcmp_s.c test_strcpyfld_s.c test_strprefix_s.c test_memcpy16_s.c test_strcpy_s.c test_strremovews_s.c test_memcpy32_s.c test_strcspn_s.c test_strspn_s.c test_memcpy_s.c test_strfirstchar_s.c test_strstr_s.c test_memmove16_s.c test_strfirstdiff_s.c test_strtok_s.c test_memmove32_s.c test_strfirstsame_s.c test_strtolowercase_s.c test_memmove_s.c test_strisalphanumeric_s.c test_strtouppercase_s.c test_memset16_s.c test_strisascii_s.c test_strzero_s.c test_memset32_s.c test_strisdigit_s.c test_wcpcpy_s.c test_memset_s.c test_strishex_s.c test_wcscat_s.c test_memzero16_s.c test_strislowercase_s.c test_wcscpy_s.c test_memzero32_s.c test_strismixed_s.c test_wcsncat_s.c test_memzero_s.c test_strispassword_s.c test_wcsncpy_s.c test_strisuppercase_s.c test_wcsnlen_s.c test_stpcpy_s.c test_strlastchar_s.c test_wmemcmp_s.c test_stpncpy_s.c test_strlastdiff_s.c test_wmemcpy_s.c test_strcasecmp_s.c test_strlastsame_s.c test_wmemmove_s.c test_strcasestr_s.c test_strljustify_s.c test_wmemset_s.c test_strcat_s.c test_strncat_s.c test_strcmpfld_s.c test_strncpy_s.c + +_TLIST2 = $(addprefix $(OTDIR)/,$(_TESTFUNCS)) +TOBJ = $(patsubst %.c,%.o,$(_TLIST2)) +TCLIB =$(addprefix $(TESTDIR)/,$(_TESTFUNCS)) + + +$(OTDIR)/%.o: $(TESTDIR)/%.c $(TESTDIR)/test_private.h + $(CC) -c -o $@ $< $(CFLAGS) + + +safestringtest: directories libsafestring.a $(TOBJ) + $(CC) $(LDFLAGS) -static -o $@ $(TOBJ) libsafestring.a + + +.PHONY: directories + +directories: ${ODIR} ${OTDIR} + +${ODIR}: + ${MKDIR_P} ${ODIR} + +${OTDIR}: + ${MKDIR_P} ${OTDIR} + +.PHONY: clean + +clean: + rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ $(OTDIR)/*.o + rm -f libsafestring.a + rm -f safestringtest diff --git a/safestringlib/safeclib/abort_handler_s.c b/safestringlib/safeclib/abort_handler_s.c new file mode 100644 index 0000000000000000000000000000000000000000..c2f96612a31323f6d68801486e92d03ab6d8135d --- /dev/null +++ b/safestringlib/safeclib/abort_handler_s.c @@ -0,0 +1,75 @@ +/*------------------------------------------------------------------ + * abort_handler_s.c + * + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2012 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "stdlib.h" +#define slabort() abort() +/** + * NAME + * abort_handler_s + * + * SYNOPSIS + * #include "safe_lib.h" + * void abort_handler_s(const char *msg, void *ptr, errno_t error) + * + * DESCRIPTION + * This function writes a message on the standard error stream in + * an implementation-defined format. The message shall include the + * string pointed to by msg. The abort_handler_s function then calls + * the abort function. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * msg Pointer to the message describing the error + * + * ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * RETURN VALUE + * Does not return to caller. + * + * ALSO SEE + * ignore_handler_s() + * + */ + +void abort_handler_s(const char *msg, void *ptr, errno_t error) +{ + slprintf("ABORT CONSTRAINT HANDLER: (%u) %s\n", error, + (msg) ? msg : "Null message"); + slabort(); +} +EXPORT_SYMBOL(abort_handler_s) diff --git a/safestringlib/safeclib/ignore_handler_s.c b/safestringlib/safeclib/ignore_handler_s.c new file mode 100644 index 0000000000000000000000000000000000000000..412e0cb71eed77e637432b895519f09d605b6a0c --- /dev/null +++ b/safestringlib/safeclib/ignore_handler_s.c @@ -0,0 +1,72 @@ +/*------------------------------------------------------------------ + * ignore_handler_s.c + * + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2012 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" + +/** + * NAME + * ignore_handler_s + * + * SYNOPSIS + * #include "safe_lib.h" + * void ignore_handler_s(const char *msg, void *ptr, errno_t error) + * + * DESCRIPTION + * This function simply returns to the caller. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * msg Pointer to the message describing the error + * + * ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * RETURN VALUE + * Returns no value. + * + * ALSO SEE + * abort_handler_s() + * + */ + +void ignore_handler_s(const char *msg, void *ptr, errno_t error) +{ + + sldebug_printf("IGNORE CONSTRAINT HANDLER: (%u) %s\n", error, + (msg) ? msg : "Null message"); + return; +} +EXPORT_SYMBOL(ignore_handler_s) diff --git a/safestringlib/safeclib/mem_primitives_lib.c b/safestringlib/safeclib/mem_primitives_lib.c new file mode 100644 index 0000000000000000000000000000000000000000..4f137151f87df078078bc34d6417f563dde2db16 --- /dev/null +++ b/safestringlib/safeclib/mem_primitives_lib.c @@ -0,0 +1,863 @@ +/*------------------------------------------------------------------ + * mem_primitives_lib.c - Unguarded Memory Copy Routines + * + * February 2005, Bo Berry + * + * Copyright (c) 2005-2009 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "mem_primitives_lib.h" +#ifdef __FRAMAC__ +#include "__fc_builtin.h" +#endif +/* + * mem_primitives_lib.c provides unguarded memory routines + * that are used by the safe_mem_library. These routines + * may also be used by an application, but the application + * is responsible for all parameter validation and alignment. + */ + +/** + * NAME + * mem_prim_set - Sets memory to value + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_set(void *dest, uint32_t len, uint8_t value) + * + * DESCRIPTION + * Sets len bytes starting at dest to the specified value + * + * INPUT PARAMETERS + * dest - pointer to memory that will be set to value + * + * len - number of bytes to be set + * + * value - byte value + * + * OUTPUT PARAMETERS + * dest - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_set (void *dest, uint32_t len, uint8_t value) +{ + uint8_t *dp; + uint32_t count; + uint32_t lcount; + + uint32_t *lp; + uint32_t value32; + + count = len; + + dp = dest; + + value32 = value | (value << 8) | (value << 16) | (value << 24); + + /* + * First, do the few bytes to get uint32_t aligned. + */ + for (; count && ( (uintptr_t)dp & (sizeof(uint32_t)-1) ); count--) { + *dp++ = value; + } + + /* + * Then do the uint32_ts, unrolled the loop for performance + */ + lp = (uint32_t *)dp; + lcount = count >> 2; + + while (lcount != 0) { + + switch (lcount) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *lp++ = value32; *lp++ = value32; *lp++ = value32; *lp++ = value32; + *lp++ = value32; *lp++ = value32; *lp++ = value32; *lp++ = value32; + *lp++ = value32; *lp++ = value32; *lp++ = value32; *lp++ = value32; + *lp++ = value32; *lp++ = value32; *lp++ = value32; *lp++ = value32; + lcount -= 16; + break; + + case 15: *lp++ = value32; + case 14: *lp++ = value32; + case 13: *lp++ = value32; + case 12: *lp++ = value32; + case 11: *lp++ = value32; + case 10: *lp++ = value32; + case 9: *lp++ = value32; + case 8: *lp++ = value32; + + case 7: *lp++ = value32; + case 6: *lp++ = value32; + case 5: *lp++ = value32; + case 4: *lp++ = value32; + case 3: *lp++ = value32; + case 2: *lp++ = value32; + case 1: *lp++ = value32; + lcount = 0; + break; + } + } /* end while */ + + + dp = (uint8_t *)lp; + + /* + * compute the number of remaining bytes + */ + count &= (sizeof(uint32_t)-1); + + /* + * remaining bytes + */ + for (; count; dp++, count--) { + *dp = value; + } + + return; +} + + +/** + * NAME + * mem_prim_set16 - Sets memory to value + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_set16(uint16_t *dp, uint32_t len, uint16_t value) + * + * DESCRIPTION + * Sets len uint16_ts starting at dest to the specified value. + * Pointers must meet system alignment requirements. + * + * INPUT PARAMETERS + * dest - pointer to memory that will be set to value + * + * len - number of uint16_ts to be set + * + * value - uint16_t value + * + * OUTPUT PARAMETERS + * dest - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_set16 (uint16_t *dp, uint32_t len, uint16_t value) +{ + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + len -= 16; + break; + + case 15: *dp++ = value; + case 14: *dp++ = value; + case 13: *dp++ = value; + case 12: *dp++ = value; + case 11: *dp++ = value; + case 10: *dp++ = value; + case 9: *dp++ = value; + case 8: *dp++ = value; + + case 7: *dp++ = value; + case 6: *dp++ = value; + case 5: *dp++ = value; + case 4: *dp++ = value; + case 3: *dp++ = value; + case 2: *dp++ = value; + case 1: *dp++ = value; + len = 0; + break; + } + } /* end while */ + + return; +} + + +/** + * NAME + * mem_prim_set32 - Sets memory to the uint32_t value + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_set32(uint32_t *dp, uint32_t len, uint32_t value) + * + * DESCRIPTION + * Sets len uint32_ts starting at dest to the specified value + * Pointers must meet system alignment requirements. + * + * INPUT PARAMETERS + * dest - pointer to memory that will be set to value + * + * len - number of uint32_ts to be set + * + * value - uint32_t value + * + * OUTPUT PARAMETERS + * dest - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_set32 (uint32_t *dp, uint32_t len, uint32_t value) +{ + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + *dp++ = value; *dp++ = value; *dp++ = value; *dp++ = value; + len -= 16; + break; + + case 15: *dp++ = value; + case 14: *dp++ = value; + case 13: *dp++ = value; + case 12: *dp++ = value; + case 11: *dp++ = value; + case 10: *dp++ = value; + case 9: *dp++ = value; + case 8: *dp++ = value; + + case 7: *dp++ = value; + case 6: *dp++ = value; + case 5: *dp++ = value; + case 4: *dp++ = value; + case 3: *dp++ = value; + case 2: *dp++ = value; + case 1: *dp++ = value; + len = 0; + break; + } + } /* end while */ + + return; +} + + +/** + * NAME + * mem_prim_move - Move (handles overlap) memory + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_move(void *dest, const void *src, uint32_t len) + * + * DESCRIPTION + * Moves at most slen bytes from src to dest, up to dmax + * bytes. Dest may overlap with src. + * + * INPUT PARAMETERS + * dest - pointer to the memory that will be replaced by src. + * + * src - pointer to the memory that will be copied + * to dest + * + * len - maximum number bytes of src that can be copied + * + * OUTPUT PARAMETERS + * dest - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_move (void *dest, const void *src, uint32_t len) +{ + +#define wsize sizeof(uint32_t) +#define wmask (wsize - 1) + + uint8_t *dp = dest; + const uint8_t *sp = src; + + uint32_t tsp; + + /* + * Determine if we need to copy forward or backward (overlap) + */ + if ((uintptr_t)dp < (uintptr_t)sp) { + /* + * Copy forward. + */ + + /* + * get a working copy of src for bit operations + */ + tsp = (uintptr_t)sp; + + /* + * Try to align both operands. This cannot be done + * unless the low bits match. + */ + if ((tsp | (uintptr_t)dp) & wmask) { + /* + * determine how many bytes to copy to align operands + */ + if ((tsp ^ (uintptr_t)dp) & wmask || len < wsize) { + tsp = len; + + } else { + #ifdef __FRAMAC__ + tsp = wsize - Frama_C_interval(0,3); + #else + tsp = wsize - (tsp & wmask); + #endif + } + + len -= tsp; + + /* + * make the alignment + */ + do { + *dp++ = *sp++; + } while (--tsp); + } + + /* + * Now copy, then mop up any trailing bytes. + */ + tsp = len / wsize; + + if (tsp > 0) { + + do { + *(uint32_t *)dp = *(uint32_t *)sp; + + sp += wsize; + dp += wsize; + } while (--tsp); + } + + /* + * copy over the remaining bytes and we're done + */ + tsp = len & wmask; + + if (tsp > 0) { + do { + *dp++ = *sp++; + } while (--tsp); + } + + } else { + /* + * This section is used to copy backwards, to handle any + * overlap. The alignment requires (tps&wmask) bytes to + * align. + */ + + /* + * go to end of the memory to copy + */ + sp += len; + dp += len; + + /* + * get a working copy of src for bit operations + */ + tsp = (uintptr_t)sp; + + /* + * Try to align both operands. + */ + if ((tsp | (uintptr_t)dp) & wmask) { + + if ((tsp ^ (uintptr_t)dp) & wmask || len <= wsize) { + tsp = len; + } else { + #ifdef __FRAMAC__ + tsp = Frama_C_interval(0,3); + #else + tsp &= wmask; + #endif + } + + len -= tsp; + + /* + * make the alignment + */ + do { + *--dp = *--sp; + } while (--tsp); + } + + /* + * Now copy in uint32_t units, then mop up any trailing bytes. + */ + tsp = len / wsize; + + if (tsp > 0) { + do { + sp -= wsize; + dp -= wsize; + + *(uint32_t *)dp = *(uint32_t *)sp; + } while (--tsp); + } + + /* + * copy over the remaining bytes and we're done + */ + tsp = len & wmask; + if (tsp > 0) { + tsp = len & wmask; + do { + *--dp = *--sp; + } while (--tsp); + } + } + + return; +} + + +/** + * NAME + * mem_prim_move8 - Move (handles overlap) memory + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_move8(void *dest, const void *src, uint32_t len) + * + * DESCRIPTION + * Moves at most len uint8_ts from sp to dp. + * The destination may overlap with source. + * + * INPUT PARAMETERS + * dp - pointer to the memory that will be replaced by sp. + * + * sp - pointer to the memory that will be copied + * to dp + * + * len - maximum number uint8_t of sp that can be copied + * + * OUTPUT PARAMETERS + * dp - pointer to the memory that will be replaced by sp. + * + * RETURN VALUE + * none + * + */ +void +mem_prim_move8 (uint8_t *dp, const uint8_t *sp, uint32_t len) +{ + + /* + * Determine if we need to copy forward or backward (overlap) + */ + if (dp < sp) { + /* + * Copy forward. + */ + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + len -= 16; + break; + + case 15: *dp++ = *sp++; + case 14: *dp++ = *sp++; + case 13: *dp++ = *sp++; + case 12: *dp++ = *sp++; + case 11: *dp++ = *sp++; + case 10: *dp++ = *sp++; + case 9: *dp++ = *sp++; + case 8: *dp++ = *sp++; + + case 7: *dp++ = *sp++; + case 6: *dp++ = *sp++; + case 5: *dp++ = *sp++; + case 4: *dp++ = *sp++; + case 3: *dp++ = *sp++; + case 2: *dp++ = *sp++; + case 1: *dp++ = *sp++; + len = 0; + break; + } + } /* end while */ + + } else { + /* + * This section is used to copy backwards, to handle any + * overlap. The alignment requires (tps&wmask) bytes to + * align. + */ + + + /* + * go to end of the memory to copy + */ + sp += len; + dp += len; + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + len -= 16; + break; + + case 15: *--dp = *--sp; + case 14: *--dp = *--sp; + case 13: *--dp = *--sp; + case 12: *--dp = *--sp; + case 11: *--dp = *--sp; + case 10: *--dp = *--sp; + case 9: *--dp = *--sp; + case 8: *--dp = *--sp; + + case 7: *--dp = *--sp; + case 6: *--dp = *--sp; + case 5: *--dp = *--sp; + case 4: *--dp = *--sp; + case 3: *--dp = *--sp; + case 2: *--dp = *--sp; + case 1: *--dp = *--sp; + len = 0; + break; + } + } /* end while */ + } + + return; +} + + +/** + * NAME + * mem_prim_move16 - Move (handles overlap) memory + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_move16(void *dest, const void *src, uint32_t len) + * + * DESCRIPTION + * Moves at most len uint16_ts from sp to dp. + * The destination may overlap with source. + * + * INPUT PARAMETERS + * dp - pointer to the memory that will be replaced by sp. + * + * sp - pointer to the memory that will be copied + * to dp + * + * len - maximum number uint16_t of sp that can be copied + * + * OUTPUT PARAMETERS + * dp - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_move16 (uint16_t *dp, const uint16_t *sp, uint32_t len) +{ + + /* + * Determine if we need to copy forward or backward (overlap) + */ + if (dp < sp) { + /* + * Copy forward. + */ + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + len -= 16; + break; + + case 15: *dp++ = *sp++; + case 14: *dp++ = *sp++; + case 13: *dp++ = *sp++; + case 12: *dp++ = *sp++; + case 11: *dp++ = *sp++; + case 10: *dp++ = *sp++; + case 9: *dp++ = *sp++; + case 8: *dp++ = *sp++; + + case 7: *dp++ = *sp++; + case 6: *dp++ = *sp++; + case 5: *dp++ = *sp++; + case 4: *dp++ = *sp++; + case 3: *dp++ = *sp++; + case 2: *dp++ = *sp++; + case 1: *dp++ = *sp++; + len = 0; + break; + } + } /* end while */ + + } else { + /* + * This section is used to copy backwards, to handle any + * overlap. The alignment requires (tps&wmask) bytes to + * align. + */ + + /* + * go to end of the memory to copy + */ + sp += len; + dp += len; + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + len -= 16; + break; + + case 15: *--dp = *--sp; + case 14: *--dp = *--sp; + case 13: *--dp = *--sp; + case 12: *--dp = *--sp; + case 11: *--dp = *--sp; + case 10: *--dp = *--sp; + case 9: *--dp = *--sp; + case 8: *--dp = *--sp; + + case 7: *--dp = *--sp; + case 6: *--dp = *--sp; + case 5: *--dp = *--sp; + case 4: *--dp = *--sp; + case 3: *--dp = *--sp; + case 2: *--dp = *--sp; + case 1: *--dp = *--sp; + len = 0; + break; + } + } /* end while */ + } + + return; +} + + +/** + * NAME + * mem_prim_move32 - Move (handles overlap) memory + * + * SYNOPSIS + * #include "mem_primitives_lib.h" + * void + * mem_prim_move32(void *dest, const void *src, uint32_t len) + * + * DESCRIPTION + * Moves at most len uint32_ts from sp to dp. + * The destination may overlap with source. + * + * INPUT PARAMETERS + * dp - pointer to the memory that will be replaced by sp. + * + * sp - pointer to the memory that will be copied + * to dp + * + * len - maximum number uint32_t of sp that can be copied + * + * OUTPUT PARAMETERS + * dp - is updated + * + * RETURN VALUE + * none + * + */ +void +mem_prim_move32 (uint32_t *dp, const uint32_t *sp, uint32_t len) +{ + + /* + * Determine if we need to copy forward or backward (overlap) + */ + if (dp < sp) { + /* + * Copy forward. + */ + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; *dp++ = *sp++; + len -= 16; + break; + + case 15: *dp++ = *sp++; + case 14: *dp++ = *sp++; + case 13: *dp++ = *sp++; + case 12: *dp++ = *sp++; + case 11: *dp++ = *sp++; + case 10: *dp++ = *sp++; + case 9: *dp++ = *sp++; + case 8: *dp++ = *sp++; + + case 7: *dp++ = *sp++; + case 6: *dp++ = *sp++; + case 5: *dp++ = *sp++; + case 4: *dp++ = *sp++; + case 3: *dp++ = *sp++; + case 2: *dp++ = *sp++; + case 1: *dp++ = *sp++; + len = 0; + break; + } + } /* end while */ + + } else { + /* + * This section is used to copy backwards, to handle any + * overlap. + */ + + /* + * go to end of the memory to copy + */ + sp += len; + dp += len; + + while (len != 0) { + + switch (len) { + /* + * Here we do blocks of 8. Once the remaining count + * drops below 8, take the fast track to finish up. + */ + default: + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; *--dp = *--sp; + len -= 16; + break; + + case 15: *--dp = *--sp; + case 14: *--dp = *--sp; + case 13: *--dp = *--sp; + case 12: *--dp = *--sp; + case 11: *--dp = *--sp; + case 10: *--dp = *--sp; + case 9: *--dp = *--sp; + case 8: *--dp = *--sp; + + case 7: *--dp = *--sp; + case 6: *--dp = *--sp; + case 5: *--dp = *--sp; + case 4: *--dp = *--sp; + case 3: *--dp = *--sp; + case 2: *--dp = *--sp; + case 1: *--dp = *--sp; + len = 0; + break; + } + } /* end while */ + } + + return; +} diff --git a/safestringlib/safeclib/mem_primitives_lib.h b/safestringlib/safeclib/mem_primitives_lib.h new file mode 100644 index 0000000000000000000000000000000000000000..26c83d8585f39ea78c98a000e9867476159fcd30 --- /dev/null +++ b/safestringlib/safeclib/mem_primitives_lib.h @@ -0,0 +1,74 @@ +/*------------------------------------------------------------------ + * mem_primitives_lib.h - Unguarded Memory Copy Routines + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __MEM_PRIMITIVES_LIB_H__ +#define __MEM_PRIMITIVES_LIB_H__ + +#include "safeclib_private.h" + +/* + * These are prototypes for _unguarded_ memory routines. The caller must + * validate all parameters prior to invocation. Useful for diagnostics + * and system initialization processing. + */ + +/* moves (handles overlap) memory */ +extern void +mem_prim_move(void *dest, const void *src, uint32_t length); + + +/* uint8_t moves (handles overlap) memory */ +extern void +mem_prim_move8(uint8_t *dest, const uint8_t *src, uint32_t length); + +/* uint16_t moves (handles overlap) memory */ +extern void +mem_prim_move16(uint16_t *dest, const uint16_t *src, uint32_t length); + +/* uint32_t moves (handles overlap) memory */ +extern void +mem_prim_move32(uint32_t *dest, const uint32_t *src, uint32_t length); + + +/* set bytes */ +extern void +mem_prim_set(void *dest, uint32_t dmax, uint8_t value); + +/* set uint16_ts */ +extern void +mem_prim_set16(uint16_t *dest, uint32_t dmax, uint16_t value); + +/* set uint32_ts */ +extern void +mem_prim_set32(uint32_t *dest, uint32_t dmax, uint32_t value); + + +#endif /* __MEM_PRIMITIVES_LIB_H__ */ diff --git a/safestringlib/safeclib/memcmp16_s.c b/safestringlib/safeclib/memcmp16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..f19e7d24f227bfe15f3d2187734b79d60d24aa84 --- /dev/null +++ b/safestringlib/safeclib/memcmp16_s.c @@ -0,0 +1,173 @@ +/*------------------------------------------------------------------ + * memcmp16_s.c - Compares memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "safe_mem_lib.h" + +/** + * NAME + * memcmp16_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcmp16_s(const uint16_t *dest, rsize_t dmax, + * const uint16_t *src, rsize_t smax, int *diff) + * + * DESCRIPTION + * Compares memory until they differ, and their difference is + * returned in diff. If the block of memory is the same, diff=0. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to compare against + * + * dmax maximum length of dest, in uint16_t + * + * src pointer to the source memory to compare with dest + * + * smax maximum length of src, in uint16_t + * + * *diff pointer to the diff which is an integer greater + * than, equal to or less than zero according to + * whether the object pointed to by dest is + * greater than, equal to or less than the object + * pointed to by src. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memcmp_s(), memcmp32_s() + * + */ +errno_t +memcmp16_s (const uint16_t *dest, rsize_t dmax, + const uint16_t *src, rsize_t smax, int *diff) +{ + + const uint16_t *dp; + const uint16_t *sp; + + dp = dest; + sp = src; + + /* + * must be able to return the diff + */ + if (diff == NULL) { + invoke_safe_mem_constraint_handler("memcmp16_s: diff is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + *diff = -1; /* default diff */ + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memcmp16_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (sp == NULL) { + invoke_safe_mem_constraint_handler("memcmp16_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcmp16_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM16) { + invoke_safe_mem_constraint_handler("memcmp16_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + invoke_safe_mem_constraint_handler("memcmp16_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp16_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * no need to compare the same memory + */ + if (dp == sp) { + *diff = 0; + return (RCNEGATE(EOK)); + } + + /* + * now compare sp to dp + */ + *diff = 0; + while (dmax != 0 && smax != 0) { + if (*dp != *sp) { + *diff = *dp - *sp; + break; + } + + dmax--; + smax--; + + dp++; + sp++; + } + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memcmp16_s) diff --git a/safestringlib/safeclib/memcmp32_s.c b/safestringlib/safeclib/memcmp32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ff355b8cbb0995969f0a83ced3ecb93866cd9982 --- /dev/null +++ b/safestringlib/safeclib/memcmp32_s.c @@ -0,0 +1,167 @@ +/*------------------------------------------------------------------ + * memcmp32_s.c - Compares memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "safe_mem_lib.h" + +/** + * NAME + * memcmp32_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcmp32_s(const uint32_t *dest, rsize_t dmax, + * const uint32_t *src, rsize_t smax, int *diff) + * + * DESCRIPTION + * Compares memory until they differ, and their difference is + * returned in diff. If the block of memory is the same, diff=0. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to compare against + * + * dmax maximum length of dest, in uint32_t + * + * src pointer to the source memory to compare with dest + * + * smax maximum length of src, in uint32_t + * + * *diff pointer to the diff which is an integer greater + * than, equal to or less than zero according to + * whether the object pointed to by dest is + * greater than, equal to or less than the object + * pointed to by src. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memcmp_s(), memcmp16_s() + * + */ +errno_t +memcmp32_s (const uint32_t *dest, rsize_t dmax, + const uint32_t *src, rsize_t smax, int *diff) +{ + /* + * must be able to return the diff + */ + if (diff == NULL) { + invoke_safe_mem_constraint_handler("memcmp32_s: diff is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + *diff = -1; /* default diff */ + + + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memcmp32_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (src == NULL) { + invoke_safe_mem_constraint_handler("memcmp32_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcmp32_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("memcmp32_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + invoke_safe_mem_constraint_handler("memcmp32_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp32_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * no need to compare the same memory + */ + if (dest == src) { + *diff = 0; + return (RCNEGATE(EOK)); + } + + /* + * now compare src to dest + */ + *diff = 0; + while (dmax != 0 && smax != 0) { + if (*dest != *src) { + *diff = *dest - *src; + break; + } + + dmax--; + smax--; + + dest++; + src++; + } + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memcmp32_s) diff --git a/safestringlib/safeclib/memcmp_s.c b/safestringlib/safeclib/memcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b7e3f054f711a2575426da8c083eb793b128733d --- /dev/null +++ b/safestringlib/safeclib/memcmp_s.c @@ -0,0 +1,174 @@ +/*------------------------------------------------------------------ + * memcmp_s.c - Compares memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memcmp_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcmp_s(const void *dest, rsize_t dmax, + * const void *src, rsize_t smax, int *diff) + * + * DESCRIPTION + * Compares memory until they differ, and their difference is + * returned in diff. If the block of memory is the same, diff=0. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to compare against + * + * dmax maximum length of dest, in bytess + * + * src pointer to the source memory to compare with dest + * + * smax length of the source memory block + * + * *diff pointer to the diff which is an integer greater + * than, equal to or less than zero according to + * whether the object pointed to by dest is + * greater than, equal to or less than the object + * pointed to by src. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memcmp16_s(), memcmp32_s() + * + */ +errno_t +memcmp_s (const void *dest, rsize_t dmax, + const void *src, rsize_t smax, int *diff) +{ + const uint8_t *dp; + const uint8_t *sp; + + dp = dest; + sp = src; + + /* + * must be able to return the diff + */ + if (diff == NULL) { + invoke_safe_mem_constraint_handler("memcmp_s: diff is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + *diff = -1; /* default diff */ + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memcmp_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (sp == NULL) { + invoke_safe_mem_constraint_handler("memcmp_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcmp_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("memcmp_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + invoke_safe_mem_constraint_handler("memcmp_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + invoke_safe_mem_constraint_handler("memcmp_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * no need to compare the same memory + */ + if (dp == sp) { + *diff = 0; + return (RCNEGATE(EOK)); + } + + /* + * now compare sp to dp + */ + *diff = 0; + while (dmax > 0 && smax > 0) { + if (*dp != *sp) { + /*** *diff = *dp - *sp; ***/ + *diff = *dp < *sp ? -1 : 1; + break; + } + + dmax--; + smax--; + + dp++; + sp++; + } + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memcmp_s) diff --git a/safestringlib/safeclib/memcpy16_s.c b/safestringlib/safeclib/memcpy16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..aed0a2e8cef6572b42122519ef6113f2f283b5cf --- /dev/null +++ b/safestringlib/safeclib/memcpy16_s.c @@ -0,0 +1,151 @@ +/*------------------------------------------------------------------ + * memcpy16_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memcpy16_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcpy16_s(uint16_t *dest, rsize_t dmax, + * const uint16_t *src, rsize_t smax) + * + * DESCRIPTION + * This function copies at most smax uint16_ts from src to dest, up to + * dmax. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be replaced by src. + * + * dmax maximum length of the resulting dest + * + * src pointer to the memory that will be copied to dest + * + * smax maximum number uint16_t of src to copy + * + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM16. + * smax shall not be greater than dmax. + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, the memcpy_s function stores + * zeros in the first dmax bytes of the object pointed to by dest + * if dest is not a null pointer and smax is valid. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP source memory overlaps destination + * + * ALSO SEE + * memcpy_s(), memcpy32_s(), memmove_s(), memmove16_s(), memmove32_s() + * + */ +errno_t +memcpy16_s (uint16_t *dest, rsize_t dmax, const uint16_t *src, rsize_t smax) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memcpy16_s: dest is NULL", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcpy16_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM16) { + invoke_safe_mem_constraint_handler("memcpy16_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set16(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy16_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set16(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy16_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (src == NULL) { + mem_prim_set16(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy16_s: src is NULL", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + /* + * overlap is undefined behavior, do not allow + */ + if( ((dest > src) && (dest < (src+smax))) || + ((src > dest) && (src < (dest+dmax))) ) { + mem_prim_set16(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy16_s: overlap undefined", + NULL, ESOVRLP); + return (RCNEGATE(ESOVRLP)); + } + + /* + * now perform the copy + */ + mem_prim_move16(dest, src, smax); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memcpy16_s) diff --git a/safestringlib/safeclib/memcpy32_s.c b/safestringlib/safeclib/memcpy32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3ad1d9a302552f2115dffd2976e9c00401c96aee --- /dev/null +++ b/safestringlib/safeclib/memcpy32_s.c @@ -0,0 +1,150 @@ +/*------------------------------------------------------------------ + * memcpy32_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memcpy32_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcpy32_s(uint32_t *dest, rsize_t dmax, + * const uint32_t *src, rsize_t smax) + * + * DESCRIPTION + * This function copies at most smax uint32_ts from src to dest, up to + * dmax. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be replaced by src. + * + * dmax maximum length of the resulting dest + * + * src pointer to the memory that will be copied to dest + * + * smax maximum number uint32_t of src to copy + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM32. + * smax shall not be greater than dmax. + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, the memcpy_s function stores + * zeros in the first dmax bytes of the object pointed to by dest + * if dest is not a null pointer and smax is valid. + * + * RETURN VALUE + * EOK operation sucessful + * ESNULLP NULL pointer + * ESZEROL length was zero + * ESLEMAX length exceeds max + * ESOVRLP source memory overlaps destination + * + * ALSO SEE + * memcpy_s(), memcpy16_s(), memmove_s(), memmove16_s(), memmove32_s() + * + */ +errno_t +memcpy32_s (uint32_t *dest, rsize_t dmax, const uint32_t *src, rsize_t smax) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memcpy32_s: dest is NULL", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcpy32_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("memcpy32_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set32(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy32_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set32(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy32_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (src == NULL) { + mem_prim_set32(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy32_s: src is NULL", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + /* + * overlap is undefined behavior, do not allow + */ + if( ((dest > src) && (dest < (src+smax))) || + ((src > dest) && (src < (dest+dmax))) ) { + mem_prim_set32(dest, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy32_s: overlap undefined", + NULL, ESOVRLP); + return (RCNEGATE(ESOVRLP)); + } + + /* + * now perform the copy + */ + mem_prim_move32(dest, src, smax); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memcpy32_s) diff --git a/safestringlib/safeclib/memcpy_s.c b/safestringlib/safeclib/memcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a5c77b7c6ef190e5ca7c75cf65a84fdd8183846c --- /dev/null +++ b/safestringlib/safeclib/memcpy_s.c @@ -0,0 +1,163 @@ +/*------------------------------------------------------------------ + * memcpy_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memcpy_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memcpy_s(void *dest, rsize_t dmax, const void *src, rsize_t smax) + * + * DESCRIPTION + * This function copies at most smax bytes from src to dest, up to + * dmax. The size values are unsigned values. + * + * AR: Dave - verify ISO spec requires unsigned + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be replaced by src. + * + * dmax maximum length of the resulting dest + * + * src pointer to the memory that will be copied to dest + * + * smax maximum number bytes of src to copy + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * Copying shall not take place between regions that overlap. + * If there is a runtime-constraint violation, the memcpy_s function + * stores zeros in the first dmax bytes of the region pointed to + * by dest if dest is not a null pointer and smax is valid. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP source memory overlaps destination + * + * ALSO SEE + * memcpy16_s(), memcpy32_s(), memmove_s(), memmove16_s(), + * memmove32_s() + * + */ +errno_t +memcpy_s (void *dest, rsize_t dmax, const void *src, rsize_t smax) +{ + uint8_t *dp; + const uint8_t *sp; + + dp = dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memcpy_s: dest is NULL", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memcpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("memcpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + // AR: This is not a requirement according to the ISO spec - Change? + // AR: documentation needed on use of the error handlers - + // AR: default err handler should output to stderr on DEBUG + // AR: update docs to define return RCNEGATE of the error number + if (smax == 0) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy_s: smax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (smax > dmax) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy_s: smax exceeds dmax", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (sp == NULL) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy_s: src is NULL", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + + /* + * overlap is undefined behavior, do not allow + */ + if( ((dp > sp) && (dp < (sp+smax))) || + ((sp > dp) && (sp < (dp+dmax))) ) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memcpy_s: overlap undefined", + NULL, ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * now perform the copy + */ + mem_prim_move(dp, sp, smax); + + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(memcpy_s) diff --git a/safestringlib/safeclib/memmove16_s.c b/safestringlib/safeclib/memmove16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..14885e8af6ac60b2fcbad4adc435b45853064379 --- /dev/null +++ b/safestringlib/safeclib/memmove16_s.c @@ -0,0 +1,151 @@ +/*------------------------------------------------------------------ + * memmove16_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memmove16_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memmove16_s(uint16_t *dest, rsize_t dmax, + * const uint16_t *src, rsize_t smax) + * + * DESCRIPTION + * The memmove16_s function copies smax uint16_t from the region + * pointed to by src into the region pointed to by dest. This + * copying takes place as if the smax uint16_t from the region + * pointed to by src are first copied into a temporary array of + * smax uint16_t that does not overlap the regions pointed to + * by dest or src, and then the smax uint16_t from the temporary + * array are copied into the region pointed to by dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to the memory that will be replaced by src. + * + * dmax maximum length of the resulting dest, in uint16_t + * + * src pointer to the memory that will be copied + * to dest + * + * smax maximum number uint16_t of src that can be copied + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * If there is a runtime-constraint violation, the memmove_s function + * stores zeros in the first dmax characters of the regionpointed to + * by dest if dest is not a null pointer and dmax is not greater + * than RSIZE_MAX_MEM. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memmove_s(), memmove32_s(), memcpy_s(), memcpy16_s() memcpy32_s() + * + */ +errno_t +memmove16_s (uint16_t *dest, rsize_t dmax, const uint16_t *src, rsize_t smax) +{ + uint16_t *dp; + const uint16_t *sp; + + dp= dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memove16_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memove16_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM16) { + invoke_safe_mem_constraint_handler("memove16_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set16(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove16_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set16(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove16_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (sp == NULL) { + mem_prim_set16(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove16_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + + /* + * now perform the copy + */ + mem_prim_move16(dp, sp, smax); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memmove16_s) diff --git a/safestringlib/safeclib/memmove32_s.c b/safestringlib/safeclib/memmove32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..18e85430950a1345384e5af1f121bb6293581bb3 --- /dev/null +++ b/safestringlib/safeclib/memmove32_s.c @@ -0,0 +1,150 @@ +/*------------------------------------------------------------------ + * memmove32_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memmove32_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memmove32_s(uint32_t *dest, rsize_t dmax, + * const uint32_t *src, rsize_t smax) + * + * DESCRIPTION + * The memmove32_s function copies smax uint32_ts from the region + * pointed to by src into the region pointed to by dest. This + * copying takes place as if the smax uint32_ts from the region + * pointed to by src are first copied into a temporary array of + * smax uint32_ts that does not overlap the regions pointed to + * by dest or src, and then the smax uint32_ts from the temporary + * array are copied into the region pointed to by dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to the memory that will be replaced by src. + * + * dmax maximum length of the resulting dest, in uint32_t + * + * src pointer to the memory that will be copied + * to dest + * + * smax maximum number uint32_t of src that can be copied + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * If there is a runtime-constraint violation, the memmove_s function + * stores zeros in the first dmax characters of the regionpointed to + * by dest if dest is not a null pointer and dmax is not greater + * than RSIZE_MAX_MEM. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memmove_s(), memmove16_s(), memcpy_s(), memcpy16_s() memcpy32_s() + * + */ +errno_t +memmove32_s (uint32_t *dest, rsize_t dmax, const uint32_t *src, rsize_t smax) +{ + uint32_t *dp; + const uint32_t *sp; + + dp= dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memove32_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memove32_s: dest is zero", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("memove32_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set32(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove32_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set32(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove32_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (sp == NULL) { + mem_prim_set32(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memove32_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + /* + * now perform the copy + */ + mem_prim_move32(dp, sp, smax); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memmove32_s) diff --git a/safestringlib/safeclib/memmove_s.c b/safestringlib/safeclib/memmove_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d040d05992b08b0df1b77bc7fed200400e851cb4 --- /dev/null +++ b/safestringlib/safeclib/memmove_s.c @@ -0,0 +1,149 @@ +/*------------------------------------------------------------------ + * memmove_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memmove_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memmove_s(void *dest, rsize_t dmax, + * const void *src, rsize_t smax) + * + * DESCRIPTION + * The memmove_s function copies smax bytes from the region pointed + * to by src into the region pointed to by dest. This copying takes place + * as if the smax bytes from the region pointed to by src are first copied + * into a temporary array of smax bytes that does not overlap the region + * pointed to by dest or src, and then the smax bytes from the temporary + * array are copied into the object region to by dest. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to the memory that will be replaced by src. + * + * dmax maximum length of the resulting dest, in bytes + * + * src pointer to the memory that will be copied + * to dest + * + * smax maximum number bytes of src that can be copied + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * If there is a runtime-constraint violation, the memmove_s function + * stores zeros in the first dmax characters of the regionpointed to + * by dest if dest is not a null pointer and dmax is not greater + * than RSIZE_MAX_MEM. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memmove16_s(), memmove32_s(), memcpy_s(), memcpy16_s() memcpy32_s() + * + */ +errno_t +memmove_s (void *dest, rsize_t dmax, const void *src, rsize_t smax) +{ + uint8_t *dp; + const uint8_t *sp; + + dp= dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("memmove_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("memmove_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("memmove_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memmove_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memmove_s: smax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (sp == NULL) { + mem_prim_set(dp, dmax, 0); + invoke_safe_mem_constraint_handler("memmove_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + /* + * now perform the copy + */ + mem_prim_move(dp, sp, smax); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memmove_s) diff --git a/safestringlib/safeclib/memset16_s.c b/safestringlib/safeclib/memset16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a7372d28c65375e968f0f901ae45403eb27b53ad --- /dev/null +++ b/safestringlib/safeclib/memset16_s.c @@ -0,0 +1,105 @@ +/*------------------------------------------------------------------ + * memset16_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memset16_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memset16_s(uint16_t *dest, rsize_t len, uint16_t value) + * + * DESCRIPTION + * Sets len uint16_t starting at dest to the specified value. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be set to the value + * + * len number of uint16_t to be set + * + * value uint16_t value to be written + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM16. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memset_s(), memset32_s() + * + */ +errno_t +memset16_s (uint16_t *dest, rsize_t len, uint16_t value) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memset16_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memset16_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM16) { + invoke_safe_mem_constraint_handler("memset16_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + mem_prim_set16(dest, len, value); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memset16_s) diff --git a/safestringlib/safeclib/memset32_s.c b/safestringlib/safeclib/memset32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0e8fb2e75fb32c82bfcf95945fe9c1e4268a99d7 --- /dev/null +++ b/safestringlib/safeclib/memset32_s.c @@ -0,0 +1,105 @@ +/*------------------------------------------------------------------ + * memset32_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memset32_s - Sets a block of memory to value + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memset32_s(uint32_t *dest, rsize_t len, uint32_t value) + * + * DESCRIPTION + * Sets len uint32_t starting at dest to the specified value. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be set to the value + * + * len number of uint32_t to be set + * + * value uint32_t value to be written + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM32. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memset_s(), memset16_s() + * + */ +errno_t +memset32_s (uint32_t *dest, rsize_t len, uint32_t value) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memset32_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memset32_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("memset32_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + mem_prim_set32(dest, len, value); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memset32_s) diff --git a/safestringlib/safeclib/memset_s.c b/safestringlib/safeclib/memset_s.c new file mode 100644 index 0000000000000000000000000000000000000000..f19717d03b28451a297331cb0c2ca3f1139bee4a --- /dev/null +++ b/safestringlib/safeclib/memset_s.c @@ -0,0 +1,105 @@ +/*------------------------------------------------------------------ + * memset_s + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memset_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memset_s(void *dest, rsize_t len, uint8_t value) + * + * DESCRIPTION + * Sets len bytes starting at dest to the specified value. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be set to the value + * + * len number of bytes to be set + * + * value byte value + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memset16_s(), memset32_s() + * + */ +errno_t +memset_s (void *dest, rsize_t len, uint8_t value) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memset_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memset_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("memset_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + mem_prim_set(dest, len, value); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memset_s) diff --git a/safestringlib/safeclib/memzero16_s.c b/safestringlib/safeclib/memzero16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d4d827f8f5188553c1eb77a0ad25ce731a13daa2 --- /dev/null +++ b/safestringlib/safeclib/memzero16_s.c @@ -0,0 +1,107 @@ +/*------------------------------------------------------------------ + * memzero16_s - zeros memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memzero16_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memzero16_s(uint16_t *dest, rsize_t len) + * + * DESCRIPTION + * Zeros len uint16_ts starting at dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to be zeroed. + * + * len number of uint16_ts to be zeroed + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM16. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memzero_s(), memzero32_s() + * + */ +errno_t +memzero16_s (uint16_t *dest, rsize_t len) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memzero16_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memzero16_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM16) { + invoke_safe_mem_constraint_handler("memzero16_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * mem_prim_set16(dest, len, 0xDEAD); + * mem_prim_set16(dest, len, 0xBEEF); + */ + mem_prim_set16(dest, len, 0); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memzero16_s) diff --git a/safestringlib/safeclib/memzero32_s.c b/safestringlib/safeclib/memzero32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a582f35bc897cb9f92be37d5e0b3c01f450f39c2 --- /dev/null +++ b/safestringlib/safeclib/memzero32_s.c @@ -0,0 +1,108 @@ +/*------------------------------------------------------------------ + * memzero32_s - zeros memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memzero32_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memzero32_s(uint32_t *dest, rsize_t len) + * + * DESCRIPTION + * Zeros len uint32_ts starting at dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to be zeroed. + * + * len number of uint32_ts to be zeroed + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM32. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memzero_s(), memzero16_s() + * + */ +errno_t +memzero32_s (uint32_t *dest, rsize_t len) +{ + + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memzero32_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memzero32_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("memzero32_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * mem_prim_set32(dest, len, 0xDEADBEEF); + * mem_prim_set32(dest, len, 0xBA5EBA11); + */ + mem_prim_set32(dest, len, 0); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memzero32_s) diff --git a/safestringlib/safeclib/memzero_s.c b/safestringlib/safeclib/memzero_s.c new file mode 100644 index 0000000000000000000000000000000000000000..91d990b3e354c896e98926cc2332b7eefe4373ff --- /dev/null +++ b/safestringlib/safeclib/memzero_s.c @@ -0,0 +1,107 @@ +/*------------------------------------------------------------------ + * memzero_s - zeros memory + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * memzero_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * memzero_s(void *dest, rsize_t len) + * + * DESCRIPTION + * Zeros len bytes starting at dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to be zeroed. + * + * len number of bytes to be zeroed + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM. + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memzero16_s(), memzero32_s() + * + */ +errno_t +memzero_s (void *dest, rsize_t len) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("memzero_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("memzero_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("memzero_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * mem_prim_set(dest, len, 0xA5); + * mem_prim_set(dest, len, 0x5A); + */ + mem_prim_set(dest, len, 0); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(memzero_s) diff --git a/safestringlib/safeclib/safe_mem_constraint.c b/safestringlib/safeclib/safe_mem_constraint.c new file mode 100644 index 0000000000000000000000000000000000000000..9fafe9e896fb99c7fe32b6cd045c6baaffbd36c2 --- /dev/null +++ b/safestringlib/safeclib/safe_mem_constraint.c @@ -0,0 +1,142 @@ +/*------------------------------------------------------------------ + * safe_mem_constraint.c + * + * October 2008, Bo Berry + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008-2012 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "safe_mem_lib.h" + + +static constraint_handler_t mem_handler = NULL; + + +/** + * NAME + * set_mem_constraint_handler_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * constraint_handler_t + * set_mem_constraint_handler_straint_handler_t handler) + * + * DESCRIPTION + * The set_mem_constraint_handler_s function sets the runtime-constraint + * handler to be handler. The runtime-constraint handler is the function to + * be called when a library function detects a runtime-constraint + * order: + * 1. A pointer to a character string describing the + * runtime-constraint violation. + * 2. A null pointer or a pointer to an implementation defined + * object. + * 3. If the function calling the handler has a return type declared + * as errno_t, the return value of the function is passed. + * Otherwise, a positive value of type errno_t is passed. + * The implementation has a default constraint handler that is used if no + * calls to the set_constraint_handler_s function have been made. The + * behavior of the default handler is implementation-defined, and it may + * cause the program to exit or abort. If the handler argument to + * set_constraint_handler_s is a null pointer, the implementation default + * handler becomes the current constraint handler. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * *msg Pointer to the message describing the error + * + * *ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * OUTPUT PARAMETERS + * none + * + * RETURN VALUE + * none + * + * ALSO SEE + * set_str_constraint_handler_s() + */ +constraint_handler_t +set_mem_constraint_handler_s (constraint_handler_t handler) +{ + constraint_handler_t prev_handler = mem_handler; + if (NULL == handler) { + mem_handler = sl_default_handler; + } else { + mem_handler = handler; + } + return prev_handler; +} +EXPORT_SYMBOL(set_mem_constraint_handler_s) + + +/** + * NAME + * invoke_safe_mem_constraint_handler + * + * SYNOPSIS + * #include "safe_mem_constraint.h" + * void + * invoke_safe_mem_constraint_handler(const char *msg, + * void *ptr, + * errno_t error) + * + * DESCRIPTION + * Invokes the currently set constraint handler or the default. + * + * INPUT PARAMETERS + * *msg Pointer to the message describing the error + * + * *ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * OUTPUT PARAMETERS + * none + * + * RETURN VALUE + * none + * + */ +void +invoke_safe_mem_constraint_handler (const char *msg, + void *ptr, + errno_t error) +{ + if (NULL != mem_handler) { + mem_handler(msg, ptr, error); + } else { + sl_default_handler(msg, ptr, error); + } +} diff --git a/safestringlib/safeclib/safe_mem_constraint.h b/safestringlib/safeclib/safe_mem_constraint.h new file mode 100644 index 0000000000000000000000000000000000000000..7ec898e1fb50ca92ee63780437cac74f73fb9542 --- /dev/null +++ b/safestringlib/safeclib/safe_mem_constraint.h @@ -0,0 +1,46 @@ +/*------------------------------------------------------------------ + * safe_mem_constraint.h + * + * October 2008, Bo Berry + * + * Copyright (c) 2008, 2009 by Cisco Systems, Inc. + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_MEM_CONSTRAINT_H__ +#define __SAFE_MEM_CONSTRAINT_H__ + +#include "safeclib_private.h" + +/* + * Function used by the libraries to invoke the registered + * runtime-constraint handler. Always needed. + */ +extern void invoke_safe_mem_constraint_handler( + const char *msg, + void *ptr, + errno_t error); + +#endif /* __SAFE_MEM_CONSTRAINT_H__ */ diff --git a/safestringlib/safeclib/safe_str_constraint.c b/safestringlib/safeclib/safe_str_constraint.c new file mode 100644 index 0000000000000000000000000000000000000000..d57058f93001960d749b95d888c3c69d4ac4aeeb --- /dev/null +++ b/safestringlib/safeclib/safe_str_constraint.c @@ -0,0 +1,146 @@ +/*------------------------------------------------------------------ + * safe_str_constraint.c + * + * October 2008, Bo Berry + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2008, 2009, 2012 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +static constraint_handler_t str_handler = NULL; + + +/** + * NAME + * set_str_constraint_handler_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * constraint_handler_t + * set_str_constraint_handler_s(constraint_handler_t handler) + * + * DESCRIPTION + * The set_str_constraint_handler_s function sets the runtime-constraint + * handler to be handler. The runtime-constraint handler is the function to + * be called when a library function detects a runtime-constraint + * violation. Only the most recent handler registered with + * set_str_constraint_handler_s is called when a runtime-constraint + * violation occurs. + * When the handler is called, it is passed the following arguments in + * the following order: + * 1. A pointer to a character string describing the + * runtime-constraint violation. + * 2. A null pointer or a pointer to an implementation defined + * object. + * 3. If the function calling the handler has a return type declared + * as errno_t, the return value of the function is passed. + * Otherwise, a positive value of type errno_t is passed. + * The implementation has a default constraint handler that is used if no + * calls to the set_constraint_handler_s function have been made. The + * behavior of the default handler is implementation-defined, and it may + * cause the program to exit or abort. If the handler argument to + * set_constraint_handler_s is a null pointer, the implementation default + * handler becomes the current constraint handler. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * *msg Pointer to the message describing the error + * + * *ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * OUTPUT PARAMETERS + * none + * + * RETURN VALUE + * none + * + * ALSO SEE + * set_str_constraint_handler_s() + */ +constraint_handler_t +set_str_constraint_handler_s (constraint_handler_t handler) +{ + constraint_handler_t prev_handler = str_handler; + if (NULL == handler) { + str_handler = sl_default_handler; + } else { + str_handler = handler; + } + return prev_handler; +} +EXPORT_SYMBOL(set_str_constraint_handler_s) + + +/** + * NAME + * invoke_safe_str_constraint_handler + * + * SYNOPSIS + * #include "safe_str_constraint.h" + * void + * invoke_safe_str_constraint_handler (const char *msg, + * void *ptr, + * errno_t error) + * + * DESCRIPTION + * Invokes the currently set constraint handler or the default. + * + * INPUT PARAMETERS + * *msg Pointer to the message describing the error + * + * *ptr Pointer to aassociated data. Can be NULL. + * + * error The error code encountered. + * + * OUTPUT PARAMETERS + * none + * + * RETURN VALUE + * none + * + */ +void +invoke_safe_str_constraint_handler (const char *msg, + void *ptr, + errno_t error) +{ + if (NULL != str_handler) { + str_handler(msg, ptr, error); + } else { + sl_default_handler(msg, ptr, error); + } +} diff --git a/safestringlib/safeclib/safe_str_constraint.h b/safestringlib/safeclib/safe_str_constraint.h new file mode 100644 index 0000000000000000000000000000000000000000..a1fba3e7e85c1774c2996fc49bf91b765b5e0024 --- /dev/null +++ b/safestringlib/safeclib/safe_str_constraint.h @@ -0,0 +1,78 @@ +/*------------------------------------------------------------------ + * safe_str_constraint.h + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 Cisco Systems + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFE_STR_CONSTRAINT_H__ +#define __SAFE_STR_CONSTRAINT_H__ + +#include "safeclib_private.h" + +/* + * Function used by the libraries to invoke the registered + * runtime-constraint handler. Always needed. + */ +extern void invoke_safe_str_constraint_handler( + const char *msg, + void *ptr, + errno_t error); + + +/* + * Safe C Lib internal string routine to consolidate error handling + */ +static inline void handle_error(char *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to eliminate partial copy */ + while (orig_dmax) { *orig_dest = '\0'; orig_dmax--; orig_dest++; } +#else + *orig_dest = '\0'; +#endif + + invoke_safe_str_constraint_handler(err_msg, NULL, err_code); + return; +} + +static inline void handle_wc_error(wchar_t *orig_dest, rsize_t orig_dmax, + char *err_msg, errno_t err_code) +{ +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to eliminate partial copy */ + while (orig_dmax) { *orig_dest = L'\0'; orig_dmax--; orig_dest++; } +#else + *orig_dest = L'\0'; +#endif + + invoke_safe_str_constraint_handler(err_msg, NULL, err_code); + return; +} + +#endif /* __SAFE_STR_CONSTRAINT_H__ */ diff --git a/safestringlib/safeclib/safeclib_private.h b/safestringlib/safeclib/safeclib_private.h new file mode 100644 index 0000000000000000000000000000000000000000..7280e879a8e48ddd1c647aab93cd6de542d34fe1 --- /dev/null +++ b/safestringlib/safeclib/safeclib_private.h @@ -0,0 +1,93 @@ +/*------------------------------------------------------------------ + * safeclib_private.h - Internal library references + * + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2012, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __SAFECLIB_PRIVATE_H__ +#define __SAFECLIB_PRIVATE_H__ + +#ifdef __KERNEL__ +/* linux kernel environment */ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/ctype.h> + +#define RCNEGATE(x) ( -(x) ) + +#define slprintf(...) printk(KERN_EMERG __VA_ARGS__) +#define slabort() +#ifdef DEBUG +#define sldebug_printf(...) printk(KERN_DEBUG __VA_ARGS__) +#endif + +#else /* !__KERNEL__ */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#ifdef STDC_HEADERS +# include <ctype.h> +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#define EXPORT_SYMBOL(sym) +#define RCNEGATE(x) (x) + +#define slprintf(...) fprintf(stderr, __VA_ARGS__) +#define slabort() abort() +#ifdef DEBUG +#define sldebug_printf(...) printf(__VA_ARGS__) +#endif + +#endif /* __KERNEL__ */ + +#ifndef sldebug_printf +#define sldebug_printf(...) +#endif + +#include "safe_lib.h" + +#endif /* __SAFECLIB_PRIVATE_H__ */ diff --git a/safestringlib/safeclib/snprintf_support.c b/safestringlib/safeclib/snprintf_support.c new file mode 100644 index 0000000000000000000000000000000000000000..52a0739f81b0cd42f39d23f62d940ef873521a38 --- /dev/null +++ b/safestringlib/safeclib/snprintf_support.c @@ -0,0 +1,329 @@ +/*------------------------------------------------------------------ + * snprintf_support.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" +#include "snprintf_s.h" + +#define FMT_CHAR 'c' +#define FMT_WCHAR 'C' +#define FMT_SHORT 'h' +#define FMT_INT 'd' +#define FMT_LONG 'l' +#define FMT_STRING 's' +#define FMT_WSTRING 'S' +#define FMT_DOUBLE 'g' +#define FMT_LDOUBLE 'G' +#define FMT_VOID 'p' +#define FMT_PCHAR '1' +#define FMT_PSHORT '2' +#define FMT_PINT '3' +#define FMT_PLONG '4' + + + +#define MAX_FORMAT_ELEMENTS 16 + +#define CHK_FORMAT(X,Y) (((X)==(Y))?1:0) + + +unsigned int +parse_format(const char *format, char pformatList[], unsigned int maxFormats) +{ + unsigned int numFormats = 0; + unsigned int index = 0; + unsigned int start = 0; + char lmod = 0; + + while (index < RSIZE_MAX_STR && format[index] != '\0' && numFormats < maxFormats) + { + if (format[index] == '%') { + start = index; // remember where the format string started + // Check for flags + switch( format[++index]) { + case '\0': continue; // skip - end of format string + case '%' : continue; // skip - actually a percent character + case '#' : // convert to alternate form + case '0' : // zero pad + case '-' : // left adjust + case ' ' : // pad with spaces + case '+' : // force a sign be used + index++; // skip the flag character + break; + } + // check for and skip the optional field width + while ( format[index] != '\0' && format[index] >= '0' && format[index] <= '9') { + index++; + } + // Check for an skip the optional precision + if ( format[index] != '\0' && format[index] == '.') { + index++; // skip the period + while ( format[index] != '\0' && format[index] >= '0' && format[index] <= '9') { + index++; + } + } + // Check for and skip the optional length modifiers + lmod = ' '; + switch( format[index]) { + case 'h' : if ( format[++index] == 'h') { + ++index; //also recognize the 'hh' modifier + lmod = 'H'; // for char + } else { + lmod = 'h'; // for short + } + break; + case 'l' : if ( format[++index] == 'l') { + ++index; //also recognize the 'll' modifier + lmod = 'd'; // for long long + } else { + lmod = 'l'; // for long + } + break; + case 'L' : lmod = 'L'; break; + case 'j' : + case 'z' : + case 't' : index++; + break; + } + + // Recognize and record the actual modifier + switch( format[index]) { + case 'c' : + if ( lmod == 'l') { + pformatList[numFormats] = FMT_WCHAR; // store the format character + } else { + pformatList[numFormats] = FMT_CHAR; + } + numFormats++; + index++; // skip the format character + break; + + case 'd' : case 'i' : // signed + case 'o' : case 'u' : // unsigned + case 'x' : case 'X' : // unsigned + if ( lmod == 'H') { + pformatList[numFormats] = FMT_CHAR; // store the format character + } else if ( lmod == 'l') { + pformatList[numFormats] = FMT_LONG; // store the format character + } else if ( lmod == 'h') { + pformatList[numFormats] = FMT_SHORT; // store the format character + } else{ + pformatList[numFormats] = FMT_INT; + } + numFormats++; + index++; // skip the format character + break; + + case 'e' : case 'E' : + case 'f' : case 'F' : + case 'g' : case 'G' : + case 'a' : case 'A' : + if ( lmod == 'L') { + pformatList[numFormats] = FMT_LDOUBLE; // store the format character + } else{ + pformatList[numFormats] = FMT_DOUBLE; + } + numFormats++; + index++; // skip the format character + break; + + case 's' : + if ( lmod == 'l' || lmod == 'L') { + pformatList[numFormats] = FMT_WSTRING; // store the format character + } else { + pformatList[numFormats] = FMT_STRING; + } + numFormats++; + index++; // skip the format character + break; + + case 'p' : + pformatList[numFormats] = FMT_VOID; + numFormats++; + index++; // skip the format character + break; + + case 'n' : + if ( lmod == 'H') { + pformatList[numFormats] = FMT_PCHAR; // store the format character + } else if ( lmod == 'l') { + pformatList[numFormats] = FMT_PLONG; // store the format character + } else if ( lmod == 'h') { + pformatList[numFormats] = FMT_PSHORT; // store the format character + } else{ + pformatList[numFormats] = FMT_PINT; + } + numFormats++; + index++; // skip the format character + break; + case 'm' : + // Does not represent an argument in the call stack + index++; // skip the format character + continue; + default: + printf("failed to recognize format string ["); + for (;start<index; start++) { printf("%c", format[start]); } + puts("]"); + break; + } + } else { + index++; // move past this character + } + } + + return numFormats; +} + +unsigned int +check_integer_format(const char format) +{ + unsigned int retValue = 0; // default failure + switch( format) { + case FMT_CHAR : + case FMT_SHORT : + case FMT_INT : + retValue = 1; + break; + } + return retValue; +} + + + +inline int snprintf_s_i(char *dest, rsize_t dmax, const char *format, int a) +{ + char pformatList[MAX_FORMAT_ELEMENTS]; + unsigned int index = 0; + + // Determine the number of format options in the format string + unsigned int nfo = parse_format(format, &pformatList[0], MAX_FORMAT_ELEMENTS); + + // Check that there are not too many format options + if ( nfo != 1 ) { + dest[0] = '\0'; + return SNPRFNEGATE(ESBADFMT); + } + // Check that the format is for an integer type + if ( check_integer_format(pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + return snprintf(dest, dmax, format, a); +} + + + +inline int snprintf_s_l(char *dest, rsize_t dmax, const char *format, long a) +{ + char pformatList[MAX_FORMAT_ELEMENTS]; + unsigned int index = 0; + + // Determine the number of format options in the format string + unsigned int nfo = parse_format(format, &pformatList[0], MAX_FORMAT_ELEMENTS); + + // Check that there are not too many format options + if ( nfo != 1 ) { + dest[0] = '\0'; + return SNPRFNEGATE(ESBADFMT); + } + // Check that the format is for an long type + if ( CHK_FORMAT(FMT_LONG, pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + return snprintf(dest, dmax, format, a); +} + + +inline int snprintf_s_si(char *dest, rsize_t dmax, const char *format, char *s, int a) +{ + char pformatList[MAX_FORMAT_ELEMENTS]; + unsigned int index = 0; + + // Determine the number of format options in the format string + unsigned int nfo = parse_format(format, &pformatList[0], MAX_FORMAT_ELEMENTS); + + // Check that there are not too many format options + if ( nfo != 2 ) { + dest[0] = '\0'; + return SNPRFNEGATE(ESBADFMT); + } + // Check first format is of string type + if ( CHK_FORMAT(FMT_STRING, pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + // Check that the format is for an integer type + if ( check_integer_format(pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + return snprintf(dest, dmax, format, s, a); +} + + +inline int snprintf_s_sl(char *dest, rsize_t dmax, const char *format, char *s, long a) +{ + char pformatList[MAX_FORMAT_ELEMENTS]; + unsigned int index = 0; + + // Determine the number of format options in the format string + unsigned int nfo = parse_format(format, &pformatList[0], MAX_FORMAT_ELEMENTS); + + // Check that there are not too many format options + if ( nfo != 2 ) { + dest[0] = '\0'; + return SNPRFNEGATE(ESBADFMT); + } + // Check first format is of string type + if ( CHK_FORMAT(FMT_STRING, pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + // Check that the format is for an integer type + if ( CHK_FORMAT(FMT_LONG, pformatList[index]) == 0) { + dest[0] = '\0'; + return SNPRFNEGATE(ESFMTTYP); + } + index++; + + return snprintf(dest, dmax, format, s, a); +} diff --git a/safestringlib/safeclib/stpcpy_s.c b/safestringlib/safeclib/stpcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..e15908face4155ba6b93e070b7ebdbe04e725e8c --- /dev/null +++ b/safestringlib/safeclib/stpcpy_s.c @@ -0,0 +1,234 @@ +/*------------------------------------------------------------------ + * stpcpy_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * stpcpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * char * + * stpcpy_s(char *dest, rsize_t dmax, const char *src, errno_t *err); + * + * DESCRIPTION + * The stpcpy_s function copies the string pointed to by src + * (including the terminating null character) into the array + * pointed to by dest. All elements following the terminating + * null character (if any) written by stpcpy_s in the array + * of dmax characters pointed to by dest are nulled when + * strcpy_s returns. The function returns a pointer to the + * end of the string in dest - that is to the null terminator + * of dest - upon return. If an error occurs, NULL is returned + * and err is set to the error encountered. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the string that will be copied + * to dest + * + * err the error code upon error, or EOK if successful + * + * OUTPUT PARAMETERS + * dest updated + * err updated as follows: + * EOK successful operation, the characters in src were + * copied into dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not be greater than RSIZE_MAX_STR. + * dmax shall not equal zero. + * dmax shall be greater than strnlen_s(src, dmax). + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and destmax is greater than zero and + * not greater than RSIZE_MAX_STR, then stpcpy_s nulls dest. + * + * RETURN VALUE + * a char pointer to the terminating null at the end of dest + * + * ALSO SEE + * strcpy_s(), strcat_s(), strncat_s(), strncpy_s() + * + */ +char * +stpcpy_s(char *dest, rsize_t dmax, const char *src, errno_t *err) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("stpcpy_s: dest is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("stpcpy_s: dmax is 0", + NULL, ESZEROL); + *err = RCNEGATE(ESZEROL); + return NULL; + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("stpcpy_s: dmax exceeds max", + NULL, ESLEMAX); + *err = RCNEGATE(ESLEMAX); + return NULL; + } + + if (src == NULL) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + invoke_safe_str_constraint_handler("stpcpy_s: src is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest == src) { + /* look for the terminating null character, or return err if not found in dmax bytes */ + while (dmax > 0) { + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + *err = RCNEGATE(EOK); + return dest; + } + + dmax--; + dest++; + } + /* null terminator not found in src before end of dmax */ + handle_error(orig_dest, orig_dmax, "stpcpy_s: not enough space for src", + ESNOSPC); + *err = RCNEGATE(ESNOSPC); + return NULL; + } + + + if (dest < src) { + overlap_bumper = src; + + /* Check that the dest buffer does not overlap src buffer */ + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "stpcpy_s: " + "overlapping objects", + ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + *err = RCNEGATE(EOK); + return dest; + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + /* check that the src buffer does not run into the dest buffer - inifinite loop */ + if (src == overlap_bumper) { + /* NOTE (dmw) this condition guarantees that SRC has already been damaged! */ + handle_error(orig_dest, orig_dmax, "stpcpy_s: overlapping objects", + ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + *err = RCNEGATE(EOK); + return dest; + } + + dmax--; + dest++; + src++; + } + } + + /* + * Ran out of space in dest, and did not find the null terminator in src + */ + handle_error(orig_dest, orig_dmax, "stpcpy_s: not " + "enough space for src", + ESNOSPC); + *err = RCNEGATE(ESNOSPC); + return NULL; +} +EXPORT_SYMBOL(stpcpy_s) diff --git a/safestringlib/safeclib/stpncpy_s.c b/safestringlib/safeclib/stpncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..890002d468852f88c693e539bf6c8c207b8c07ce --- /dev/null +++ b/safestringlib/safeclib/stpncpy_s.c @@ -0,0 +1,282 @@ +/*------------------------------------------------------------------ + * stpncpy_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * stpncpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * char * + * stpncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t smax, errno_t *err); + * + * DESCRIPTION + * The stpncpy_s function copies at most smax characters from the string + * pointed to by src, including the terminating null byte ('\0'), to the + * array pointed to by dest. Exactly smax characters are written at dest. + * If the length strlen_s(src) is smaller than smax, the remaining smax + * characters in the array pointed to by dest are filled with null bytes. + * If the length strlen_s(src) is greater than or equal to smax, the string + * pointed to by dest will contain smax characters from src plus a null + * characters (dest will be null-terminated). + * + * Therefore, dmax must be at least smax+1 in order to contain the terminator. + * + * The function returns a pointer to the end of the string in dest - + * that is to the null terminator of dest. If an error occurs, + * NULL is returned and err is set to the error encountered. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest (must be at least smax+1) + * + * src pointer to the string that will be copied + * to dest + * + * smax the maximum number of characters from src to copy into dest + * + * err the error code upon error, or EOK if successful + * + * OUTPUT PARAMETERS + * dest updated + * err updated as follows: + * EOK successful operation, the characters in src were + * copied into dest and the result is null terminated, + * and dest is returned to point to the first null at end of dest. + * On error, NULL is returned and err is set to one of hte following: + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not be greater than RSIZE_MAX_STR. + * dmax shall not equal zero. + * dmax must be at least smax+1 to allow filling dest with smax characters plus NULL. + * If src and dest overlap, copying shall be stopped; destruction of src may have occurred. + * If there is a runtime-constraint violation, then: + * if dest is not a null pointer and dmax is greater than zero and + * not greater than RSIZE_MAX_STR, then stpncpy_s shall fill dest with nulls, + * if library was compiled with SAFECLIB_STR_NULL_SLACK. + * + * RETURN VALUE + * a char pointer to the terminating null at the end of dest + * or NULL pointer on error + * + * ALSO SEE + * stpcpy_s(), strcpy_s(), strcat_s(), strncat_s(), strncpy_s() + * + */ +char * +stpncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t smax, errno_t *err) +{ + rsize_t orig_dmax; + char *orig_dest; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("stpncpy_s: dest is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("stpncpy_s: src is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + dest[0] = '\0'; + return NULL; + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax is 0", + NULL, ESZEROL); + *err = RCNEGATE(ESZEROL); + return NULL; + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax exceeds max", + NULL, ESLEMAX); + *err = RCNEGATE(ESLEMAX); + return NULL; + } + + if (smax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("stpncpy_s: smax exceeds max", + NULL, ESLEMAX); + *err = RCNEGATE(ESLEMAX); + return NULL; + } + + if (dmax < (smax+1)) { + invoke_safe_str_constraint_handler("stpncpy_s: dmax too short for smax", + NULL, ESNOSPC); + *err = RCNEGATE(ESNOSPC); + dest[0] = '\0'; + return NULL; + } + + /* dmwheel1: Add check to prevent destruction of overlap into destination */ + if ((src < dest) && ((src+smax) >= dest)) { + invoke_safe_str_constraint_handler("stpncpy_s: src+smax overlaps into dest", + NULL, ESOVRLP); + *err = RCNEGATE(ESOVRLP); + dest[0] = '\0'; + return NULL; + } + + /* dmwheel1: Add check to prevent destruction of overlap into source */ + if ((dest < src) && ((dest+smax) >= src)) { + invoke_safe_str_constraint_handler("stpncpy_s: dest+smax overlaps into src", + NULL, ESOVRLP); + *err = RCNEGATE(ESOVRLP); + dest[0] = '\0'; + return NULL; + } + +#ifdef SAFECLIB_STR_NULL_SLACK + /* dmwheel1: Add check to prevent destruction of overlap into destination */ + if ((src < dest) && ((src+dmax) >= dest)) { + invoke_safe_str_constraint_handler("stpncpy_s: src+dmax overlaps into dest", + NULL, ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } + + /* dmwheel1: Add check to prevent destruction of overlap into source */ + if ((dest < src) && ((dest+dmax) >= src)) { + invoke_safe_str_constraint_handler("stpncpy_s: dest+dmax overlaps into src", + NULL, ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } +#endif + + + if (src == NULL) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + invoke_safe_str_constraint_handler("stpncpy_s: src is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest == src) { + /* look for the terminating null character, or return err if not found in dmax bytes */ + while (dmax > 0) { + if (*dest == '\0') { + /* add nulls to complete smax */ + char *filler = dest; /* don't change dest, because we need to return it */ + while (smax) { *filler = '\0'; dmax--; smax--; filler++; } +#ifdef SAFECLIB_STR_NULL_SLACK + /* null dmax slack to clear any data */ + while (dmax) { *filler = '\0'; dmax--; filler++; } +#endif + *err = RCNEGATE(EOK); + return dest; + } + dmax--; + dest++; + if (--smax == 0) { + /* we have copied smax characters, add null terminator */ + *dest = '\0'; + } + } + /* null terminator not found in src before end of dmax */ + handle_error(orig_dest, orig_dmax, "stpncpy_s: not enough space for src", + ESNOSPC); + *err = RCNEGATE(ESNOSPC); + return NULL; + } + + + /* All checks for buffer overlaps were made, just do the copies */ + while (dmax > 0) { + + *dest = *src; /* Copy the data into the destination */ + + /* Check for maximum copy from source */ + if (smax == 0) { + /* we have copied smax characters, add null terminator */ + *dest = '\0'; + } + + /* Check for end of copying */ + if (*dest == '\0') { + /* add nulls to complete smax, if fewer than smax characters + * were in src when the NULL was encountered */ + char *filler = dest; /* don't change dest, because we need to return it */ + while (smax) { *filler = '\0'; dmax--; smax--; filler++; } +#ifdef SAFECLIB_STR_NULL_SLACK + /* null dmax slack to clear any data */ + while (dmax) { *filler = '\0'; dmax--; filler++; } +#endif + *err = RCNEGATE(EOK); + return dest; + } + dmax--; + smax--; + dest++; + src++; + + } + /* + * Ran out of space in dest, and did not find the null terminator in src + */ + handle_error(orig_dest, orig_dmax, "stpncpy_s: not enough space for src", + ESNOSPC); + *err = RCNEGATE(ESNOSPC); + return NULL; +} +EXPORT_SYMBOL(stpncpy_s) diff --git a/safestringlib/safeclib/strcasecmp_s.c b/safestringlib/safeclib/strcasecmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..7293cef0c30ff2c6b4340f2bd6e755d24106d6bf --- /dev/null +++ b/safestringlib/safeclib/strcasecmp_s.c @@ -0,0 +1,144 @@ +/*------------------------------------------------------------------ + * strcasecmp_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcasecmp_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcasecmp_s(const char *dest, rsize_t dmax, + * const char *src, int *indicator) + * + * DESCRIPTION + * Case insensitive string comparison by converting + * to uppercase prior to the compare. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * indicator pointer to result indicator, greater than 0, + * equal to 0 or less than 0, if the string pointed + * to by dest is greater than, equal to or less + * than the string pointed to by src respectively. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * indicator, when the return code is OK + * >0 dest greater than src + * 0 strings the same + * <0 dest less than src + * + * EOK comparison complete + * ESNULLP pointer was null + * ESZEROL length was zero + * ESLEMAX length exceeded max + * + * ALSO SEE + * strcmp_s() + * + */ +errno_t +strcasecmp_s (const char *dest, rsize_t dmax, + const char *src, int *indicator) +{ + const unsigned char *udest = (const unsigned char *) dest; + const unsigned char *usrc = (const unsigned char *) src; + + if (indicator == NULL) { + invoke_safe_str_constraint_handler("strcasecmp_s: indicator is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *indicator = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcasecmp_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcasecmp_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcasecmp_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcasecmp_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + while (*udest && *usrc && dmax) { + + if (toupper(*udest) != toupper(*usrc)) { + break; + } + + udest++; + usrc++; + dmax--; + } + + *indicator = (toupper(*udest) - toupper(*usrc)); + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(strcasecmp_s) diff --git a/safestringlib/safeclib/strcasestr_s.c b/safestringlib/safeclib/strcasestr_s.c new file mode 100644 index 0000000000000000000000000000000000000000..52c9d2ac053bbeba4ad4506cf4e9282367a4acbf --- /dev/null +++ b/safestringlib/safeclib/strcasestr_s.c @@ -0,0 +1,180 @@ +/*------------------------------------------------------------------ + * strcasestr_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcasestr_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcasestr_s(char *dest, rsize_t dmax, + * const char *src, rsize_t slen, char **substring) + * + * DESCRIPTION + * The strcasestr_s() function locates the first occurrence of + * the substring pointed to by src which would be located in + * the string pointed to by dest. The comparison is case + * insensitive. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to be searched for the substring + * + * dmax restricted maximum length of dest string + * + * src pointer to the sub string + * + * slen maximum length of src string + * + * substring returned pointer to the substring + * + * OUTPUT PARAMETERS + * substring pointer to the substring + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor slen shall equal zero. + * Neither dmax nor slen shall be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * EOK successful operation, substring found. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESNOTFND substring not found + * + * ALSO SEE + * strstr_s(), strprefix_s() + * + */ +errno_t +strcasestr_s (char *dest, rsize_t dmax, + const char *src, rsize_t slen, char **substring) +{ + rsize_t len; + rsize_t dlen; + int i; + + if (substring == NULL) { + invoke_safe_str_constraint_handler("strcasestr_s: substring is null", + NULL, ESNULLP); + return (ESNULLP); + } + *substring = NULL; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcasestr_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcasestr_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcasestr_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcasestr_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (slen == 0) { + invoke_safe_str_constraint_handler("strcasestr_s: slen is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcasestr_s: slen exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* + * src points to a string with zero length, or + * src equals dest, return dest + */ + if (*src == '\0' || dest == src) { + *substring = dest; + return (EOK); + } + + while (*dest && dmax) { + i = 0; + len = slen; + dlen = dmax; + + while (dest[i] && dlen) { + + /* not a match, not a substring */ + if (toupper(dest[i]) != toupper(src[i])) { + break; + } + + /* move to the next char */ + i++; + len--; + dlen--; + + if (src[i] == '\0' || !len) { + *substring = dest; + return (EOK); + } + } + dest++; + dmax--; + } + + /* + * substring was not found, return NULL + */ + *substring = NULL; + return (ESNOTFND); +} +EXPORT_SYMBOL(strcasestr_s) diff --git a/safestringlib/safeclib/strcat_s.c b/safestringlib/safeclib/strcat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..16db8a79392041e16e0c3146f0dc53f56280bbd3 --- /dev/null +++ b/safestringlib/safeclib/strcat_s.c @@ -0,0 +1,232 @@ +/*------------------------------------------------------------------ + * strcat_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcat_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcat_s(char *dest, rsize_t dmax, const char *src) + * + * DESCRIPTION + * The strcat_s function appends a copy of the string pointed + * to by src (including the terminating null character) to the + * end of the string pointed to by dest. The initial character + * from src overwrites the null character at the end ofdest. + * + * All elements following the terminating null character (if + * any) written by strcat_s in the array of dmax characters + * pointed to by dest take unspecified values when strcat_s + * returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be extended by src + * if dmax allows. The string is null terminated. + * If the resulting concatenated string is less + * than dmax, the remaining slack space is nulled. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be concatenaed + * to string dest + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer + * dmax shall not equal zero + * dmax shall not be greater than RSIZE_MAX_STR + * dmax shall be greater than strnlen_s(src,m). + * Copying shall not takeplace between objects that overlap + * If there is a runtime-constraint violation, then if dest is + * not a null pointer and dmax is greater than zero and not + * greater than RSIZE_MAX_STR, then strcat_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, all the characters from src + * were appended to dest and the result in dest is + * null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max + * ESUNTERM dest not terminated + * + * ALSO SEE + * strncat_s(), strcpy_s(), strncpy_s() + * + */ +errno_t +strcat_s (char *dest, rsize_t dmax, const char *src) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcat_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcat_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcat_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcat_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + /* Find the end of dest */ + while (*dest != '\0') { + + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strcat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + dest++; + dmax--; + if (dmax == 0) { + handle_error(orig_dest, orig_dmax, "strcat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strcat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + /* Find the end of dest */ + while (*dest != '\0') { + + /* + * NOTE: no need to check for overlap here since src comes first + * in memory and we're not incrementing src here. + */ + dest++; + dmax--; + if (dmax == 0) { + handle_error(orig_dest, orig_dmax, "strcat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strcat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so null the string + */ + handle_error(orig_dest, orig_dmax, "strcat_s: not enough " + "space for src", + ESNOSPC); + + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(strcat_s) diff --git a/safestringlib/safeclib/strcmp_s.c b/safestringlib/safeclib/strcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ae3cafc889b34ba9ee39cbedce19804abc441c79 --- /dev/null +++ b/safestringlib/safeclib/strcmp_s.c @@ -0,0 +1,140 @@ +/*------------------------------------------------------------------ + * strcmp_s.c -- string compare + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcmp_s + * + * Synpsos + * #include "safe_str_lib.h" + * errno_t + * strcmp_s(const char *dest, rsize_t dmax, + * const char *src, int *indicator) + * + * DESCRIPTION + * Compares string src to string dest. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * indicator pointer to result indicator, greater than, + * equal to or less than 0, if the string pointed + * to by dest is greater than, equal to or less + * than the string pointed to by src respectively. + * + * OUTPUT PARAMETERS + * indicator updated result indicator + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * indicator, when the return code is OK + * >0 dest greater than src + * 0 strings the same + * <0 dest less than src + * + * EOK + * ESNULLP pointer was null + * ESZEROL length was zero + * ESLEMAX length exceeded max + * + * ALSO SEE + * strcasecmp_s() + * + */ +errno_t +strcmp_s (const char *dest, rsize_t dmax, + const char *src, int *indicator) +{ + if (indicator == NULL) { + invoke_safe_str_constraint_handler("strcmp_s: indicator is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *indicator = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcmp_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcmp_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcmp_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcmp_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + while (*dest && *src && dmax) { + + if (*dest != *src) { + break; + } + + dest++; + src++; + dmax--; + } + + *indicator = *dest - *src; + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(strcmp_s) diff --git a/safestringlib/safeclib/strcmpfld_s.c b/safestringlib/safeclib/strcmpfld_s.c new file mode 100644 index 0000000000000000000000000000000000000000..e7a841d75dd0a9396e9f44f39a97043aacf7b315 --- /dev/null +++ b/safestringlib/safeclib/strcmpfld_s.c @@ -0,0 +1,143 @@ +/*------------------------------------------------------------------ + * strcmpfld_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcmpfld_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcmpfld_s(const char *dest, rsize_t dmax, + * const char *src, int *indicator) + * + * DESCRIPTION + * Compares the character array pointed to by src to the character array + * pointed to by dest for dmax characters. The null terminator does not + * stop the comparison. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to character array to compare against + * + * dmax restricted maximum length of dest. The length is + * used for the comparison of src against dest. + * + * src pointer to the character array to be compared to dest + * + * indicator pointer to result indicator, greater than, equal + * to or less than 0, if the character array pointed + * to by dest is greater than, equal to or less + * than the character array pointed to by src. + * OUTPUT + * indicator updated result indicator + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * indicator, when the return code is OK + * >0 dest greater than src + * 0 strings the same + * <0 dest less than src + * + * EOK + * ESNULLP pointer was null + * ESZEROL length was zero + * ESLEMAX length exceeded max + * + * ALSO SEE + * strcpyfld_s(), strcpyfldin_s(), strcpyfldout_s() + * + */ +errno_t +strcmpfld_s (const char *dest, rsize_t dmax, + const char *src, int *indicator) +{ + if (indicator == NULL) { + invoke_safe_str_constraint_handler("strcmpfld_s: indicator is null", + NULL, ESNULLP); + return (ESNULLP); + } + *indicator = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcmpfld_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcmpfld_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcmpfld_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcmpfld_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* compare for dmax charactrers, not the null! */ + while (dmax) { + + if (*dest != *src) { + break; + } + + dest++; + src++; + dmax--; + } + + *indicator = *dest - *src; + return (EOK); +} +EXPORT_SYMBOL(strcmpfld_s) diff --git a/safestringlib/safeclib/strcpy_s.c b/safestringlib/safeclib/strcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..67f6f0370ce5f94b7f7a0bc3a7624104ee584d90 --- /dev/null +++ b/safestringlib/safeclib/strcpy_s.c @@ -0,0 +1,198 @@ +/*------------------------------------------------------------------ + * strcpy_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcpy_s(char *dest, rsize_t dmax, const char *src) + * + * DESCRIPTION + * The strcpy_s function copies the string pointed to by src + * (including the terminating null character) into the array + * pointed to by dest. All elements following the terminating + * null character (if any) written by strcpy_s in the array + * of dmax characters pointed to by dest are nulled when + * strcpy_s returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the string that will be copied + * to dest + * + * OUTPUT PARAMETERS + * dest updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not be greater than RSIZE_MAX_STR. + * dmax shall not equal zero. + * dmax shall be greater than strnlen_s(src, dmax). + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and destmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpy_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, the characters in src were + * copied into dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * ALSO SEE + * strcat_s(), strncat_s(), strncpy_s() + * + */ +errno_t +strcpy_s (char *dest, rsize_t dmax, const char *src) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcpy_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (src == NULL) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + invoke_safe_str_constraint_handler("strcpy_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dest == src) { + return RCNEGATE(EOK); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strcpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strcpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + } + + /* + * the entire src must have been copied, if not reset dest + * to null the string. + */ + handle_error(orig_dest, orig_dmax, "strcpy_s: not " + "enough space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(strcpy_s) diff --git a/safestringlib/safeclib/strcpyfld_s.c b/safestringlib/safeclib/strcpyfld_s.c new file mode 100644 index 0000000000000000000000000000000000000000..88463f1aa64d00a0720196a2befa748c02c8da57 --- /dev/null +++ b/safestringlib/safeclib/strcpyfld_s.c @@ -0,0 +1,200 @@ +/*------------------------------------------------------------------ + * strcpyfld_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcpyfld_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcpyfld_s(char *dest, rsize_t dmax, const char *src, rsize_t slen) + * + * DESCRIPTION + * The strcpyfld_s function copies slen characters from the character + * array pointed to by src into the character array pointed to by dest. + * The copy operation does not stop on the null character as the + * function copies slen characters. + * + * EXTENSION TO + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to character array that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the character array that will be copied + * to dest + * + * slen maximum length of src + * + * OUTPUT PARAMETERS + * dest updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * slen shall not equal zero. + * slen shall not exceed dmax + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and destmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpyfld_s nulls dest. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * + * ALSO SEE + * strcpyfldin_s(), strcpyfldout_s() + * + */ +errno_t +strcpyfld_s (char *dest, rsize_t dmax, const char *src, rsize_t slen) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcpyfld_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcpyfld_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcpyfld_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + if (src == NULL) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfld_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (slen == 0) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfld_s: slen is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (slen > dmax) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfld_s: src exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (slen > 0) { + + if (dest == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfld_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + *dest++ = *src++; + slen--; + dmax--; + } + + } else { + overlap_bumper = dest; + + while (slen > 0) { + + if (src == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfld_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + *dest++ = *src++; + slen--; + dmax--; + } + } + + /* null slack space in the field */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + return (EOK); +} +EXPORT_SYMBOL(strcpyfld_s) diff --git a/safestringlib/safeclib/strcpyfldin_s.c b/safestringlib/safeclib/strcpyfldin_s.c new file mode 100644 index 0000000000000000000000000000000000000000..cb2ca569ee761639c523e20f86c00c36d09f45e3 --- /dev/null +++ b/safestringlib/safeclib/strcpyfldin_s.c @@ -0,0 +1,203 @@ +/*------------------------------------------------------------------ + * strcpyfldin_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcpyfldin_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcpyfldin_s(char *dest, rsize_t dmax, + * const char *src, rsize_t slen) + * + * DESCRIPTION + * The strcpyfldin_s function copies at most slen characters from the + * null terminated string pointed to by src into the fixed character + * array pointed to by dest. The copy operation stops on the null + * character if encountered and then continues to fill the field + * with nulls up to dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to character array that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the null terminated string that will be copied + * into the character array pointed to by dest + * + * slen length of source + * + * OUTPUT PARAMETERS + * dest updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * slen shall not equal zero. + * slen shall not exceed dmax + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and dmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpyfldin_s nulls dest. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * + * ALSO SEE + * strcpyfld_s(), strcpyfldout_s(), + * + */ +errno_t +strcpyfldin_s (char *dest, rsize_t dmax, const char *src, rsize_t slen) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcpyfldin_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + if (src == NULL) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldin_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (slen == 0) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldin_s: slen is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (slen > dmax) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldin_s: slen exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0 && *src) { + + if (dest == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfldin_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + dmax--; + *dest++ = *src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0 && *src) { + + if (src == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfldin_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + dmax--; + *dest++ = *src++; + } + } + + /* + * finish filling in the field with nulls if there is slack space + */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + return (EOK); +} +EXPORT_SYMBOL(strcpyfldin_s) diff --git a/safestringlib/safeclib/strcpyfldout_s.c b/safestringlib/safeclib/strcpyfldout_s.c new file mode 100644 index 0000000000000000000000000000000000000000..740d37bb658a02b566f3e298707dbb15af528eae --- /dev/null +++ b/safestringlib/safeclib/strcpyfldout_s.c @@ -0,0 +1,205 @@ +/*------------------------------------------------------------------ + * strcpyfldout_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcpyfldout_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcpyfldout_s(char *dest, rsize_t dmax, + * const char *src, rsize_t slen) + * + * DESCRIPTION + * The strcpyfldout_s function copies slen characters from + * the character array pointed to by src into the string + * pointed to by dest. A null is included to properly + * termiante the dest string. The copy operation does not + * stop on the null character as function copies dmax + * characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the character array to be copied + * to dest and null terminated. + * + * slen the maximum number of characters that will be + * copied from the src field into the dest string. + * + * OUTPUT PARAMETERS + * dest updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * slen shall not equal zero. + * slen shall not exceed dmax + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and dmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpyfldout_s nulls dest. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * + * ALSO SEE + * strcpyfld_s(), strcpyfldin_s() + * + */ +errno_t +strcpyfldout_s (char *dest, rsize_t dmax, const char *src, rsize_t slen) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcpyfldout_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + if (src == NULL) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldout_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (slen == 0) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldout_s: slen is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (slen > dmax) { + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler("strcpyfldout_s: slen exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 1 && slen) { + + if (dest == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfldout_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + dmax--; + slen--; + *dest++ = *src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 1 && slen) { + + if (src == overlap_bumper) { + dmax = orig_dmax; + dest = orig_dest; + + /* null string to eliminate partial copy */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + invoke_safe_str_constraint_handler( + "strcpyfldout_s: overlapping objects", + NULL, ESOVRLP); + return (ESOVRLP); + } + + dmax--; + slen--; + *dest++ = *src++; + } + } + + /* null slack space */ + while (dmax) { *dest = '\0'; dmax--; dest++; } + + return (EOK); +} +EXPORT_SYMBOL(strcpyfldout_s) diff --git a/safestringlib/safeclib/strcspn_s.c b/safestringlib/safeclib/strcspn_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b3e09a36c21ca19299fb0cecf982e51d4d315732 --- /dev/null +++ b/safestringlib/safeclib/strcspn_s.c @@ -0,0 +1,165 @@ +/*------------------------------------------------------------------ + * strcspn_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strcspn_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strcspn_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t slen, rsize_t *count) + * + * DESCRIPTION + * This function computes the prefix length of the string pointed + * to by dest which consists entirely of characters that are + * excluded from the string pointed to by src. The scanning stops + * at the first null in dest or after dmax characters. The + * exclusion string is checked to the null or after slen + * characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to determine the prefix + * + * dmax restricted maximum length of string dest + * + * src pointer to exclusion string + * + * slen restricted maximum length of string src + * + * count pointer to a count variable that will be updated + * with the dest substring length + * + * OUTPUT PARAMETERS + * count updated count variable + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * count shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * EOK count + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strspn_s(), strpbrk_s(), strstr_s() + * + */ +errno_t +strcspn_s (const char *dest, rsize_t dmax, + const char *src, rsize_t slen, rsize_t *count) +{ + const char *scan2; + rsize_t smax; + + if (count== NULL) { + invoke_safe_str_constraint_handler("strcspn_s: count is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *count = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strcspn_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strcspn_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strcspn_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcspn_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (slen == 0 ) { + invoke_safe_str_constraint_handler("strcspn_s: slen is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strcspn_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + while (*dest && dmax) { + + /* + * Scanning for exclusions, so if there is a match, + * we're done! + */ + smax = slen; + scan2 = src; + while (*scan2 && smax) { + + if (*dest == *scan2) { + return RCNEGATE(EOK); + } + scan2++; + smax--; + } + + (*count)++; + dest++; + dmax--; + } + + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(strcspn_s) diff --git a/safestringlib/safeclib/strfirstchar_s.c b/safestringlib/safeclib/strfirstchar_s.c new file mode 100644 index 0000000000000000000000000000000000000000..41a1c677b599889ef8b953643255ef1deb20695d --- /dev/null +++ b/safestringlib/safeclib/strfirstchar_s.c @@ -0,0 +1,128 @@ +/*------------------------------------------------------------------ + * strfirstchar_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strfirstchar_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strfirstchar_s(char *dest, rsize_t dmax, char c, char **first) + * + * DESCRIPTION + * This function returns a pointer to the first occurrence + * of character c in dest. The scanning stops at the first null + * or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string + * + * c character to locate + * + * first returned pointer to first occurrence of c + * + * OUTPUT PARAMETERS + * first updated pointer to first occurrence of c + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * first shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * pointer to first occurence of c, NULL if not found + * + * EOK pointer to first occurrence is returned + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strlastchar_s(), strfirstdiff_s(), strfirstsame_s(), + * strlastdiff_s(), strlastsame_s(), + * + */ +errno_t +strfirstchar_s (char *dest, rsize_t dmax, char c, char **first) +{ + + if (first == NULL) { + invoke_safe_str_constraint_handler("strfirstchar_s: index is null", + NULL, ESNULLP); + return (ESNULLP); + } + *first = NULL; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strfirstchar_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strfirstchar_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strfirstchar_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + while (*dest && dmax) { + + if (*dest == c) { + *first = dest; + return (EOK); + } + dest++; + dmax--; + } + + return (ESNOTFND); +} +EXPORT_SYMBOL(strfirstchar_s) diff --git a/safestringlib/safeclib/strfirstdiff_s.c b/safestringlib/safeclib/strfirstdiff_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3d1665b95e97f6bf47da9a7bc08843063d588958 --- /dev/null +++ b/safestringlib/safeclib/strfirstdiff_s.c @@ -0,0 +1,143 @@ +/*------------------------------------------------------------------ + * strfirstdiff_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strfirstdiff_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strfirstdiff_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t *index) + * + * DESCRIPTION + * Returns the index of the first character that is different + * between dest and src. Index is valid only for OK. + * The scanning stops at the first null in dest or src, or + * after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * index pointer to returned index to first difference + * + * OUTPUT PARAMETERS + * index returned index to first difference + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * index to first difference, when the return code is OK + * + * EOK index to first diff is returned + * ESNODIFF no difference + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strfirstchar_s(), strfirstsame_s(), strlastchar_s(), + * strlastdiff_s(), strlastsame_s() + * + */ + errno_t + strfirstdiff_s (const char *dest, rsize_t dmax, + const char *src, rsize_t *index) +{ + const char *rp; + + if (index == NULL) { + invoke_safe_str_constraint_handler("strfirstdiff_s: index is null", + NULL, ESNULLP); + return (ESNULLP); + } + *index = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strfirstdiff_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strfirstdiff_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* hold reference point */ + rp = dest; + + while (*dest && *src && dmax) { + + if (*dest != *src) { + *index = dest - rp; + return (EOK); + } + dmax--; + dest++; + src++; + } + + return (ESNODIFF); +} +EXPORT_SYMBOL(strfirstdiff_s) diff --git a/safestringlib/safeclib/strfirstsame_s.c b/safestringlib/safeclib/strfirstsame_s.c new file mode 100644 index 0000000000000000000000000000000000000000..38dde7e3b2f1bc0784347f9aa3bcdb5dc0d2f6e9 --- /dev/null +++ b/safestringlib/safeclib/strfirstsame_s.c @@ -0,0 +1,146 @@ +/*------------------------------------------------------------------ + * strfirstsame_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strfirstsame_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strfirstsame_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t *index) + * + * DESCRIPTION + * Returns the index of the first character that is the + * same between dest and src. The scanning stops at the + * fisrt null in dest or src, or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * index pointer to returned index + * + * OUTPUT PARAMETERS + * index updated index + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * index to first same char, when the return code is OK + * + * EOK index to first same char is returned + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESNOTFND not found + * + * ALSO SEE + * strfirstchar_s(), strfirstdiff_s(), strlastchar_s(), + * strlastdiff_s(), strlastsame_s() + * + */ +errno_t +strfirstsame_s (const char *dest, rsize_t dmax, + const char *src, rsize_t *index) +{ + const char *rp = 0; + + if (index == NULL) { + invoke_safe_str_constraint_handler("strfirstsame_s: index is null", + NULL, ESNULLP); + return (ESNULLP); + } + *index = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strfirstsame_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strfirstsame_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strfirstsame_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strfirstsame_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* hold reference point */ + rp = dest; + + /* + * find the offset + */ + while (*dest && *src && dmax) { + + if (*dest == *src) { + *index = (uint32_t)(dest - rp); + return (EOK); + } + + dest++; + src++; + dmax--; + } + + return (ESNOTFND); +} +EXPORT_SYMBOL(strfirstsame_s) diff --git a/safestringlib/safeclib/strisalphanumeric_s.c b/safestringlib/safeclib/strisalphanumeric_s.c new file mode 100644 index 0000000000000000000000000000000000000000..73a371f539f10fd605f49710dca12e361596aacd --- /dev/null +++ b/safestringlib/safeclib/strisalphanumeric_s.c @@ -0,0 +1,120 @@ +/*------------------------------------------------------------------ + * strisalphanumeric_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strisalphanumeric_s + * + * SYNOPSIS + * #include "safe_dest_lib.h" + * bool + * strisalphanumeric_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks if the entire string contains + * alphanumerics. The scanning stops at the first null + * or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * Runtime-condestaints + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true dest is alphanumeric + * false dest is not alphanumeric or an error occurred + * + * ALSO SEE + * strisascii_s(), strisdigit_s(), strishex_s(), strislowercase_s(), + * strismixedcase_s(), strisuppercase_s() + * + */ +bool +strisalphanumeric_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: " + "dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: " + "dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strisalphanumeric_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest && dmax) { + + if (( (*dest >= '0') && (*dest <= '9') ) || + ( (*dest >= 'a') && (*dest <= 'z') ) || + ( (*dest >= 'A') && (*dest <= 'Z') )) { + dest++; + dmax--; + } else { + return (false); + } + } + + return (true); +} +EXPORT_SYMBOL(strisalphanumeric_s) diff --git a/safestringlib/safeclib/strisascii_s.c b/safestringlib/safeclib/strisascii_s.c new file mode 100644 index 0000000000000000000000000000000000000000..982a11aec0f23b1d7cf8b580f84c531b0ae3dc4f --- /dev/null +++ b/safestringlib/safeclib/strisascii_s.c @@ -0,0 +1,111 @@ +/*------------------------------------------------------------------ + * strisascii_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/* + *- + * NAME + * strisascii_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strisascii_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks if the entire string contains ascii + * characters. The scanning stops at the first null or + * at most dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true, string is ascii + * false, string contains one or more non-ascii or an error occurred + * + * ALSO SEE + * strisalphanumeric_s(), strisdigit_s(), strishex_s(), + * strislowercase_s(), strismixedcase_s(), strisuppercase_s() + *- + */ +bool +strisascii_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strisascii_s: dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strisascii_s: dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strisascii_s: dmax " + "exceeds max", + NULL, ESLEMAX); + return (false); + } + + while (*dest && dmax) { + if ((unsigned char)*dest > 127) { + return (false); + } + dest++; + dmax--; + } + + return (true); +} +EXPORT_SYMBOL(strisascii_s) diff --git a/safestringlib/safeclib/strisdigit_s.c b/safestringlib/safeclib/strisdigit_s.c new file mode 100644 index 0000000000000000000000000000000000000000..515c21d6bf2194c95fafbc598d807f95241d7f4b --- /dev/null +++ b/safestringlib/safeclib/strisdigit_s.c @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------ + * strisdigit_s + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strisdigit_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strisdigit_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks that the entire string contains digits. + * The scanning stops at the first null or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true string is digit + * false string is not digit or an error occurred + * + * ALSO SEE + * strisalphanumeric_s(), strisascii_s(), strishex_s(), + * strislowercase_s(), strismixedcase_s(), strisuppercase_s() + * + */ +bool +strisdigit_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strisdigit_s: dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strisdigit_s: dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strisdigit_s: dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest) { + + if ((*dest < '0') || (*dest > '9')) { + return (false); + } + dest++; + dmax--; + } + + return (true); +} +EXPORT_SYMBOL(strisdigit_s) diff --git a/safestringlib/safeclib/strishex_s.c b/safestringlib/safeclib/strishex_s.c new file mode 100644 index 0000000000000000000000000000000000000000..63d27f0455cff807841b4d52b2ab113af9737c2a --- /dev/null +++ b/safestringlib/safeclib/strishex_s.c @@ -0,0 +1,119 @@ +/*------------------------------------------------------------------ + * strishex_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strishex_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strishex_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks that the entire string contains + * hex characters. The scanning stops at the first null + * or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true string is hex + * false string is not hex or an error occurred + * + * ALSO SEE + * strisalphanumeric_s(), strisascii_s(), strisdigit_s(), + * strislowercase_s(), strismixedcase_s(), + * strisuppercase_s() + * + */ +bool +strishex_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strishex_s: dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strishex_s: dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strishex_s: dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest && dmax) { + + if (((*dest >= '0') && (*dest <= '9')) || + ((*dest >= 'a') && (*dest <= 'f')) || + ((*dest >= 'A') && (*dest <= 'F'))) { + dest++; + dmax--; + + } else { + return (false); + } + } + + return (true); +} +EXPORT_SYMBOL(strishex_s) diff --git a/safestringlib/safeclib/strislowercase_s.c b/safestringlib/safeclib/strislowercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3e3fbdad6628cff29481a15c75dc7612cefb08b2 --- /dev/null +++ b/safestringlib/safeclib/strislowercase_s.c @@ -0,0 +1,119 @@ +/*------------------------------------------------------------------ + * strislowercase_s.c + * + * February 2005, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strislowercase_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strislowercase_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks if entire string is lowercase. + * The scanning stops at the first null or after dmax + * characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dest shal be null terminated. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true string is lowercase + * false string is not lowercase or an error occurred + * + * ALSO SEE + * strisalphanumeric_s(), strisascii_s(), strisdigit_s(), + * strishex_s(), strismixedcase_s(), + * strisuppercase_s() + * + */ +bool +strislowercase_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strislowercase_s: " + "dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strislowercase_s: " + "dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strislowercase_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest && dmax) { + + if ((*dest < 'a') || (*dest > 'z')) { + return (false); + } + dest++; + dmax--; + } + + return (true); +} +EXPORT_SYMBOL(strislowercase_s) diff --git a/safestringlib/safeclib/strismixedcase_s.c b/safestringlib/safeclib/strismixedcase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b6ef0f93c2d5165140b7ea5d62436e946db62fb5 --- /dev/null +++ b/safestringlib/safeclib/strismixedcase_s.c @@ -0,0 +1,120 @@ +/*------------------------------------------------------------------ + * strismixedcase_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strismixedcase_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strismixedcase_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks that the entire string is mixed + * case. The scanning stops at the first null or after + * dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true string is mixed case + * false string is not mixed case or error + * + * ALSO SEE + * strisalphanumeric_s(), strisascii_s(), strisdigit_s(), + * strishex_s(), strislowercase_s(), + * strisuppercase_s() + * + */ +bool +strismixedcase_s (const char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strismixedcase_s: " + "dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strismixedcase_s: " + "dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strismixedcase_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest) { + + if (((*dest >= 'a') && (*dest <= 'z')) || + ((*dest >= 'A') && (*dest <= 'Z'))) { + dest++; + dmax--; + } else { + return (false); + } + } + + return (true); +} +EXPORT_SYMBOL(strismixedcase_s) diff --git a/safestringlib/safeclib/strispassword_s.c b/safestringlib/safeclib/strispassword_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3a3a5d22ffeb62d10ea9cfa93134e80c168d7df2 --- /dev/null +++ b/safestringlib/safeclib/strispassword_s.c @@ -0,0 +1,169 @@ +/*------------------------------------------------------------------ + * strispassword_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strispassword_s + * + * SYNOPSIS + * #include "strlib.h" + * bool + * strispassword_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function validates the make-up of a password string. + * -SAFE_STR_PASSWORD_MIN_LENGTH character minimum + * -SAFE_STR_PASSWORD_MAX_LENGTH character maximum + * -at least SAFE_STR_MIN_LOWERCASE lower case characters + * -at least SAFE_STR_MIN_UPPERCASE upper case characters + * -at least SAFE_STR_MIN_NUMBERS number + * -at least SAFE_STR_MIN_SPECIALS special + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax length of password string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * length > SAFE_STR_PASSWORD_MIN_LENGTH + * length < SAFE_STR_PASSWORD_MAX_LENGTH + * dest shall not be unterminated + * + * RETURN VALUE + * true, string has valid password makeup + * false, string does not meet requirements or an error occurred + * + * ALSO SEE + * strzero_s() + * + */ +bool +strispassword_s (const char *dest, rsize_t dmax) +{ + uint32_t cnt_all; + uint32_t cnt_lowercase; + uint32_t cnt_uppercase; + uint32_t cnt_numbers; + uint32_t cnt_specials; + + if (!dest) { + invoke_safe_str_constraint_handler("strispassword_s: " + "dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax < SAFE_STR_PASSWORD_MIN_LENGTH) { + invoke_safe_str_constraint_handler("strispassword_s: " + "dest is too short", + NULL, ESLEMIN); + return (false); + } + + if (dmax > SAFE_STR_PASSWORD_MAX_LENGTH) { + invoke_safe_str_constraint_handler("strispassword_s: " + "dest exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + cnt_all = cnt_lowercase = cnt_uppercase = 0; + cnt_numbers = cnt_specials = 0; + + while (*dest) { + + if (dmax == 0) { + invoke_safe_str_constraint_handler( + "strispassword_s: dest is unterminated", + NULL, ESUNTERM); + return (false); + } + dmax--; + + cnt_all++; + + if ((*dest >= '0') && (*dest <= '9')) { + cnt_numbers++; + + } else if ((*dest >= 'a') && (*dest <= 'z')) { + cnt_lowercase++; + + } else if ((*dest >= 'A') && (*dest <= 'Z')) { + cnt_uppercase++; + + /* allow all specials */ + } else if ((*dest >= 33) && (*dest <= 47)) { + cnt_specials++; + } else if ((*dest >= 58) && (*dest <= 64)) { + cnt_specials++; + } else if ((*dest >= 91) && (*dest <= 94)) { + cnt_specials++; + } else if ((*dest >= 95) && (*dest <= 96)) { + cnt_specials++; + } else if ((*dest >= 123) && (*dest <= 126)) { + cnt_specials++; + + } else { + /* illegal char in password string */ + return (false); + } + dest++; + } + + if (cnt_all < SAFE_STR_PASSWORD_MAX_LENGTH && + cnt_numbers >= SAFE_STR_MIN_NUMBERS && + cnt_lowercase >= SAFE_STR_MIN_LOWERCASE && + cnt_uppercase >= SAFE_STR_MIN_UPPERCASE && + cnt_specials >= SAFE_STR_MIN_SPECIALS ) { + return (true); + } else { + return (false); + } +} +EXPORT_SYMBOL(strispassword_s) diff --git a/safestringlib/safeclib/strisuppercase_s.c b/safestringlib/safeclib/strisuppercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d0b2497098ca838c11853b2fdf437743790e42cf --- /dev/null +++ b/safestringlib/safeclib/strisuppercase_s.c @@ -0,0 +1,118 @@ +/*------------------------------------------------------------------ + * strisuppercase_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strisuppercase_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * bool + * strisuppercase_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * This function checks if entire string is uppercase + * The scanning stops at the first null or after dmax + * characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * true string is uppercase + * false string is not uppercase or an error occurred + * + * ALSO SEE + * strisalphanumeric_s(), strisascii_s(), strisdigit_s(), + * strishex_s(), strislowercase_s(), strismixedcase_s(), + * + */ +bool +strisuppercase_s (const char *dest, rsize_t dmax) +{ + + if (!dest) { + invoke_safe_str_constraint_handler("strisuppercase_s: " + "dest is null", + NULL, ESNULLP); + return (false); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strisuppercase_s: " + "dmax is 0", + NULL, ESZEROL); + return (false); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strisuppercase_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (false); + } + + if (*dest == '\0') { + return (false); + } + + while (*dest) { + + if ((*dest < 'A') || (*dest > 'Z')) { + return (false); + } + dest++; + dmax--; + } + + return (true); +} +EXPORT_SYMBOL(strisuppercase_s) diff --git a/safestringlib/safeclib/strlastchar_s.c b/safestringlib/safeclib/strlastchar_s.c new file mode 100644 index 0000000000000000000000000000000000000000..36f63896f385f438b0544b7610f7309abeb575a7 --- /dev/null +++ b/safestringlib/safeclib/strlastchar_s.c @@ -0,0 +1,132 @@ +/*------------------------------------------------------------------ + * strlastchar_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strlastchar_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strlastchar_s(char *dest, rsize_t dmax, char c, char **last) + * + * DESCRIPTION + * Returns a pointer to the last occurrence of character c in + * dest. The scanning stops at the first null or after dmax + * characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax restricted maximum length of string + * + * c character to locate + * + * last returned pointer to last occurrence + * + * OUTPUT PARAMETERS + * last updated pointer to last occurrence + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * last shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * pointer to the last occurrence, when the return code is OK + * + * EOK pointer to the last occurence is returned + * ESNOTFND c not found in dest + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strfirstchar_s(), strfirstdiff_s(), strfirstsame_s(), + * strlastdiff_s(), strlastsame_s() + * + */ +errno_t +strlastchar_s(char *dest, rsize_t dmax, char c, char **last) +{ + if (last == NULL) { + invoke_safe_str_constraint_handler("strlastchar_s: last is null", + NULL, ESNULLP); + return (ESNULLP); + } + *last = NULL; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strlastchar_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strlastchar_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strlastchar_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + while (*dest && dmax) { + + if (*dest == c) { + *last = dest; + } + + dest++; + dmax--; + } + + if (*last == NULL) { + return (ESNOTFND); + } else { + return (EOK); + } +} +EXPORT_SYMBOL(strlastchar_s) diff --git a/safestringlib/safeclib/strlastdiff_s.c b/safestringlib/safeclib/strlastdiff_s.c new file mode 100644 index 0000000000000000000000000000000000000000..43ad28613227a4989a9315750f190b376b4d64d4 --- /dev/null +++ b/safestringlib/safeclib/strlastdiff_s.c @@ -0,0 +1,152 @@ +/*------------------------------------------------------------------ + * strlastdiff_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strlastdiff_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strlastdiff_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t *index) + * + * DESCRIPTION + * Returns the index of the last character that is different + * between dest and src. Index is valid only for EOK. + * The scanning stops at the first null in dest or src, or + * after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * index pointer to returned index of last difference + * + * OUTPUT PARAMETERS + * index updated index of last difference + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * index to last difference, when the return code is OK + * + * EOK index to last diff is returned + * ESNODIFF no difference + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strfirstchar_s(), strfirstdiff_s(), strfirstsame_s(), + * strlastchar_s(), strlastsame_s() + * + */ +errno_t +strlastdiff_s(const char *dest, rsize_t dmax, + const char *src, rsize_t *index) +{ + const char *rp; + bool there_is_a_diff = false; + + if (index == NULL) { + invoke_safe_str_constraint_handler("strlastdiff_s: index is null", + NULL, ESNULLP); + return (ESNULLP); + } + *index = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strlastdiff_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strlastdiff_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strlastdiff_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strlastdiff_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* hold reference point */ + rp = dest; + + /* + * find the last diff + */ + while (*dest && *src && dmax) { + + if (*dest != *src) { + there_is_a_diff = true; + *index = dest - rp; + } + + dest++; + src++; + dmax--; + } + + if (there_is_a_diff) { + return (EOK); + } else { + return (ESNODIFF); + } +} +EXPORT_SYMBOL(strlastdiff_s) diff --git a/safestringlib/safeclib/strlastsame_s.c b/safestringlib/safeclib/strlastsame_s.c new file mode 100644 index 0000000000000000000000000000000000000000..7f8dd5bad1c35cb367ece774d282f9d14c78ec7f --- /dev/null +++ b/safestringlib/safeclib/strlastsame_s.c @@ -0,0 +1,153 @@ +/*------------------------------------------------------------------ + * strlastsame_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strlastsame_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strlastsame_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t *index) + * + * DESCRIPTION + * Returns the index of the last character that is the + * same between dest and src. The scanning stops at the + * first nul in dest or src, or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of string dest + * + * src pointer to the string to be compared to dest + * + * index pointer to returned index + * + * OUTPUT PARAMETERS + * index updated index + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall not be a null pointer. + * indicator shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * index to last same char, when the return code is OK + * + * EOK index to last same char is returned + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESNOTFND not found + * ESUNTERM string unterminated + * + * ALSO SEE + * strfirstchar_s(), strfirstdiff_s(), strfirstsame_s(), + * strlastchar_s(), strlastdiff_s() + * + */ +errno_t +strlastsame_s (const char *dest, rsize_t dmax, + const char *src, rsize_t *index) +{ + const char *rp; + bool similarity; + + if (index == NULL) { + invoke_safe_str_constraint_handler("strlastsame_s: index is null", + NULL, ESNULLP); + return (ESNULLP); + } + *index = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strlastsame_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strlastsame_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strlastsame_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strlastsame_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* hold reference point */ + rp = dest; + + /* + * find the last offset + */ + similarity = false; + while (*dest && *src && dmax) { + + if (*dest == *src) { + similarity = true; + *index = (uint32_t)(dest - rp); + } + + dest++; + src++; + dmax--; + } + + if (similarity) { + return (EOK); + } else { + return (ESNOTFND); + } +} +EXPORT_SYMBOL(strlastsame_s) diff --git a/safestringlib/safeclib/strljustify_s.c b/safestringlib/safeclib/strljustify_s.c new file mode 100644 index 0000000000000000000000000000000000000000..77f9787907faae490b6bd070becf4a7d641d9cf0 --- /dev/null +++ b/safestringlib/safeclib/strljustify_s.c @@ -0,0 +1,160 @@ +/*------------------------------------------------------------------ + * strljustify_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reseved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strljustify_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strljustify_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * Removes beginning whitespace from the string pointed to by + * dest by shifting the text left over writting the beginning + * whitespace, left justifying the text. The left justified + * text is null terminated. + * + * The text is shifted so the original pointer can continue + * to be used. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to left justify + * + * dmax restricted maximum length of string + * + * OUTPUT PARAMETERS + * dest left justified + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * dest shall be null terminated + * + * RETURN VALUE + * EOK + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESUNTERM dest was not null terminated + * + * ALSO SEE + * strremovews_s(), + * + */ +errno_t +strljustify_s (char *dest, rsize_t dmax) +{ + char *orig_dest; + rsize_t orig_dmax; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strljustify_s_s: " + "dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strljustify_s_s: " + "dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strljustify_s_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* + * corner case, a dmax of one allows only for a null + */ + if (*dest == '\0' || dmax <= RSIZE_MIN_STR) { + *dest = '\0'; + return (EOK); + } + + orig_dmax = dmax; + orig_dest = dest; + + /* + * scan the string to be sure it is properly terminated + */ + while (*dest) { + if (dmax == 0) { + while (orig_dmax) { *orig_dest++ = '\0'; orig_dmax--; } + + invoke_safe_str_constraint_handler( + "strljustify_s: dest is unterminated", + NULL, ESUNTERM); + return (ESUNTERM); + } + dmax--; + dest++; + } + + /* + * find first non-white space char + */ + dest = orig_dest; + while ((*dest == ' ') || (*dest == '\t')) { + dest++; + } + + /* + * shift text, removing spaces, to left justify + */ + if (orig_dest != dest && *dest) { + while (*dest) { + *orig_dest++ = *dest; + *dest++ = ' '; + } + *orig_dest = '\0'; + } + + return (EOK); +} +EXPORT_SYMBOL(strljustify_s) diff --git a/safestringlib/safeclib/strncat_s.c b/safestringlib/safeclib/strncat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..9b73da633b551b18a7fc20761310adf334f20eaf --- /dev/null +++ b/safestringlib/safeclib/strncat_s.c @@ -0,0 +1,265 @@ +/*------------------------------------------------------------------ + * strncat_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strncat_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strncat_s(char *dest, rsize_t dmax, const char *src, rsize_t slen) + * + * DESCRIPTION + * The strncat_s function appends a copy of the string pointed + * to by src (including the terminating null character) to the + * end of the string pointed to by dest. The initial character + * from src overwrites the null character at the end of dest. + * + * All elements following the terminating null character (if + * any) written by strncat_s in the array of dmax characters + * pointed to by dest take unspecified values when strncat_s returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be extended by src + * if dmax allows. The string is null terminated. + * If the resulting concatenated string is less + * than dmax, the remaining slack space is nulled. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be concatenaed + * to string dest + * + * slen maximum characters to append + * + * OUTPUT PARAMETERS + * dest updated string + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer + * dmax shall not equal zero + * dmax shall not be greater than RSIZE_STR_MAX + * dmax shall be greater than strnlen_s(src,m). + * Copying shall not takeplace between objects that overlap + * If there is a runtime-constraint violation, then if dest is + * not a null pointer and dmax is greater than zero and not + * greater thanRSIZE_MAX, then strncat_s sets dest[0] to the + * null character. + * + * RETURN VALUE + * EOK successful operation, all the characters from src + * were appended to dest and the result in dest is + * null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESUNTERM dest not terminated + * + * + */ +errno_t +strncat_s (char *dest, rsize_t dmax, const char *src, rsize_t slen) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strncat_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strncat_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strncat_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strncat_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strncat_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + /* Find the end of dest */ + while (*dest != '\0') { + + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + dest++; + dmax--; + if (dmax == 0) { + handle_error(orig_dest, orig_dmax, "strncat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * Copying truncated before the source null is encountered + */ + if (slen == 0) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null remaining string */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + /* Find the end of dest */ + while (*dest != '\0') { + + /* + * NOTE: no need to check for overlap here since src comes first + * in memory and we're not incrementing src here. + */ + dest++; + dmax--; + if (dmax == 0) { + handle_error(orig_dest, orig_dmax, "strncat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * Copying truncated + */ + if (slen == 0) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null remaining string */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so the string will be nulled. + */ + handle_error(orig_dest, orig_dmax, "strncat_s: not enough " + "space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(strncat_s) diff --git a/safestringlib/safeclib/strncpy_s.c b/safestringlib/safeclib/strncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..1fcdf6f56e33c472c25eb3a49e4621fbd7fb4040 --- /dev/null +++ b/safestringlib/safeclib/strncpy_s.c @@ -0,0 +1,238 @@ +/*------------------------------------------------------------------ + * strncpy_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/* + * NAME + * strncpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t slen) + * + * DESCRIPTION + * The strncpy_s function copies not more than slen successive characters + * (characters that follow a null character are not copied) from the + * array pointed to by src to the array pointed to by dest. If no null + * character was copied from src, then dest[n] is set to a null character. + * + * All elements following the terminating null character (if any) + * written by strncpy_s in the array of dmax characters pointed to + * by dest take on the null value when strncpy_s returns. + * + * Specicified in: + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * The resulting string is null terminated. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be copied + * to string dest + * + * slen the maximum number of characters to copy from src + * + * OUTPUT PARAMETERS + * dest updated with src string + * + * RUNTIME CONSTRAINTS + * Neither dmax nor slen shall be equal to zero. + * Neither dmax nor slen shall be equal zero. + * Neither dmax nor slen shall be greater than RSIZE_MAX_STR. + * If slen is either greater than or equal to dmax, then dmax + * should be more than strnlen_s(src,dmax) + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and dmax greater than RSIZE_MAX_STR, + * then strncpy_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, the characters in src were copied + * to dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * ALSO SEE + * strcat_s(), strncat_s(), strcpy_s() + *- + */ +errno_t +strncpy_s (char *dest, rsize_t dmax, const char *src, rsize_t slen) +{ + rsize_t orig_dmax; + char *orig_dest; + const char *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strncpy_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strncpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strncpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (src == NULL) { + handle_error(orig_dest, orig_dmax, "strncpy_s: " + "src is null", + ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (slen == 0) { + handle_error(orig_dest, orig_dmax, "strncpy_s: " + "slen is zero", + ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + handle_error(orig_dest, orig_dmax, "strncpy_s: " + "slen exceeds max", + ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strncpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + if (slen == 0) { + /* + * Copying truncated to slen chars. Note that the TR says to + * copy slen chars plus the null char. We null the slack. + */ +#ifdef SAFECLIB_STR_NULL_SLACK + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_error(orig_dest, orig_dmax, "strncpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + if (slen == 0) { + /* + * Copying truncated to slen chars. Note that the TR says to + * copy slen chars plus the null char. We null the slack. + */ +#ifdef SAFECLIB_STR_NULL_SLACK + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so zero the string + */ + handle_error(orig_dest, orig_dmax, "strncpy_s: not enough " + "space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(strncpy_s) diff --git a/safestringlib/safeclib/strnlen_s.c b/safestringlib/safeclib/strnlen_s.c new file mode 100644 index 0000000000000000000000000000000000000000..659755106707dd524aa96b706af9505154f90f45 --- /dev/null +++ b/safestringlib/safeclib/strnlen_s.c @@ -0,0 +1,112 @@ +/*------------------------------------------------------------------ + * strnlen_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strnlen_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * rsize_t + * strnlen_s(const char *dest, rsize_t dmax) + * + * DESCRIPTION + * The strnlen_s function computes the length of the string pointed + * to by dest. + * + * SPECIFIED IN + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax restricted maximum length. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer + * dmax shall not be greater than RSIZE_MAX_STR + * dmax shall not equal zero + * + * RETURN VALUE + * The function returns the string length, excluding the terminating + * null character. If dest is NULL, then strnlen_s returns 0. + * + * Otherwise, the strnlen_s function returns the number of characters + * that precede the terminating null character. If there is no null + * character in the first dmax characters of dest then strnlen_s returns + * dmax. At most the first dmax characters of dest are accessed + * by strnlen_s. + * + * ALSO SEE + * strnterminate_s() + * + */ +rsize_t +strnlen_s (const char *dest, rsize_t dmax) +{ + rsize_t count; + + if (dest == NULL) { + return RCNEGATE(0); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strnlen_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(0); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strnlen_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(0); + } + + count = 0; + while (*dest && dmax) { + count++; + dmax--; + dest++; + } + + return RCNEGATE(count); +} +EXPORT_SYMBOL(strnlen_s) diff --git a/safestringlib/safeclib/strnterminate_s.c b/safestringlib/safeclib/strnterminate_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ab4f8d53332160d80f2531b69b20480bec3328db --- /dev/null +++ b/safestringlib/safeclib/strnterminate_s.c @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------ + * strnterminate_s.c + * + * February 2011, Bo Berry + * + * Copyright (c) 2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strnterminate_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * rsize_t + * strnterminate_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * The strnterminate_s function will terminate the string if a + * null is not encountered before dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest - pointer to string + * + * dmax - restricted maximum length + * + * OUTPUT PARAMETERS + * dest - dest is terminated if needed + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer + * dmax shall not be greater than RSIZE_MAX_STR + * dmax shall not equal zero + * + * RETURN VALUE + * The function returns a terminated string. If a null is not + * encountered prior to dmax characters, the dmax character is + * set to null terminating the string. The string length is + * also returned. + * + * ALSO SEE + * strnlen_s() + * + */ +rsize_t +strnterminate_s (char *dest, rsize_t dmax) +{ + rsize_t count; + + if (dest == NULL) { + return (0); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strnterminate_s: dmax is 0", + NULL, ESZEROL); + return (0); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strnterminate_s: dmax exceeds max", + NULL, ESLEMAX); + return (0); + } + + count = 0; + while (dmax > 1) { + if (*dest) { + count++; + dmax--; + dest++; + } else { + break; + } + } + *dest = '\0'; + + return (count); +} +EXPORT_SYMBOL(strnterminate_s) diff --git a/safestringlib/safeclib/strpbrk_s.c b/safestringlib/safeclib/strpbrk_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ec7e2ee6172b4d1241386b2099dce0ead37f1553 --- /dev/null +++ b/safestringlib/safeclib/strpbrk_s.c @@ -0,0 +1,163 @@ +/*------------------------------------------------------------------ + * strpbrk_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strpbrk_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strpbrk_s(char *dest, rsize_t dmax, + * char *src, rsize_t slen, char **first) + * + * DESCRIPTION + * Returns a pointer, first, to the first ocurrence of any character + * in src which is contained in dest. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax restricted maximum length of string dest + * + * src pointer to string + * + * slen restricted length of string src + * + * first returned pointer to first occurence + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * first shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * pointer to the first ocurrence of any character + * contained in src + * + * EOK count + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strfirstchar_s(), strlastchar_s(), strfirstdiff_s(), + * strfirstsame_s(), strlastdiff_s(), strlastsame_s() + * + */ +errno_t +strpbrk_s (char *dest, rsize_t dmax, + char *src, rsize_t slen, char **first) +{ + char *ps; + rsize_t len; + + if (first == NULL) { + invoke_safe_str_constraint_handler("strpbrk_s: count is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *first = NULL; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strpbrk_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strpbrk_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strpbrk_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strpbrk_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (slen == 0 ) { + invoke_safe_str_constraint_handler("strpbrk_s: slen is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strpbrk_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* + * look for a matching char in the substring src + */ + while (*dest && dmax) { + + ps = src; + len = slen; + while (*ps) { + + /* check for a match with the substring */ + if (*dest == *ps) { + *first = dest; + return RCNEGATE(EOK); + } + ps++; + len--; + } + dest++; + dmax--; + } + + return RCNEGATE(ESNOTFND); +} +EXPORT_SYMBOL(strpbrk_s) diff --git a/safestringlib/safeclib/strprefix_s.c b/safestringlib/safeclib/strprefix_s.c new file mode 100644 index 0000000000000000000000000000000000000000..fd34c1f97b003b02ab428f0c7f9e9cff37ea0477 --- /dev/null +++ b/safestringlib/safeclib/strprefix_s.c @@ -0,0 +1,128 @@ +/*------------------------------------------------------------------ + * strprefix_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strprefix_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strprefix_s(const char *dest, rsize_t dmax, const char *src) + * + * DESCRIPTION + * Determines if the prefix pointed to by src is at the + * beginning of string pointed to by dest. The prefix + * must be a complete match in dest. Useful for command + * or user input parsing. The scanning stops at the first + * null in dest or src, or after dmax characters. + * + * EXTENSION TO + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to compare against + * + * dmax restricted maximum length of dest + * + * src pointer to the prefix + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * EOK successful operation, prefix present in dest + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESNOTFND prefix not found in dest + * + * ALSO SEE + * strspn_s(), strcspn_s(), strpbrk_s(), strstr_s() + * + */ +errno_t +strprefix_s (const char *dest, rsize_t dmax, const char *src) +{ + if (dest == NULL) { + invoke_safe_str_constraint_handler("strprefix_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strprefix_s: src is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strprefix_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strprefix_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + if (*src == '\0') { + return (ESNOTFND); + } + + while (*src && dmax) { + + if (*dest != *src) { + return (ESNOTFND); + } + + dmax--; + dest++; + src++; + } + + return (EOK); +} +EXPORT_SYMBOL(strprefix_s) diff --git a/safestringlib/safeclib/strremovews_s.c b/safestringlib/safeclib/strremovews_s.c new file mode 100644 index 0000000000000000000000000000000000000000..1779f79a3ce5f1b0502f49998da6b65cb957f991 --- /dev/null +++ b/safestringlib/safeclib/strremovews_s.c @@ -0,0 +1,164 @@ +/*------------------------------------------------------------------ + * strremovews_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights resevered. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strremovews_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strremovews_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * Removes beginning and trailing whitespace from the string pointed to by + * dest by shifting the text left over writting the beginning whitespace. + * The shifted-trimmed text is null terminated. + * + * The text is shifted so the original pointer can continue to be used. This + * is useful when the memory was malloc'ed and will need to be freed. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to remove whitespace + * + * dmax restricted maximum length of string + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * dest shall be null terminated + * + * RETURN VALUE + * EOK + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESUNTERM dest was not null terminated + * + * SEE ALSO + * strljustify_s(), + * + */ +errno_t +strremovews_s (char *dest, rsize_t dmax) +{ + char *orig_dest; + char *orig_end; + rsize_t orig_dmax; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strremovews_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strremovews_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strremovews_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* + * corner case, a dmax of one requires a null + */ + if (*dest == '\0' || dmax <= RSIZE_MIN_STR) { + *dest = '\0'; + return (EOK); + } + + orig_dest = dest; + orig_dmax = dmax; + + /* + * scan the string to be sure it is properly terminated + */ + while (*dest) { + if (dmax == 0) { + while (orig_dmax) { *orig_dest++ = '\0'; orig_dmax--; } + + invoke_safe_str_constraint_handler( + "strremovews_s: dest is unterminated", + NULL, ESUNTERM); + return (ESUNTERM); + } + dmax--; + dest++; + } + + /* + * find first non-white space char + */ + orig_end = dest-1; + dest = orig_dest; + while ((*dest == ' ') || (*dest == '\t')) { + dest++; + } + + /* + * shift the text over the leading spaces + */ + if (orig_dest != dest && *dest) { + while (*dest) { + *orig_dest++ = *dest; + *dest++ = ' '; + } + *dest = '\0'; + } + + /* + * strip trailing whitespace + */ + dest = orig_end; + while ((*dest == ' ') || (*dest == '\t')) { + *dest = '\0'; + dest--; + } + + return (EOK); +} +EXPORT_SYMBOL(strremovews_s) diff --git a/safestringlib/safeclib/strspn_s.c b/safestringlib/safeclib/strspn_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d75750353d391b048cb404e5cd738495c10ee19c --- /dev/null +++ b/safestringlib/safeclib/strspn_s.c @@ -0,0 +1,170 @@ +/*------------------------------------------------------------------ + * strspn_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strspn_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strspn_s(const char *dest, rsize_t dmax, + * const char *src, rsize_t slen, rsize_t *count) + * + * DESCRIPTION + * This function computes the prefix length of the string + * pointed to by dest which consists entirely of characters + * that are included from the string pointed to by src. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to determine the prefix + * + * dmax restricted maximum length of string dest + * + * src pointer to exclusion string + * + * slen restricted maximum length of string src + * + * count pointer to a count variable that will be updated + * with the dest substring length + * + * OUTPUT PARAMETERS + * count updated count + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * count shall not be a null pointer. + * dmax shall not be 0 + * dmax shall not be greater than RSIZE_MAX_STR + * + * RETURN VALUE + * EOK count + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strcspn_s(), strpbrk_s(), strstr_s(), strprefix_s() + * + */ +errno_t +strspn_s (const char *dest, rsize_t dmax, + const char *src, rsize_t slen, rsize_t *count) +{ + const char *scan2; + rsize_t smax; + bool match_found; + + if (count== NULL) { + invoke_safe_str_constraint_handler("strspn_s: count is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *count = 0; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strspn_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strspn_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0 ) { + invoke_safe_str_constraint_handler("strspn_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strspn_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (slen == 0 ) { + invoke_safe_str_constraint_handler("strspn_s: slen is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strspn_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + while (*dest && dmax) { + + /* + * Scan the entire src string for each dest character, counting + * inclusions. + */ + match_found = false; + smax = slen; + scan2 = src; + while (*scan2 && smax) { + + if (*dest == *scan2) { + match_found = true; + break; + } + scan2++; + smax--; + } + + if (match_found) { + (*count)++; + } else { + break; + } + + dest++; + dmax--; + } + + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(strspn_s) diff --git a/safestringlib/safeclib/strstr_s.c b/safestringlib/safeclib/strstr_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0dff4d4652283ca9b9f8e12a5dae5d3dc19e8718 --- /dev/null +++ b/safestringlib/safeclib/strstr_s.c @@ -0,0 +1,179 @@ +/*------------------------------------------------------------------ + * strstr_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strstr_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strstr_s(char *dest, rsize_t dmax, + * const char *src, rsize_t slen, char **substring) + * + * DESCRIPTION + * The strstr_s() function locates the first occurrence of the + * substring pointed to by src which would be located in the + * string pointed to by dest. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to be searched for the substring + * + * dmax restricted maximum length of dest string + * + * src pointer to the sub string + * + * slen the maximum number of characters to copy from src + * + * substring the returned substring pointer + * + * OUTPUT PARAMETERS + * substring returned substring pointer + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Meither dmax nor slen shall be zero. + * Neither dmax nor slen shall be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * EOK successful operation, substring found. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESNOTFND substring not found + * + * ALSO SEE + * strprefix_s(), strspn_s(), strcspn_s(), strpbrk_s() + * + */ +errno_t +strstr_s (char *dest, rsize_t dmax, + const char *src, rsize_t slen, char **substring) +{ + rsize_t len; + rsize_t dlen; + int i; + + if (substring == NULL) { + invoke_safe_str_constraint_handler("strstr_s: substring is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + *substring = NULL; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("strstr_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strstr_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strstr_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strstr_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (slen == 0) { + invoke_safe_str_constraint_handler("strstr_s: slen is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strstr_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* + * src points to a string with zero length, or + * src equals dest, return dest + */ + if (*src == '\0' || dest == src) { + *substring = dest; + return RCNEGATE(EOK); + } + + while (*dest && dmax) { + i = 0; + len = slen; + dlen = dmax; + + while (src[i] && dlen) { + + /* not a match, not a substring */ + if (dest[i] != src[i]) { + break; + } + + /* move to the next char */ + i++; + len--; + dlen--; + + if (src[i] == '\0' || !len) { + *substring = dest; + return RCNEGATE(EOK); + } + } + dest++; + dmax--; + } + + /* + * substring was not found, return NULL + */ + *substring = NULL; + return RCNEGATE(ESNOTFND); +} +EXPORT_SYMBOL(strstr_s) diff --git a/safestringlib/safeclib/strtok_s.c b/safestringlib/safeclib/strtok_s.c new file mode 100644 index 0000000000000000000000000000000000000000..2b5f29a2f9841905c133fc151581089a8c6e4d21 --- /dev/null +++ b/safestringlib/safeclib/strtok_s.c @@ -0,0 +1,325 @@ +/*------------------------------------------------------------------ + * strtok_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strtok_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * char * + * strtok_s(char *dest, rsize_t *dmax, char *src, char **ptr) + * + * DESCRIPTION + * A sequence of calls to the strtok_s function breaks the string + * pointed to by dest into a sequence of tokens, each of which is + * delimited by a character from the string pointed to by src. The + * fourth argument points to a caller-provided char pointer into + * which the strtok_s function stores information necessary for + * it to continue scanning the same string. + * + * The first call in a sequence has a non-null first argument and + * dmax points to an object whose value is the number of elements + * in the character array pointed to by the first argument. The + * first call stores an initial value in the object pointed to by + * ptr and updates the value pointed to by dmax to reflect the + * number of elements that remain in relation to ptr. Subsequent + * calls in the sequence have a null first argument and the objects + * pointed to by dmax and ptr are required to have the values + * stored by the previous call in the sequence, which are then + * updated. The separator string pointed to by src may be different + * from call to call. + * + * The first call in the sequence searches the string pointed to + * by dest for the first character that is not contained in the + * current separator string pointed to by src. If no such character + * is found, then there are no tokens in the string pointed to + * by dest and the strtok_s function returns a null pointer. If + * such a character is found, it is the start of the first token. + * + * The strtok_s function then searches from there for the first + * character in dest that is contained in the current separator + * string. If no such character is found, the current token + * extends to the end of the string pointed to by dest, and + * subsequent searches in the same string for a token return + * a null pointer. If such a character is found, it is + * overwritten by a null character, which terminates the + * current token. + * + * In all cases, the strtok_s function stores sufficient information + * in the pointer pointed to by ptr so that subsequent calls, + * with a null pointer for dest and the unmodified pointer value + * for ptr, shall start searching just past the element overwritten + * by a null character (if any). + * + * SPECIFIED IN + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string to tokenize + * + * dmax restricted maximum length of dest string + * + * src pointer to delimiter string (len < 255) + * + * ptr returned pointer to token + * + * OUTPUT PARAMETERS + * dmax update length + * + * ptr update pointer to token + * + * RUNTIME CONSTRAINTS + * src shall not be a null pointer. + * ptr shall not be a null pointer. + * dmax shall not be a null pointer. + * *dmax shall not be 0. + * + * If dest is a null pointer, then *ptr shall not be a null pointer. + * + * dest must not be unterminated. + * + * The value of *dmax shall not be greater than RSIZE_MAX_STR. The + * end of the token found shall occur within the first *dmax + * characters of dest for the first call, and shall occur within + * the first *dmax characters of where searching resumes on + * subsequent calls. + * + * RETURN VALUE + * The strtok_s function returns a pointer to the first character + * of a token; or a null pointer if there is no token or there + * is a runtime-constraint violation. + * + * EOK + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESUNTERM unterminated string + * + * EXAMPLES + * [1] Sequencial strtok_s() calls to tokenize a string + * + * String to tokenize str1 = ",.:*one,two;three,;four*.*.five-six***" + * len=38 + * String of delimiters str2 = ",.;*" + * + * p2tok = strtok_s(str1, &len, str2, &p2str); + * token -one- remaining -two;three,;four*.*.five-six***- len=30 + * + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * token -two- remaining -three,;four*.*.five-six***- len=26 + * + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * token -three- remaining -;four*.*.five-six***- len=20 + * + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * token -four- remaining -.*.five-six***- len=14 + * + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * token -five-six- remaining -**- len=2 + * + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * token -(null)- remaining -**- len=0 + * + * + * [2] While loop with same entry data as [1] + * + * p2tok = str1; + * while (p2tok && len) { + * p2tok = strtok_s(NULL, &len, str2, &p2str); + * printf(" token -- remaining -- len=0 \n", + * p2tok, p2str, (int)len ); + * } + * + *- + */ +char * +strtok_s(char *dest, rsize_t *dmax, const char *src, char **ptr) +{ + +/* + * CONFIGURE: The spec does not call out a maximum for the src + * string, so one is defined here. + */ +#define STRTOK_DELIM_MAX_LEN ( 16 ) + + + const char *pt; + char *ptoken; + rsize_t dlen; + rsize_t slen; + + if (dmax == NULL) { + invoke_safe_str_constraint_handler("strtok_s: dmax is NULL", + NULL, ESNULLP); + return (NULL); + } + + if (*dmax == 0) { + invoke_safe_str_constraint_handler("strtok_s: dmax is 0", + NULL, ESZEROL); + return (NULL); + } + + if (*dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strtok_s: dmax exceeds max", + NULL, ESLEMAX); + return (NULL); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("strtok_s: src is null", + NULL, ESNULLP); + return (NULL); + } + + if (ptr == NULL) { + invoke_safe_str_constraint_handler("strtok_s: ptr is null", + NULL, ESNULLP); + return (NULL); + } + + /* if the source was NULL, use the tokenizer context */ + if (dest == NULL) { + dest = *ptr; + } + + /* + * scan dest for a delimiter + */ + dlen = *dmax; + ptoken = NULL; + while (*dest != '\0' && !ptoken) { + + if (dlen == 0) { + *ptr = NULL; + invoke_safe_str_constraint_handler( + "strtok_s: dest is unterminated", + NULL, ESUNTERM); + return (NULL); + } + + /* + * must scan the entire delimiter list + * ISO should have included a delimiter string limit!! + */ + slen = STRTOK_DELIM_MAX_LEN; + pt = src; + while (*pt != '\0') { + + if (slen == 0) { + *ptr = NULL; + invoke_safe_str_constraint_handler( + "strtok_s: src is unterminated", + NULL, ESUNTERM); + return (NULL); + } + slen--; + + if (*dest == *pt) { + ptoken = NULL; + break; + } else { + pt++; + ptoken = dest; + } + } + dest++; + dlen--; + } + + /* + * if the beginning of a token was not found, then no + * need to continue the scan. + */ + if (ptoken == NULL) { + *dmax = dlen; + return (ptoken); + } + + /* + * Now we need to locate the end of the token + */ + while (*dest != '\0') { + + if (dlen == 0) { + *ptr = NULL; + invoke_safe_str_constraint_handler( + "strtok_s: dest is unterminated", + NULL, ESUNTERM); + return (NULL); + } + + slen = STRTOK_DELIM_MAX_LEN; + pt = src; + while (*pt != '\0') { + + if (slen == 0) { + *ptr = NULL; + invoke_safe_str_constraint_handler( + "strtok_s: src is unterminated", + NULL, ESUNTERM); + return (NULL); + } + slen--; + + if (*dest == *pt) { + /* + * found a delimiter, set to null + * and return context ptr to next char + */ + *dest = '\0'; + *ptr = (dest + 1); /* return pointer for next scan */ + *dmax = dlen - 1; /* account for the nulled delimiter */ + return (ptoken); + } else { + /* + * simply scanning through the delimiter string + */ + pt++; + } + } + dest++; + dlen--; + } + + *dmax = dlen; + return (ptoken); +} +EXPORT_SYMBOL(strtok_s) + diff --git a/safestringlib/safeclib/strtolowercase_s.c b/safestringlib/safeclib/strtolowercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..20bd3ec4e5353070d8f008ffab2a810da4f6f6ee --- /dev/null +++ b/safestringlib/safeclib/strtolowercase_s.c @@ -0,0 +1,115 @@ +/*------------------------------------------------------------------ + * strtolowercase_s.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strtolowercase_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strlolowercase_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * Scans the string converting uppercase characters to + * lowercase, leaving all other characters unchanged. + * The scanning stops at the first null or after dmax + * characters. + * + * Extenstion to: + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * dest updated string + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strtouppercase_s() + * + */ +errno_t +strtolowercase_s (char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strtolowercase_s: " + "dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strtolowercase_s: " + "dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strtolowercase_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + while (*dest && dmax) { + + if ( (*dest >= 'A') && (*dest <= 'Z')) { + *dest = (char)(*dest + (char)32); + } + dest++; + dmax--; + } + + return (EOK); +} +EXPORT_SYMBOL(strtolowercase_s) diff --git a/safestringlib/safeclib/strtouppercase_s.c b/safestringlib/safeclib/strtouppercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d00fe8d4d6fc7fa05d64e134c56d81129bbe52c6 --- /dev/null +++ b/safestringlib/safeclib/strtouppercase_s.c @@ -0,0 +1,115 @@ +/*------------------------------------------------------------------ + * safe_str_touppercase.c + * + * November 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strtouppercase_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strlouppercase_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * Scans the string converting lowercase characters to + * uppercase, leaving all other characters unchanged. + * The scanning stops at the first null or after dmax + * characters. + * + * Extenstion to: + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string + * + * dmax maximum length of string + * + * OUTPUT PARAMETERS + * dest updated string + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * dmax shall not equal zero. + * dmax shall not be greater than RSIZE_MAX_STR. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strtolowercase_s() + * + */ +errno_t +strtouppercase_s (char *dest, rsize_t dmax) +{ + if (!dest) { + invoke_safe_str_constraint_handler("strtouppercase_s: " + "dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strtouppercase_s: " + "dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strtouppercase_s: " + "dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + while (*dest && dmax) { + + if ((*dest >= 'a') && (*dest <= 'z')) { + *dest = (char)(*dest - 32); + } + dest++; + dmax--; + } + + return (EOK); +} +EXPORT_SYMBOL(strtouppercase_s) diff --git a/safestringlib/safeclib/strzero_s.c b/safestringlib/safeclib/strzero_s.c new file mode 100644 index 0000000000000000000000000000000000000000..7496e7046752d56bc6b366aef0301cfcc0c1486a --- /dev/null +++ b/safestringlib/safeclib/strzero_s.c @@ -0,0 +1,103 @@ +/*------------------------------------------------------------------ + * strzero_s.c + * + * October 2008, Bo Berry + * + * Copyright (c) 2008-2011 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * strzero_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * strzero_s(char *dest, rsize_t dmax) + * + * DESCRIPTION + * Nulls dmax characters of dest. This function can be used + * to clear strings that contained sensitive data. + * + * EXTENSION TO + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be nulled. + * + * dmax restricted maximum length of dest + * + * OUTPUT PARAMETERS + * dest updated string + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * strispassword_s() + * + */ +errno_t +strzero_s (char *dest, rsize_t dmax) +{ + if (dest == NULL) { + invoke_safe_str_constraint_handler("strzero_s: dest is null", + NULL, ESNULLP); + return (ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("strzero_s: dmax is 0", + NULL, ESZEROL); + return (ESZEROL); + } + + if (dmax > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("strzero_s: dmax exceeds max", + NULL, ESLEMAX); + return (ESLEMAX); + } + + /* null string to eliminate data */ + while (dmax) { + *dest = '\0'; + dmax--; + dest++; + } + + return (EOK); +} +EXPORT_SYMBOL(strzero_s) diff --git a/safestringlib/safeclib/wcpcpy_s.c b/safestringlib/safeclib/wcpcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d388dc6de31be985b5e375f4b3065c54a23622d1 --- /dev/null +++ b/safestringlib/safeclib/wcpcpy_s.c @@ -0,0 +1,219 @@ +/*------------------------------------------------------------------ + * wcpcpy_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * wcpcpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * wchar_t * + * wcpcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, errno_t *err) + * + * DESCRIPTION + * The wcpcpy_s function copies the wide character string pointed + * to by src (including the terminating null character) into the + * array pointed to by dest, and returns a pointer to the end of + * the wide character string. All elements following the terminating + * null character (if any) written by wcpcpy_s in the array of + * dmax characters pointed to by dest are nulled when + * wcpcpy_s returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the wide character string that will be copied + * to dest + * + * err the error code upon error, or EOK if successful + * + * OUTPUT PARAMETERS + * dest updated + * err updated as follows: + * EOK successful operation, the characters in src were + * copied into dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not be greater than RSIZE_MAX_STR. + * dmax shall not equal zero. + * dmax shall be greater than strnlen_s(src, dmax). + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and destmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpy_s nulls dest. + * + * RETURN VALUE + * a wchar_t pointer to the terminating null at the end of dest + * + * ALSO SEE + * wcscpy_s(), wcscat_s(), wcsncat_s(), wcsncpy_s() + * strcpy_s, strcat_s(), strncat_s(), strncpy_s() + * + */ +wchar_t * +wcpcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, errno_t *err) +{ + rsize_t orig_dmax; + wchar_t *orig_dest; + const wchar_t *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("wcpcpy_s: dest is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcpcpy_s: dmax is 0", + NULL, ESZEROL); + *err = RCNEGATE(ESZEROL); + return NULL; + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcpcpy_s: dmax exceeds max", + NULL, ESLEMAX); + *err = RCNEGATE(ESLEMAX); + return NULL; + } + + if (src == NULL) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to clear data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#else + *dest = L'\0'; +#endif + invoke_safe_str_constraint_handler("wcpcpy_s: src is null", + NULL, ESNULLP); + *err = RCNEGATE(ESNULLP); + return NULL; + } + + if (dest == src) { + /* move dest to the end of the string */ + while (dmax && (*dest != L'\0')) { dmax--; dest++; } + if ( *dest != L'\0' ) { + invoke_safe_str_constraint_handler("wcpcpy_s: no null terminator in dest", + NULL, ESLEMAX); + *err = RCNEGATE(ESLEMAX); + return NULL; + } + *err = RCNEGATE(EOK); + return dest; + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcpcpy_s: overlapping objects", + ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + *err = RCNEGATE(EOK); + return dest; /* successful return */ + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcpcpy_s: overlapping objects", + ESOVRLP); + *err = RCNEGATE(ESOVRLP); + return NULL; + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + *err = RCNEGATE(EOK); + return dest; /* successful return */ + } + + dmax--; + dest++; + src++; + } + } + + /* + * the entire src must have been copied, if not reset dest + * to null the string. + */ + handle_wc_error(orig_dest, orig_dmax, "wcpcpy_s: not enough space for src", + ESNOSPC); + *err = RCNEGATE(ESNOSPC); + return NULL; +} +EXPORT_SYMBOL(wcpcpy_s) diff --git a/safestringlib/safeclib/wcscat_s.c b/safestringlib/safeclib/wcscat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..19363dfdaa6925121f4faaacdc065e1a4bff3842 --- /dev/null +++ b/safestringlib/safeclib/wcscat_s.c @@ -0,0 +1,226 @@ +/*------------------------------------------------------------------ + * wcscat_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * wcscat_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * wcscat_s(wchar_t* dest, rsize_t dmax, const wchar_t* src) + * + * DESCRIPTION + * The wcscat_s function appends a copy of the wide character string pointed + * to by src (including the terminating null character) to the + * end of the string pointed to by dest. The initial wide character + * from src overwrites the null character at the end of dest. + * + * All elements following the terminating null character (if + * any) written by strcat_s in the array of dmax characters + * pointed to by dest take unspecified values when strcat_s + * returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to wide character string that will be extended by src + * if dmax allows. The string is null terminated. + * If the resulting concatenated string is less + * than dmax, the remaining slack space is nulled. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be concatenaed + * to string dest + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer + * dmax shall not equal zero + * dmax shall not be greater than RSIZE_MAX_STR + * dmax shall be greater than strnlen_s(src,m). + * Copying shall not takeplace between objects that overlap + * If there is a runtime-constraint violation, then if dest is + * not a null pointer and dmax is greater than zero and not + * greater than RSIZE_MAX_STR, then strcat_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, all the characters from src + * were appended to dest and the result in dest is + * null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max + * ESUNTERM dest not terminated + * + * ALSO SEE + * strcat_s, strncat_s(), strcpy_s(), strncpy_s() + * + */ +errno_t +wcscat_s(wchar_t* dest, rsize_t dmax, const wchar_t* src) +{ + rsize_t orig_dmax; + wchar_t *orig_dest; + const wchar_t *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("wcscat_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("wcscat_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcscat_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcscat_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + /* Find the end of dest */ + while (*dest != L'\0') { + + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + dest++; + dmax--; + if (dmax == 0) { + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + /* Find the end of dest */ + while (*dest != L'\0') { + + /* + * NOTE: no need to check for overlap here since src comes first + * in memory and we're not incrementing src here. + */ + dest++; + dmax--; + if (dmax == 0) { + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so null the string + */ + handle_wc_error(orig_dest, orig_dmax, "wcscat_s: not enough space for src", + ESNOSPC); + + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(wcscat_s) diff --git a/safestringlib/safeclib/wcscpy_s.c b/safestringlib/safeclib/wcscpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..64aad6116b1c1b6fd5600642a3b99599e84d66a5 --- /dev/null +++ b/safestringlib/safeclib/wcscpy_s.c @@ -0,0 +1,207 @@ +/*------------------------------------------------------------------ + * wcscpy_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * wcscpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src) + * + * DESCRIPTION + * The wcscpy_s function copies the wide character string pointed + * to by src (including the terminating null character) into the + * array pointed to by dest. All elements following the terminating + * null character (if any) written by strcpy_s in the array of + * dmax characters pointed to by dest are nulled when + * wcscpy_s returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * + * dmax restricted maximum length of dest + * + * src pointer to the wide character string that will be copied + * to dest + * + * OUTPUT PARAMETERS + * dest updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * dmax shall not be greater than RSIZE_MAX_STR. + * dmax shall not equal zero. + * dmax shall be greater than strnlen_s(src, dmax). + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and destmax is greater than zero and + * not greater than RSIZE_MAX_STR, then strcpy_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, the characters in src were + * copied into dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * ALSO SEE + * strcpy_s, strcat_s(), strncat_s(), strncpy_s() + * wcscat_s(), + * + */ +errno_t +wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src) +{ + rsize_t orig_dmax; + wchar_t *orig_dest; + const wchar_t *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("wcscpy_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcscpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcscpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (src == NULL) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null string to clear data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + invoke_safe_str_constraint_handler("wcscpy_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + /* Verify proper length according to dmax if src = dest */ + if (dest == src) { + /* Ensure that src is not longer than dmax */ + while (*src != L'\0' && (dmax != 0)) { src++; dmax--; } + if ( *src != L'\0' ) { + invoke_safe_str_constraint_handler("wcscpy_s: src exceeds dmax", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + return RCNEGATE(EOK); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcscpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcscpy_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + dest++; + src++; + } + } + + /* + * the entire src must have been copied, if not reset dest + * to null the string. + */ + handle_wc_error(orig_dest, orig_dmax, "wcscpy_s: not " + "enough space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(wcscpy_s) diff --git a/safestringlib/safeclib/wcsncat_s.c b/safestringlib/safeclib/wcsncat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..73596cd715ee9b140b9c799253f553b5e7ca994d --- /dev/null +++ b/safestringlib/safeclib/wcsncat_s.c @@ -0,0 +1,269 @@ +/*------------------------------------------------------------------ + * wcsncat_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * wcsncat_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * wcsncat_s(wchar_t *dest, rsize_t dmax, const wchar_t *src, rsize_t slen) + * + * DESCRIPTION + * The wcsncat_s function appends a copy of (at most) the + * first slen wide characters pointed to by src to the + * end of the string pointed to by dest and terminates the + * string with the null character. If less than slen wide + * characters are in the string src, the function stops + * copying after the null terminator is copied to dest. + * The initial character from src overwrites the null + * character at the end of dest. + * + * All elements following the terminating null character (if + * any) written by strncat_s in the array of dmax characters + * pointed to by dest take unspecified values when strncat_s returns. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be extended by src + * if dmax allows. The string is null terminated. + * If the resulting concatenated string is less + * than dmax, the remaining slack space is nulled. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be concatenaed + * to string dest + * + * slen maximum characters to append + * + * OUTPUT PARAMETERS + * dest updated string + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer + * dmax shall not equal zero + * dmax shall not be greater than RSIZE_STR_MAX + * dmax shall be greater than strnlen_s(src,m). + * Copying shall not takeplace between objects that overlap + * If there is a runtime-constraint violation, then if dest is + * not a null pointer and dmax is greater than zero and not + * greater thanRSIZE_MAX, then strncat_s sets dest[0] to the + * null character. + * + * RETURN VALUE + * EOK successful operation, all the characters from src + * were appended to dest and the result in dest is + * null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESUNTERM dest not terminated + * + * + */ +errno_t +wcsncat_s (wchar_t *dest, rsize_t dmax, const wchar_t *src, rsize_t slen) +{ + rsize_t orig_dmax; + wchar_t *orig_dest; + const wchar_t *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("wcsncat_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (src == NULL) { + invoke_safe_str_constraint_handler("wcsncat_s: src is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (slen*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcsncat_s: slen exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcsncat_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcsncat_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base of dest in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (dest < src) { + overlap_bumper = src; + + /* Find the end of dest */ + while (*dest != L'\0') { + + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + dest++; + dmax--; + if (dmax == 0) { + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * Copying truncated before the source null is encountered + */ + /* TODO: test if this copies at most slen characters including NULL */ + if (slen == 0) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null remaining string */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#else + *dest = L'\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + /* Find the end of dest */ + while (*dest != L'\0') { + + /* + * NOTE: no need to check for overlap here since src comes first + * in memory and we're not incrementing src here. + */ + dest++; + dmax--; + if (dmax == 0) { + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: " + "dest unterminated", + ESUNTERM); + return RCNEGATE(ESUNTERM); + } + } + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: " + "overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * Copying truncated + */ + if (slen == 0) { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null remaining string */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#else + *dest = L'\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == L'\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack to clear any data */ + while (dmax) { *dest = L'\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so the string will be nulled. + */ + handle_wc_error(orig_dest, orig_dmax, "wcsncat_s: not enough space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(wcsncat_s) diff --git a/safestringlib/safeclib/wcsncpy_s.c b/safestringlib/safeclib/wcsncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..67ddda10b092adf882891f200cfd5451ed5c2704 --- /dev/null +++ b/safestringlib/safeclib/wcsncpy_s.c @@ -0,0 +1,241 @@ +/*------------------------------------------------------------------ + * wcsncpy_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/* + * NAME + * wcsncpy_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * errno_t + * wcsncpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t slen) + * + * DESCRIPTION + * The wcsncpy_s function copies not more than slen successive characters + * (characters that follow a null character are not copied) from the + * array pointed to by src to the array pointed to by dest. If no null + * character was copied from src, then dest[slen] is set to a null character. + * + * All elements following the terminating null character (if any) + * written by wcsncpy_s in the array of dmax characters pointed to + * by dest take on the null value when wcsncpy_s returns. + * + * When SAFECLIB_STR_NULL_SLACK is defined to be true (#DEFINE), then + * the dest array is filled with NULL characters following the end of + * the last non-NULL character from src. While this is more secure, it + * is also incurs a performance penalty, especially when the same dest + * array is used multiple times to string manipulation routines in this + * library. If this extra security is not required, ensure that the + * library is compiled without #DEFINE SAFECLIB_STR_NULL_SLACK. + * + * Specicified in: + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to string that will be replaced by src. + * The resulting string is null terminated. + * + * dmax restricted maximum length of the resulting dest, + * including the null + * + * src pointer to the string that will be copied + * to string dest + * + * slen the maximum number of characters to copy from src + * + * OUTPUT PARAMETERS + * dest updated with src string + * + * RUNTIME CONSTRAINTS + * Neither dmax nor slen shall be equal to zero. + * Neither dmax nor slen shall be equal zero. + * Neither dmax nor slen shall be greater than RSIZE_MAX_STR. + * If slen is either greater than or equal to dmax, then dmax + * should be more than strnlen_s(src,dmax) + * Copying shall not take place between objects that overlap. + * If there is a runtime-constraint violation, then if dest + * is not a null pointer and dmax greater than RSIZE_MAX_STR, + * then strncpy_s nulls dest. + * + * RETURN VALUE + * EOK successful operation, the characters in src were copied + * to dest and the result is null terminated. + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP strings overlap + * ESNOSPC not enough space to copy src + * + * ALSO SEE + * strcat_s(), strncat_s(), strcpy_s() + * wcscat_s(), wcsncat_s(), wcscpy_s() + *- + */ +errno_t +wcsncpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t slen) +{ + rsize_t orig_dmax; + wchar_t *orig_dest; + const wchar_t *overlap_bumper; + + if (dest == NULL) { + invoke_safe_str_constraint_handler("wcsncpy_s: dest is null", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcsncpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcsncpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + /* hold base in case src was not copied */ + orig_dmax = dmax; + orig_dest = dest; + + if (src == NULL) { + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: src is null", + ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (slen == 0) { + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: slen is zero", + ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (slen*sizeof(wchar_t) > RSIZE_MAX_STR) { + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: slen exceeds max", + ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + + if (dest < src) { + overlap_bumper = src; + + while (dmax > 0) { + if (dest == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + if (slen == 0) { + /* + * Copying truncated to slen chars. Note that the TR says to + * copy slen chars plus the null char. We null the slack. + */ +#ifdef SAFECLIB_STR_NULL_SLACK + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + + } else { + overlap_bumper = dest; + + while (dmax > 0) { + if (src == overlap_bumper) { + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: overlapping objects", + ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + if (slen == 0) { + /* + * Copying truncated to slen chars. Note that the TR says to + * copy slen chars plus the null char. We null the slack. + */ +#ifdef SAFECLIB_STR_NULL_SLACK + while (dmax) { *dest = '\0'; dmax--; dest++; } +#else + *dest = '\0'; +#endif + return RCNEGATE(EOK); + } + + *dest = *src; + if (*dest == '\0') { +#ifdef SAFECLIB_STR_NULL_SLACK + /* null slack */ + while (dmax) { *dest = '\0'; dmax--; dest++; } +#endif + return RCNEGATE(EOK); + } + + dmax--; + slen--; + dest++; + src++; + } + } + + /* + * the entire src was not copied, so zero the string + */ + handle_wc_error(orig_dest, orig_dmax, "wcsncpy_s: not enough space for src", + ESNOSPC); + return RCNEGATE(ESNOSPC); +} +EXPORT_SYMBOL(wcsncpy_s) diff --git a/safestringlib/safeclib/wcsnlen_s.c b/safestringlib/safeclib/wcsnlen_s.c new file mode 100644 index 0000000000000000000000000000000000000000..564af51cc0f6e77b9054a6f3a4b98da1a8886bdb --- /dev/null +++ b/safestringlib/safeclib/wcsnlen_s.c @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------ + * wcsnlen_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_str_constraint.h" +#include "safe_str_lib.h" + + +/** + * NAME + * wcsnlen_s + * + * SYNOPSIS + * #include "safe_str_lib.h" + * rsize_t + * wcsnlen_s(const wchar_t *dest, rsize_t dmax) + * + * DESCRIPTION + * The wcsnlen_s function computes the length of the wide character string pointed + * to by dest. + * + * SPECIFIED IN + * ISO/IEC TR 24731-1, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to wide character string + * + * dmax restricted maximum length. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer + * dmax shall not be greater than RSIZE_MAX_STR + * dmax shall not equal zero + * + * RETURN VALUE + * The function returns the number of wide characters in the string + * pointed to by dest, excluding the terminating null character. + * If dest is NULL, then wcsnlen_s returns 0. + * + * Otherwise, the wcsnlen_s function returns the number of wide characters + * that precede the terminating null character. If there is no null + * character in the first dmax characters of dest then wcsnlen_s returns + * dmax. At most the first dmax characters of dest are accessed + * by wcsnlen_s. + * + * ALSO SEE + * strnlen_s, strnterminate_s() + * + */ +rsize_t +wcsnlen_s (const wchar_t *dest, rsize_t dmax) +{ + rsize_t count; + + if (dest == NULL) { + return RCNEGATE(0); + } + + if (dmax == 0) { + invoke_safe_str_constraint_handler("wcsnlen_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(0); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_STR) { + invoke_safe_str_constraint_handler("wcsnlen_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(0); + } + + count = 0; + while (*dest && dmax) { + count++; + dmax--; + dest++; + } + + return RCNEGATE(count); +} +EXPORT_SYMBOL(wcsnlen_s) diff --git a/safestringlib/safeclib/wmemcmp_s.c b/safestringlib/safeclib/wmemcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..5438e700841652089441fb8d2bc5efa1a8d6d7a9 --- /dev/null +++ b/safestringlib/safeclib/wmemcmp_s.c @@ -0,0 +1,169 @@ +/*------------------------------------------------------------------ + * wmemcmp_s.c - Compares memory + * + * September 2014, D. Wheeler + * + * Copyright (c) 2014 Intel Corp + * All rights reserved. + * + * Based on memcmp32_s.c, October 2008, by Bo Berry + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "safe_mem_lib.h" + +/** + * NAME + * wmemcmp_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * wmemcmp_s(const wchar_t *dest, rsize_t dmax, + * const wchar_t *src, rsize_t smax, int *diff) + * + * DESCRIPTION + * Compares wide-character strings until they differ, and their difference is + * returned in diff. If the wide character string is the same, diff=0. + * + * EXTENSION TO + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory to compare against + * + * dmax maximum length of dest, in uint32_t + * + * src pointer to the source memory to compare with dest + * + * smax maximum length of src, in uint32_t + * + * *diff pointer to the diff which is an integer greater + * than, equal to or less than zero according to + * whether the object pointed to by dest is + * greater than, equal to or less than the object + * pointed to by src. + * + * OUTPUT PARAMETERS + * none + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memcmp_s(), memcmp16_s() + * + */ +errno_t +wmemcmp_s (const wchar_t *dest, rsize_t dmax, + const wchar_t *src, rsize_t smax, int *diff) +{ + /* + * must be able to return the diff + */ + if (diff == NULL) { + invoke_safe_mem_constraint_handler("wmemcmp_s: diff is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + *diff = -1; /* default diff */ + + + if (dest == NULL) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (src == NULL) { + invoke_safe_mem_constraint_handler("wmemcmp_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax > RSIZE_MAX_MEM32) { + invoke_safe_mem_constraint_handler("wmemcmp_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + invoke_safe_mem_constraint_handler("wmemcmp_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + invoke_safe_mem_constraint_handler("wmemcmp_s: smax exceeds dmax", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + /* + * no need to compare the same memory + */ + if (dest == src) { + *diff = 0; + return (RCNEGATE(EOK)); + } + + /* + * now compare src to dest + */ + *diff = 0; + while (dmax != 0 && smax != 0) { + if (*dest != *src) { + *diff = *dest - *src; + break; + } + + dmax--; + smax--; + + dest++; + src++; + } + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(wmemcmp_s) diff --git a/safestringlib/safeclib/wmemcpy_s.c b/safestringlib/safeclib/wmemcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b1401326594550a1c78dcdf6473eba051608d7a5 --- /dev/null +++ b/safestringlib/safeclib/wmemcpy_s.c @@ -0,0 +1,158 @@ +/*------------------------------------------------------------------ + * wmemcpy_s + * + * AUgust 2014, D. Wheeler + * + * Copyright (c) 2014 Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" +#include <wchar.h> + + +/** + * NAME + * wmemcpy_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * wmemcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t smax) + * + * DESCRIPTION + * This function copies at most smax wide characters from src to dest, up to + * dmax. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be replaced by src. + * + * dmax maximum length of the resulting dest + * + * src pointer to the memory that will be copied to dest + * + * smax maximum number bytes of src to copy + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be zero. + * dmax shall not be greater than RSIZE_MAX_MEM. + * smax shall not be greater than dmax. + * Copying shall not take place between regions that overlap. + * If there is a runtime-constraint violation, the memcpy_s function + * stores zeros in the first dmax bytes of the region pointed to + * by dest if dest is not a null pointer and smax is valid. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * ESOVRLP source memory overlaps destination + * + * ALSO SEE + * memcpy16_s(), memcpy32_s(), memcpy_s(), + * wmemmove_s(), memmove_s(), memmove16_s(), memmove32_s(), + * + */ +errno_t +wmemcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t smax) +{ + wchar_t *dp; + const wchar_t *sp; + + dp = dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dest is NULL", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dmax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (dmax > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("wmemcpy_s: dmax exceeds max", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (smax == 0) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemcpy_s: smax is 0", + NULL, ESZEROL); + return RCNEGATE(ESZEROL); + } + + if (smax > dmax) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemcpy_s: smax exceeds dmax", + NULL, ESLEMAX); + return RCNEGATE(ESLEMAX); + } + + if (sp == NULL) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemcpy_s: src is NULL", + NULL, ESNULLP); + return RCNEGATE(ESNULLP); + } + + + /* + * overlap is undefined behavior, do not allow + */ + if( ((dp > sp) && (dp < (sp+smax))) || + ((sp > dp) && (sp < (dp+dmax))) ) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemcpy_s: overlap undefined", + NULL, ESOVRLP); + return RCNEGATE(ESOVRLP); + } + + /* + * now perform the copy + */ + mem_prim_move(dp, sp, smax*sizeof(wchar_t)); + + return RCNEGATE(EOK); +} +EXPORT_SYMBOL(wmemcpy_s) diff --git a/safestringlib/safeclib/wmemmove_s.c b/safestringlib/safeclib/wmemmove_s.c new file mode 100644 index 0000000000000000000000000000000000000000..56d3dd6c62e61daac72157c1d2493ddf3f260215 --- /dev/null +++ b/safestringlib/safeclib/wmemmove_s.c @@ -0,0 +1,150 @@ +/*------------------------------------------------------------------ + * wmemmove_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" +#include <wchar.h> + +/** + * NAME + * wmemmove_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * wmemmove_s(wchar_t* dest, rsize_t dmax, + * const wchar_t* src, size_t smax) + * + * DESCRIPTION + * The wmemmove_s function copies smax wide characters from the region pointed + * to by src into the region pointed to by dest. This copying takes place + * as if the smax wide characters from the region pointed to by src are first copied + * into a temporary array of smax bytes that does not overlap the region + * pointed to by dest or src, and then the smax bytes from the temporary + * array are copied into the object region to by dest. + * + * SPECIFIED IN + * ISO/IEC TR 24731, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to the memory that will be replaced by src. + * + * dmax maximum number of resulting wide characters in dest + * + * src pointer to the memory that will be copied + * to dest + * + * smax maximum number wide characters of src that can be copied + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * Neither dest nor src shall be a null pointer. + * Neither dmax nor smax shall be 0. + * dmax shall not be greater than RSIZE_MAX_MEM/sizeof(wchar_t). + * smax shall not be greater than dmax. + * If there is a runtime-constraint violation, the wmemmove_s function + * stores zeros in the first dmax characters of the region pointed to + * by dest if dest is not a null pointer and dmax is not greater + * than RSIZE_MAX_MEM/sizeof(wchar_t). + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memmove16_s(), memmove32_s(), memcpy_s(), memcpy16_s() memcpy32_s() + * wmemcpy_s() + * + */ +errno_t +wmemmove_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, size_t smax) +{ + wchar_t *dp; + const wchar_t *sp; + + dp= dest; + sp = src; + + if (dp == NULL) { + invoke_safe_mem_constraint_handler("wmemmove_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (dmax == 0) { + invoke_safe_mem_constraint_handler("wmemmove_s: dmax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (dmax*sizeof(wchar_t) > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("wmemmove_s: dmax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (smax == 0) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemmove_s: smax is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (smax > dmax) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemmove_s: smax exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + if (sp == NULL) { + mem_prim_set(dp, dmax*sizeof(wchar_t), 0); + invoke_safe_mem_constraint_handler("wmemmove_s: src is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + /* + * now perform the copy + */ + mem_prim_move(dp, sp, smax*sizeof(wchar_t)); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(wmemmove_s) diff --git a/safestringlib/safeclib/wmemset_s.c b/safestringlib/safeclib/wmemset_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3350584082d16ba77629f1cb68d56bdc64df6be3 --- /dev/null +++ b/safestringlib/safeclib/wmemset_s.c @@ -0,0 +1,105 @@ +/*------------------------------------------------------------------ + * wmemset_s + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "safeclib_private.h" +#include "safe_mem_constraint.h" +#include "mem_primitives_lib.h" +#include "safe_mem_lib.h" + + +/** + * NAME + * wmemset_s + * + * SYNOPSIS + * #include "safe_mem_lib.h" + * errno_t + * wmemset_s(wchar_t *dest, wchar_t value, rsize_t len) + * + * DESCRIPTION + * Sets len number of wide characters starting at dest to the specified value. + * + * SPECIFIED IN + * ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments + * and system software interfaces, Extensions to the C Library, + * Part I: Bounds-checking interfaces + * + * INPUT PARAMETERS + * dest pointer to memory that will be set to the value + * + * value byte value + * + * len number of wide characters to be set + * + * OUTPUT PARAMETERS + * dest is updated + * + * RUNTIME CONSTRAINTS + * dest shall not be a null pointer. + * len shall not be 0 nor greater than RSIZE_MAX_MEM/sizeof(wchar_t). + * If there is a runtime constraint, the operation is not performed. + * + * RETURN VALUE + * EOK successful operation + * ESNULLP NULL pointer + * ESZEROL zero length + * ESLEMAX length exceeds max limit + * + * ALSO SEE + * memset_s, memset16_s(), memset32_s() + * + */ +errno_t +wmemset_s (wchar_t *dest, wchar_t value, rsize_t len) +{ + if (dest == NULL) { + invoke_safe_mem_constraint_handler("wmemset_s: dest is null", + NULL, ESNULLP); + return (RCNEGATE(ESNULLP)); + } + + if (len == 0) { + invoke_safe_mem_constraint_handler("wmemset_s: len is 0", + NULL, ESZEROL); + return (RCNEGATE(ESZEROL)); + } + + if (len*sizeof(wchar_t) > RSIZE_MAX_MEM) { + invoke_safe_mem_constraint_handler("wmemset_s: len exceeds max", + NULL, ESLEMAX); + return (RCNEGATE(ESLEMAX)); + } + + mem_prim_set32((uint32_t *)dest, len, value); + + return (RCNEGATE(EOK)); +} +EXPORT_SYMBOL(wmemset_s) diff --git a/safestringlib/unittests/CMakeLists.txt b/safestringlib/unittests/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..88cd8359b5e0a7122547dcc7f8e88f7bf42cb4cd --- /dev/null +++ b/safestringlib/unittests/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required(VERSION 3.1) +project(safestring_test) + +set(SOURCES + Safe_String_UnitTestMain.c + $<$<BOOL:${BUILD_MEMCMP}>:test_memcmp16_s.c> + $<$<BOOL:${BUILD_MEMCMP}>:test_memcmp32_s.c> + $<$<BOOL:${BUILD_MEMCMP}>:test_memcmp_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:test_memcpy16_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:test_memcpy32_s.c> + $<$<BOOL:${BUILD_MEMCPY}>:test_memcpy_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:test_memmove16_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:test_memmove32_s.c> + $<$<BOOL:${BUILD_MEMMOVE}>:test_memmove_s.c> + $<$<BOOL:${BUILD_MEMSET}>:test_memset16_s.c> + $<$<BOOL:${BUILD_MEMSET}>:test_memset32_s.c> + $<$<BOOL:${BUILD_MEMSET}>:test_memset_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:test_memzero16_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:test_memzero32_s.c> + $<$<BOOL:${BUILD_MEMZERO}>:test_memzero_s.c> + $<$<BOOL:${BUILD_STPCPY}>:test_stpcpy_s.c> + $<$<BOOL:${BUILD_STPNCPY}>:test_stpncpy_s.c> + $<$<BOOL:${BUILD_STRCASECMP}>:test_strcasecmp_s.c> + $<$<BOOL:${BUILD_STRCASESTR}>:test_strcasestr_s.c> + $<$<BOOL:${BUILD_STRCAT}>:test_strcat_s.c> + $<$<BOOL:${BUILD_STRCMPFLD}>:test_strcmpfld_s.c> + $<$<BOOL:${BUILD_STRCMP}>:test_strcmp_s.c> + $<$<BOOL:${BUILD_STRCPYFLDIN}>:test_strcpyfldin_s.c> + $<$<BOOL:${BUILD_STRCPYFLDOUT}>:test_strcpyfldout_s.c> + $<$<BOOL:${BUILD_STRCPYFLD}>:test_strcpyfld_s.c> + $<$<BOOL:${BUILD_STRCPY}>:test_strcpy_s.c> + $<$<BOOL:${BUILD_STRCSPN}>:test_strcspn_s.c> + $<$<BOOL:${BUILD_STRFIRSTCHAR}>:test_strfirstchar_s.c> + $<$<BOOL:${BUILD_STRFIRSTDIFF}>:test_strfirstdiff_s.c> + $<$<BOOL:${BUILD_STRFIRSTSAME}>:test_strfirstsame_s.c> + $<$<BOOL:${BUILD_STRISALPHANUMERIC}>:test_strisalphanumeric_s.c> + $<$<BOOL:${BUILD_STRISASCII}>:test_strisascii_s.c> + $<$<BOOL:${BUILD_STRISDIGIT}>:test_strisdigit_s.c> + $<$<BOOL:${BUILD_STRISHEX}>:test_strishex_s.c> + $<$<BOOL:${BUILD_STRISLOWERCASE}>:test_strislowercase_s.c> + $<$<BOOL:${BUILD_STRISMIXEDCASE}>:test_strismixed_s.c> + $<$<BOOL:${BUILD_STRISPASSWORD}>:test_strispassword_s.c> + $<$<BOOL:${BUILD_STRISUPPERCASE}>:test_strisuppercase_s.c> + $<$<BOOL:${BUILD_STRLASTCHAR}>:test_strlastchar_s.c> + $<$<BOOL:${BUILD_STRLASTDIFF}>:test_strlastdiff_s.c> + $<$<BOOL:${BUILD_STRLASTSAME}>:test_strlastsame_s.c> + $<$<BOOL:${BUILD_STRLJUSTIFY}>:test_strljustify_s.c> + $<$<BOOL:${BUILD_STRNCAT}>:test_strncat_s.c> + $<$<BOOL:${BUILD_STRNCPY}>:test_strncpy_s.c> + $<$<BOOL:${BUILD_STRNLEN}>:test_strnlen_s.c> + $<$<BOOL:${BUILD_STRNTERMINATE}>:test_strnterminate_s.c> + $<$<BOOL:${BUILD_STRPBRK}>:test_strpbrk_s.c> + $<$<BOOL:${BUILD_STRPREFIX}>:test_strprefix_s.c> + $<$<BOOL:${BUILD_STRREMOVEWS}>:test_strremovews_s.c> + $<$<BOOL:${BUILD_STRSPN}>:test_strspn_s.c> + $<$<BOOL:${BUILD_STRSTR}>:test_strstr_s.c> + $<$<BOOL:${BUILD_STRTOK}>:test_strtok_s.c> + $<$<BOOL:${BUILD_STRTOLOWERCASE}>:test_strtolowercase_s.c> + $<$<BOOL:${BUILD_STRTOUPPERCASE}>:test_strtouppercase_s.c> + $<$<BOOL:${BUILD_STRZERO}>:test_strzero_s.c> + $<$<BOOL:${BUILD_WCPCPY}>:test_wcpcpy_s.c> + $<$<BOOL:${BUILD_WCSCAT}>:test_wcscat_s.c> + $<$<BOOL:${BUILD_WCSCPY}>:test_wcscpy_s.c> + $<$<BOOL:${BUILD_WCSNCAT}>:test_wcsncat_s.c> + $<$<BOOL:${BUILD_WCSNCPY}>:test_wcsncpy_s.c> + $<$<BOOL:${BUILD_WCSNLEN}>:test_wcsnlen_s.c> + $<$<BOOL:${BUILD_WMEMCMP}>:test_wmemcmp_s.c> + $<$<BOOL:${BUILD_WMEMCPY}>:test_wmemcpy_s.c> + $<$<BOOL:${BUILD_WMEMMOVE}>:test_wmemmove_s.c> + $<$<BOOL:${BUILD_WMEMSET}>:test_wmemset_s.c> +) + +add_executable(${PROJECT_NAME} + ${SOURCES} +) + +target_link_libraries(${PROJECT_NAME} + safestring_static +) diff --git a/safestringlib/unittests/Safe_String_UnitTestMain.c b/safestringlib/unittests/Safe_String_UnitTestMain.c new file mode 100644 index 0000000000000000000000000000000000000000..658268ac5a2a7eb2faffde24abfc2ceae059e0a1 --- /dev/null +++ b/safestringlib/unittests/Safe_String_UnitTestMain.c @@ -0,0 +1,192 @@ +/* + ============================================================================ + Name : Safe_String_Extensions.c + Author : David M. Wheeler + Version : + Copyright : (C) Intel Corp 2014 + Description : Safe String Test Suite + ============================================================================ + */ + +#include <stdio.h> +#include <stdlib.h> +#include <safe_lib.h> +#include <snprintf_s.h> + +extern int test_memcmp_s(void); +extern int test_memcmp16_s(void); +extern int test_memcmp32_s(void); +extern int test_memcpy_s(void); +extern int test_memcpy16_s(void); +extern int test_memcpy32_s(void); +extern int test_memmove_s(void); +extern int test_memmove16_s(void); +extern int test_memmove32_s(void); +extern int test_memset_s(void); +extern int test_memset16_s(void); +extern int test_memset32_s(void); +extern int test_memzero_s(void); +extern int test_memzero16_s(void); +extern int test_memzero32_s(void); +extern int test_strcasecmp_s(void); +extern int test_strcasestr_s(void); +extern int test_strcat_s(void); +extern int test_strcmp_s(void); +extern int test_strcmpfld_s(void); +extern int test_strcpy_s(void); +extern int test_strcpyfld_s(void); +extern int test_strcpyfldin_s(void); +extern int test_strcpyfldout_s(void); +extern int test_strcspn_s (void); +extern int test_strfirstchar_s(void); +extern int test_strfirstdiff_s(void); +extern int test_strfirstsame_s(void); +extern int test_strisalphanumeric_s(void); +extern int test_strisascii_s(void); +extern int test_strisdigit_s(void); +extern int test_strishex_s(void); +extern int test_strislowercase_s(void); +extern int test_strismixed_s(void); +extern int test_strispassword_s(void); +extern int test_strisuppercase_s(void); +extern int test_strlastchar_s(void); +extern int test_strlastdiff_s(void); +extern int test_strlastsame_s(void); +extern int test_strljustify_s(void); +extern int test_strncat_s (void); +extern int test_strncpy_s (void); +extern int test_strnlen_s (void); +extern int test_strnterminate_s(void); +extern int test_strpbrk_s (void); +extern int test_strprefix_s(void); +extern int test_strremovews_s(void); +extern int test_strspn_s (void); +extern int test_strstr_s (void); +extern int test_strtok_s(void); +extern int test_strtolowercase_s(void); +extern int test_strtouppercase_s(void); +extern int test_strzero_s(void); +extern int test_stpncpy_s(void); +extern int test_stpcpy_s(void); +extern int test_wcpcpy_s(void); +extern int test_wcscat_s(void); +extern int test_wcscpy_s(void); +extern int test_wcsncat_s(void); +extern int test_wcsncpy_s (void); +extern int test_wcsnlen_s (void); +extern int test_wmemcpy_s(void); +extern int test_wmemmove_s(void); +extern int test_wmemset_s(void); +extern int test_wmemcmp_s(void); + +int main(void) { + + char dest[128]; + char src[128]; + rsize_t dmax = 128; + rsize_t smax = 21; + errno_t err; + + puts("!!!Basic Test Suite for Safe String Operations!!!"); + puts(" ERRORS PRINT TO CONSOLE"); + puts("----------------BEGIN TEST--------------------"); + test_memcmp_s(); + test_memcmp16_s(); + test_memcmp32_s(); + test_memcpy_s(); + test_memcpy16_s(); + test_memcpy32_s(); + test_memmove_s(); + test_memmove16_s(); + test_memmove32_s(); + test_memset_s(); + test_memset16_s(); + test_memset32_s(); + test_memzero_s(); + test_memzero16_s(); + test_memzero32_s(); + + + test_stpcpy_s(); /* New - Done */ + test_stpncpy_s(); /* New - Done */ + + test_strcasecmp_s(); + test_strcasestr_s(); + test_strcat_s(); + test_strcmp_s(); + test_strcmpfld_s(); + test_strcpy_s(); + test_strcpyfld_s(); + test_strcpyfldin_s(); + test_strcpyfldout_s(); + test_strcspn_s (); + + test_strfirstchar_s(); + test_strfirstdiff_s(); + test_strfirstsame_s(); + test_strisalphanumeric_s(); + test_strisascii_s(); + test_strisdigit_s(); + test_strishex_s(); + test_strislowercase_s(); + test_strismixed_s(); + test_strispassword_s(); + test_strisuppercase_s(); + + test_strlastchar_s(); + test_strlastdiff_s(); + test_strlastsame_s(); + test_strljustify_s(); + + test_strncat_s (); + test_strncpy_s (); + test_strnlen_s (); + test_strnterminate_s(); + test_strpbrk_s (); + test_strprefix_s(); + test_strremovews_s(); + test_strspn_s (); + test_strstr_s (); + test_strtok_s(); + test_strtolowercase_s(); + test_strtouppercase_s(); + test_strzero_s(); + + test_wcpcpy_s(); /* New - Done */ + test_wcscat_s(); /* New - Done */ + test_wcscpy_s(); /* New - Done */ + test_wcsncat_s(); /* New - Done */ + test_wcsncpy_s(); /* New - Done */ + test_wcsnlen_s(); /* New - Done */ + test_wmemcpy_s(); /* New - Done */ + test_wmemmove_s(); /* New - Done */ + test_wmemset_s(); /* New - Done */ + test_wmemcmp_s(); /* New - Done */ + + char str[] = "This is a char array"; + char str2[] = "...And another one."; + int indicator = -1; + + strcpy_s(dest, dmax, str); + char *ret = stpcpy_s(&dest[20], 108, str2, &err); + if (err != EOK) { + puts("stpcpy_s returned failure"); + } + + int val = 55; + if ( (err = snprintf_s_si(src, 128, "Test sprintf_s_si() with simple format string [%s] and %d", dest, val)) < 0 ) { + if ( SNPRFNEGATE(ESBADFMT) == err ) { + puts("snprintf_s_si returned failure: Error Bad Format String."); + } else if ( SNPRFNEGATE(ESFMTTYP) == err ) { + puts("snprintf_s_si returned failure: Error Bad Argument Type for format string."); + } else { + printf("snprintf_s_si failed with unknown error: %d\n", err); + } + } else if ((strcmp_s(src, smax, "Test sprintf_s_si() with simple format string [This is a char array...And another one.] and 55", &indicator) != EOK ) || (indicator != 0 )) { + puts("snprintf_s_si() failed - output was:"); + puts(src); + } + puts("----------------END TEST--------------------"); + return EXIT_SUCCESS; +} + diff --git a/safestringlib/unittests/test_memcmp16_s.c b/safestringlib/unittests/test_memcmp16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d4ed057ae67931dbcd32959cca0045dde92309e9 --- /dev/null +++ b/safestringlib/unittests/test_memcmp16_s.c @@ -0,0 +1,176 @@ +/*------------------------------------------------------------------ + * test_memcmp16_s + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 128 ) + +int test_memcmp16_s() +{ + errno_t rc; + + uint32_t len; + int32_t ind; + int32_t std_ind; + uint32_t i; + + uint16_t mem1[LEN]; + uint16_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memcmp16_s(NULL, LEN, mem2, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, LEN, NULL, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, LEN, mem2, LEN, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, 0, mem2, LEN, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, LEN, mem2, 0, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp16_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 1; + rc = memcmp16_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, len*2); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 2; + rc = memcmp16_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, len*2); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + rc = memcmp16_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, LEN*2); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + for (i=10; i<LEN-10; i++) { mem2[i] = 5; } + + rc = memcmp16_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind == 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, LEN*2); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memcmp32_s.c b/safestringlib/unittests/test_memcmp32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..4913e31f863ccfe7844c220f5ceb63d4c06c86c6 --- /dev/null +++ b/safestringlib/unittests/test_memcmp32_s.c @@ -0,0 +1,169 @@ +/*------------------------------------------------------------------ + * test_memcmp32_s + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 128 ) + +int test_memcmp32_s() +{ + errno_t rc; + uint32_t len; + int32_t ind; + int32_t std_ind; + uint32_t i; + + uint32_t mem1[LEN]; + uint32_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memcmp32_s(NULL, LEN, mem2, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, LEN, NULL, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, LEN, mem2, LEN, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, 0, mem2, LEN, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, LEN, mem2, 0, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + rc = memcmp32_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 1; + rc = memcmp32_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, len*4); + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 2; + rc = memcmp32_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + std_ind = memcmp(mem1, mem2, len*4); + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + rc = memcmp32_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + ind = memcmp(mem1, mem2, LEN*4); + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + for (i=10; i<LEN-10; i++) { mem2[i] = 5; } + + rc = memcmp32_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind == 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memcmp_s.c b/safestringlib/unittests/test_memcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..fb9bdb58efdb31a77a3b66cb574e720241ad6040 --- /dev/null +++ b/safestringlib/unittests/test_memcmp_s.c @@ -0,0 +1,211 @@ +/*------------------------------------------------------------------ + * test_memcmp_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 128 ) + +static uint8_t mem1[LEN]; +static uint8_t mem2[LEN]; + +int test_memcmp_s (void) +{ + errno_t rc; + int32_t ind; + int32_t std_ind; + uint32_t len; + +/*--------------------------------------------------*/ + + rc = memcmp_s(NULL, LEN, mem2, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, LEN, NULL, LEN, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, LEN, mem2, LEN, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, 0, mem2, LEN, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, LEN, mem2, 0, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = memcmp_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 1; + + memset(mem1, 55, len); + memset(mem2, 55, len); + + rc = memcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = memcmp(mem1, mem2, len); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 2; + + memset(mem1, 55, LEN); + memset(mem2, 55, LEN); + + rc = memcmp_s(&mem1[1], len, &mem2[1], len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = memcmp(mem1, mem2, len); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 32; + + memset(mem1, 55, len); + memset(mem2, 55, len); + + rc = memcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = memcmp(mem1, mem2, len); + if (ind != std_ind) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 32; + + memset(mem1, 55, len); + memset(mem2, 55, len); + memset( &mem2[(len/2)], 35, len); + + rc = memcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind < 1) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 32; + + memset(mem1, 55, len); + memset(mem2, 55, len); + memset( &mem2[(len/2)], 65, len); + + rc = memcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind > -1) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + len = 3; + + memset(mem1, 55, len); + memset(mem2, 55, len); + + rc = memcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + debug_printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + debug_printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_memcpy16_s.c b/safestringlib/unittests/test_memcpy16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0e5da19ebdc358d7b0516010d0f11064767c3d09 --- /dev/null +++ b/safestringlib/unittests/test_memcpy16_s.c @@ -0,0 +1,241 @@ +/*------------------------------------------------------------------ + * test_memcpy16_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + + +int test_memcpy16_s() +{ + errno_t rc; + uint32_t len; + uint32_t i; + + uint16_t mem1[LEN]; + uint16_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memcpy16_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy16_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy16_s(mem1, RSIZE_MAX_MEM16+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy16_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy16_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy16_s(mem1, LEN, mem2, RSIZE_MAX_MEM16+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = 1; + rc = memcpy16_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = 2; + rc = memcpy16_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* slen greater than dmax */ + rc = memcpy16_s(mem1, LEN/2, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + rc = memcpy16_s(mem1, LEN, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + rc = memcpy16_s(mem1, LEN, mem2, RSIZE_MAX_MEM16+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + for (i=0; i<LEN; i++) { mem2[i] = 65; } + + /* same ptr - no move */ + rc = memcpy16_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<100; i++) { mem1[i] = 25; } + for (i=10; i<100; i++) { mem1[i] = 35; } + + /* overlap */ + rc = memcpy16_s(&mem1[0], 100, &mem1[10], 100); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<100; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<100; i++) { mem1[i] = 25; } + for (i=10; i<100; i++) { mem1[i] = 45; } + + /* overlap error */ + rc = memcpy16_s(&mem1[10], 100, &mem1[0], 100); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=10; i<100; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + rc = memcpy16_s(mem1, LEN, mem2, LEN/2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=10; i<LEN/2; i++) { + if (mem1[i] != 44) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memcpy32_s.c b/safestringlib/unittests/test_memcpy32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..4be3d95f16d88b741cb843097b4319e3d7ff4742 --- /dev/null +++ b/safestringlib/unittests/test_memcpy32_s.c @@ -0,0 +1,240 @@ +/*------------------------------------------------------------------ + * test_memcpy32_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + +int test_memcpy32_s() +{ + errno_t rc; + uint32_t len; + uint32_t i; + + uint32_t mem1[LEN]; + uint32_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memcpy32_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy32_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy32_s(mem1, RSIZE_MAX_MEM32+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy32_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy32_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy32_s(mem1, LEN, mem2, RSIZE_MAX_MEM32+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = 1; + rc = memcpy32_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = 2; + rc = memcpy32_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* slen greater than dmax */ + rc = memcpy32_s(mem1, LEN/2, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 0 ) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + rc = memcpy32_s(mem1, LEN, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + rc = memcpy32_s(mem1, LEN, mem2, RSIZE_MAX_MEM32+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<LEN; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=0; i<LEN; i++) { mem2[i] = 35; } + + /* same ptr */ + rc = memcpy32_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=0; i<LEN; i++) { mem2[i] = 35; } + + /* overlap */ + rc = memcpy32_s(&mem1[0], 100, &mem1[10], 100); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<100; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 65; } + for (i=0; i<LEN; i++) { mem2[i] = 75; } + + /* overlap */ + rc = memcpy32_s(&mem1[10], 100, &mem1[0], 100); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=10; i<100; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 65; } + for (i=0; i<LEN; i++) { mem2[i] = 75; } + + rc = memcpy32_s(mem1, LEN, mem2, LEN/2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 75) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memcpy_s.c b/safestringlib/unittests/test_memcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..f6649b5f4497db8eb38eace0b78374752a5cb500 --- /dev/null +++ b/safestringlib/unittests/test_memcpy_s.c @@ -0,0 +1,309 @@ +/*------------------------------------------------------------------ + * test_memcpy_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + +static uint8_t mem1[LEN+2]; +static uint8_t mem2[LEN+2]; + +int test_memcpy_s (void) +{ + errno_t rc; + uint32_t i; + rsize_t len; + +/*--------------------------------------------------*/ + + rc = memcpy_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memcpy_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN+1; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = memcpy_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[i] != 33) { + printf("%d - %zu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN+1; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = memcpy_s(mem1, len, mem2, (len+1) ); + if (rc == EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[i] != 33) { + printf("%d - %zu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN/2; + rc = memcpy_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33) { + printf("%d - %zu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = memcpy_s(mem1, len, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33) { + printf("%d - %zu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = memcpy_s(mem1, len, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] == 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + + /* same ptr - no move */ + rc = memcpy_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + for (i=0; i<LEN; i++) { mem2[i] = 65; } + + /* overlap */ + len = 100; + rc = memcpy_s(&mem1[0], len, &mem1[10], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] == 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + for (i=0; i<LEN; i++) { mem2[i] = 65; } + + /* overlap */ + len = 100; + rc = memcpy_s(&mem1[10], len, &mem1[0], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=10; i<len+10; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + len = 5; + rc = memcpy_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d\n", + __LINE__, i, mem1[i]); + } + } + + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + rc = memcpy_s(mem1, LEN, mem2, LEN/2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_memmove16_s.c b/safestringlib/unittests/test_memmove16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a096689e9a9a0c42b44880b9df592db1e7d6db5a --- /dev/null +++ b/safestringlib/unittests/test_memmove16_s.c @@ -0,0 +1,214 @@ +/*------------------------------------------------------------------ + * test_memmove16_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + +int test_memmove16_s() +{ + errno_t rc; + uint32_t i; + uint32_t len; + + uint16_t mem1[LEN]; + uint16_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memmove16_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove16_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove16_s(mem1, RSIZE_MAX_MEM16+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove16_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove16_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove16_s(mem1, LEN, mem2, RSIZE_MAX_MEM16+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* a valid move */ + len = LEN; + rc = memmove16_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d m1=%d m2=%d \n", + i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* length error */ + len = LEN/2; + rc = memmove16_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove16_s(mem1, len, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove16_s(mem1, len, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* same ptr - no move */ + rc = memmove16_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove16_s(&mem1[0], len, &mem1[10], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != 35) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove16_s(&mem1[10], len, &mem1[0], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<10; i++) { + if (mem1[i] != 25) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memmove32_s.c b/safestringlib/unittests/test_memmove32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..51b5a7db7c9aa0175740cca8e20de22a67949036 --- /dev/null +++ b/safestringlib/unittests/test_memmove32_s.c @@ -0,0 +1,214 @@ +/*------------------------------------------------------------------ + * test_memmove32_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + +int test_memmove32_s() +{ + errno_t rc; + uint32_t i; + uint32_t len; + + uint32_t mem1[LEN]; + uint32_t mem2[LEN]; + +/*--------------------------------------------------*/ + + rc = memmove32_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove32_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove32_s(mem1, RSIZE_MAX_MEM16+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove32_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove32_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove32_s(mem1, LEN, mem2, RSIZE_MAX_MEM16+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* a valid move */ + len = LEN; + rc = memmove32_s(mem1, len, mem2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d m1=%d m2=%d \n", + i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* length error */ + len = LEN/2; + rc = memmove32_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove32_s(mem1, len, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove32_s(mem1, len, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* same ptr - no move */ + rc = memmove32_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove32_s(&mem1[0], len, &mem1[10], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != 35) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove32_s(&mem1[10], len, &mem1[0], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<10; i++) { + if (mem1[i] != 25) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memmove_s.c b/safestringlib/unittests/test_memmove_s.c new file mode 100644 index 0000000000000000000000000000000000000000..5409195c5e058354c135075bd080ab081e728da2 --- /dev/null +++ b/safestringlib/unittests/test_memmove_s.c @@ -0,0 +1,213 @@ +/*------------------------------------------------------------------ + * test_memmove_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 1024 ) + +static uint8_t mem1[LEN]; +static uint8_t mem2[LEN]; + +int test_memmove_s (void) +{ + errno_t rc; + uint32_t i; + uint32_t len; + +/*--------------------------------------------------*/ + + rc = memmove_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memmove_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* a valid move */ + len = LEN; + rc = memmove_s(mem1, len, mem2, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d m1=%d m2=%d \n", + i, mem1[i], mem2[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* length error */ + len = LEN/2; + rc = memmove_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove_s(mem1, len, mem2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* invalid length - zero dest */ + len = LEN; + rc = memmove_s(mem1, len, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + /* same ptr - no move */ + rc = memmove_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove_s(&mem1[0], len, &mem1[10], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != 35) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 25; } + for (i=10; i<LEN-10; i++) { mem1[i] = 35; } + + /* overlap move */ + len = 20; + rc = memmove_s(&mem1[10], len, &mem1[0], len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<LEN; i++) { mem2[i] = 25; } + for (i=10; i<LEN-10; i++) { mem2[i] = 35; } + + for (i=0; i<10; i++) { + if (mem1[i] != 25) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_memset16_s.c b/safestringlib/unittests/test_memset16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3a8bf86f701f3ec46d4ef763d223da28f581af46 --- /dev/null +++ b/safestringlib/unittests/test_memset16_s.c @@ -0,0 +1,147 @@ +/*------------------------------------------------------------------ + * test_memset16_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256 ) + +int test_memset16_s() +{ + errno_t rc; + uint32_t len; + uint32_t i; + uint16_t value; + + uint16_t mem1[LEN]; + +/*--------------------------------------------------*/ + + value = 34; + + rc = memset16_s(NULL, LEN, value); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + value = 34; + + rc = memset16_s(mem1, 0, value); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 1; + value = 34; + + rc = memset16_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 2; + value = 34; + + rc = memset16_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 12; + value = 34; + + rc = memset16_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 31; + value = 34; + + rc = memset16_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 133; + value = 34; + + rc = memset16_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memset32_s.c b/safestringlib/unittests/test_memset32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..9d1f48834067f31e1b59d9272fadadd53c1139f5 --- /dev/null +++ b/safestringlib/unittests/test_memset32_s.c @@ -0,0 +1,150 @@ +/*------------------------------------------------------------------ + * test_memset32_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256 ) + +int test_memset32_s() +{ + errno_t rc; + uint32_t len; + + uint32_t i; + uint32_t value; + + uint32_t mem1[LEN]; + +/*--------------------------------------------------*/ + + value = 34; + + rc = memset32_s(NULL, LEN, value); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + value = 34; + + rc = memset32_s(mem1, 0, value); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 1; + value = 34; + + rc = memset32_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 2; + value = 34; + + rc = memset32_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 12; + value = 34; + + rc = memset32_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 31; + value = 34; + + rc = memset32_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 133; + value = 34; + + rc = memset32_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memset_s.c b/safestringlib/unittests/test_memset_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a701c395fef4f9a2e8a574cba35696c4b2eb4acb --- /dev/null +++ b/safestringlib/unittests/test_memset_s.c @@ -0,0 +1,148 @@ +/*------------------------------------------------------------------ + * test_memset_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256 ) + +static uint8_t mem1[LEN]; + +int test_memset_s (void) +{ + errno_t rc; + uint32_t len; + uint32_t i; + + uint8_t value; + +/*--------------------------------------------------*/ + + value = 34; + + rc = memset_s(NULL, LEN, value); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + value = 34; + + rc = memset_s(mem1, 0, value); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 1; + value = 34; + + rc = memset_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 2; + value = 34; + + rc = memset_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 12; + value = 34; + + rc = memset_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 31; + value = 34; + + rc = memset_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 133; + value = 34; + + rc = memset_s(mem1, len, value); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_memzero16_s.c b/safestringlib/unittests/test_memzero16_s.c new file mode 100644 index 0000000000000000000000000000000000000000..de6399127c32196b775abdbdd92f32c8c203cfb7 --- /dev/null +++ b/safestringlib/unittests/test_memzero16_s.c @@ -0,0 +1,126 @@ +/*------------------------------------------------------------------ + * test_memzero16_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 512 ) + +int test_memzero16_s() +{ + errno_t rc; + uint32_t i; + uint32_t len; + + uint16_t mem1[LEN]; + +/*--------------------------------------------------*/ + + rc = memzero16_s(NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero16_s(mem1, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero16_s(mem1, RSIZE_MAX_MEM16+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 1; + rc = memzero16_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 2; + rc = memzero16_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 3; + rc = memzero16_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = LEN; + rc = memzero16_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memzero32_s.c b/safestringlib/unittests/test_memzero32_s.c new file mode 100644 index 0000000000000000000000000000000000000000..67369b086700c3100d5b1d1390649b6abf46dbd1 --- /dev/null +++ b/safestringlib/unittests/test_memzero32_s.c @@ -0,0 +1,126 @@ +/*------------------------------------------------------------------ + * test_memzero32_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 512 ) + +int test_memzero32_s() +{ + errno_t rc; + uint32_t i; + uint32_t len; + + uint32_t mem1[LEN]; + +/*--------------------------------------------------*/ + + rc = memzero32_s(NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero32_s(mem1, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero32_s(mem1, RSIZE_MAX_MEM32+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 1; + rc = memzero32_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 2; + rc = memzero32_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 3; + rc = memzero32_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = LEN; + rc = memzero32_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i] ); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_memzero_s.c b/safestringlib/unittests/test_memzero_s.c new file mode 100644 index 0000000000000000000000000000000000000000..89b0f6c3986db76702c3758ff444d3a0451b0ffe --- /dev/null +++ b/safestringlib/unittests/test_memzero_s.c @@ -0,0 +1,126 @@ +/*------------------------------------------------------------------ + * test_memzero_s + * + * + *= + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 512 ) + +int test_memzero_s() +{ + errno_t rc; + uint32_t i; + uint32_t len; + + uint8_t mem1[LEN]; + +/*--------------------------------------------------*/ + + rc = memzero_s(NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero_s(mem1, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = memzero_s(mem1, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 1; + rc = memzero_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 2; + rc = memzero_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = 3; + rc = memzero_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + + len = LEN; + rc = memzero_s(mem1, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i] ); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_private.h b/safestringlib/unittests/test_private.h new file mode 100644 index 0000000000000000000000000000000000000000..24f9c995efdcb14668d21df2a30a862362e5d243 --- /dev/null +++ b/safestringlib/unittests/test_private.h @@ -0,0 +1,61 @@ +/*------------------------------------------------------------------ + * test_private.h - Internal test routines & library references + * + * 2012, Jonathan Toppins <jtoppins@users.sourceforge.net> + * + * Copyright (c) 2012, 2013 by Cisco Systems, Inc + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#ifndef __TEST_PRIVATE_H__ +#define __TEST_PRIVATE_H__ + +#ifdef __KERNEL__ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/ctype.h> + +#include <linux/string.h> +#define printf(...) printk(KERN_INFO __VA_ARGS__) + +#else + +#include <stdio.h> +#include <string.h> + +#endif + +#ifdef DEBUG +# ifdef __KERNEL__ +# define debug_printf(...) printk(KERN_DEBUG __VA_ARGS__) +# else +# define debug_printf printf +# endif +#else +#define debug_printf(...) +#endif + +#endif /* __TEST_PRIVATE_H__ */ diff --git a/safestringlib/unittests/test_stpcpy_s.c b/safestringlib/unittests/test_stpcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..a2afa425264de566f281d0d4b3d5e68178106cb3 --- /dev/null +++ b/safestringlib/unittests/test_stpcpy_s.c @@ -0,0 +1,478 @@ +/*------------------------------------------------------------------ + * test_stpcpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * + * TEST WHEN SRC & DEST ARE THE SAME + * TC 5: Test for src=dest, but string too long for dmax + * TC 6: Test for src=dest, proper return + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 7: Test for overlap of dest buffer into src buffer (src string too long) + * TC12: Test for proper longer string copy over shorter string + * TC13: Test for not enough space in destination (dest < src) + * TC15: Test for just enough space in destination + * + * TEST NON-STANDARD FAILURE CONDITIONS FOR NULL DEST STRINGS + * TC 9: Test copy null string over destination string (dest < src) + * TC10: Test copy NULL string over existing string (dest > src) + * TC11: Test copy string over NULL string (dest < src) + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC 8: Test src buffer runs into beginning of dest buffer (src buffer is unterminated or been destroyed by copy) + * TC14: Test for not enough space in destination (dest > src) + * TC16: Test copy short string over long string + * + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_stpcpy_s (void) +{ + char *ret; + errno_t rc; +#ifdef SAFE_LIB_STR_NULL_SLACK + uint32_t i; +#endif /*SAFE_LIB_STR_NULL_SLACK*/ + int32_t ind; + unsigned int testno = 0; + + printf("\nTesting stpcpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ + printf("Test #%d:\n", ++testno); + + ret = stpcpy_s(NULL, LEN, str2, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + printf("Test #%d:\n", ++testno); + + ret = stpcpy_s(str1, 0, str2, &rc); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + ret = stpcpy_s(str1, (RSIZE_MAX_STR+1), str2, &rc); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = stpcpy_s(str1, 5, NULL, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 5 Test for Src is same as dest, but source too long */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = stpcpy_s(str1, 5, str1, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 6 Test copy the same string onto itself */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = stpcpy_s(str1, LEN, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 7 Test for string overlap, destination < src, and + * dest overlaps onto the src string, so a copy would + * change the src string */ + printf("Test #%d:\n", ++testno); + + strcpy(&str1[0], "keep it simple"); + + ret = stpcpy_s(&str1[0], LEN, &str1[5], &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 8 Test for string overlap, destination > src, and + * src overlaps onto the dest string, so a copy would + * result in an infinite copy operation */ + printf("Test #%d:\n", ++testno); + + strcpy(&str1[0], "keep it simple"); + + ret = stpcpy_s(&str1[5], LEN, &str1[0], &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[5] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + + + + + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 9 Test copying the null string (zero length string) + * into another existing string, and overwriting + * it's contents */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + + ret = stpcpy_s(str1, LEN/2, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str1) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN/2; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 10 Test for copying NULL string over existing string */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + strcpy(&str2[0], "keep it simple"); + + ret = stpcpy_s(str2, LEN, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str2) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 11 Test copying string to end of NULL string */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + strcpy(&str2[0], "keep it simple"); + + ret = stpcpy_s(str1, LEN, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 12 Test for accurate String copy over existing string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + ret = stpcpy_s(str1, LEN, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 13: Test for not enough space in destination */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + ret = stpcpy_s(str1, 1, str2, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 14: Test for not enough space in destination (dest > src) */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + ret = stpcpy_s(str2, 2, str1, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 15: Test for just enough space in destination */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "it"); + + ret = stpcpy_s(str1, 3, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 16: Test copy short string over long string */ + printf("Test #%d:\n", ++testno); + + strcpy(str2, "qq12345weqeqeqeq"); + strcpy(str1, "it"); + + ret = stpcpy_s(str2, 10, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str2+strnlen_s(str2, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcpy */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_stpncpy_s.c b/safestringlib/unittests/test_stpncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..f8d288a88c27bb760116a33c93c3f132ec84e92e --- /dev/null +++ b/safestringlib/unittests/test_stpncpy_s.c @@ -0,0 +1,610 @@ +/*------------------------------------------------------------------ + * test_stpncpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * + * TEST WHEN SRC & DEST ARE THE SAME + * TC 5: Test for src=dest, but string too long for dmax + * TC 6: Test for src=dest, proper return + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 7: Test for overlap of dest buffer into src buffer (src string too long) + * TC12: Test for proper substring copy of string over long string (limited by smax) + * TC13: Test for accurate String copy over existing string, filling dest with dmax with NULLs + * TC14: Test for accurate subString copy over existing string (limited by smax), filling dest wtih dmax nulls + * TC15: Test for accurate subString copy (limited by smax) and adding null terminator, replacing existing string + * TC16: Test copy but not enough space in destination + * TC17: Test for not enough space in destination for null terminator + * TC18: Test for just enough space in destination + * TC19: Test copy short string over long string + * + * + * TEST NON-STANDARD FAILURE CONDITIONS FOR NULL DEST STRINGS + * TC 9: Test copy null string over destination string (dest < src) + * TC10: Test copy NULL string over existing string (dest > src) + * TC11: Test copy string over NULL string (dest < src) + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC 8: Test src buffer runs into beginning of dest buffer (src buffer is unterminated or been destroyed by copy) + * + * + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; + +extern char *stpncpy_s(char *dest, rsize_t dmax, const char *src, rsize_t smax, errno_t *err); + + +int test_stpncpy_s (void) +{ + char *ret; + errno_t rc; + uint32_t i; + int32_t ind; + rsize_t sz; + unsigned int testno = 0; + + + printf("\nTesting stpncpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d:\n", ++testno); + + ret = stpncpy_s(NULL, LEN, str2, LEN, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + printf("Test #%d:\n", ++testno); + + ret = stpncpy_s(str1, 0, str2, LEN, &rc); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + ret = stpncpy_s(str1, (RSIZE_MAX_STR+1), str2, LEN, &rc); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = stpncpy_s(str1, 5, NULL, LEN, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 5 Test for Src is same as dest, but source too long */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + sz = strnlen_s(str1, LEN); + ret = stpncpy_s(str1, 5, str1, sz, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 6 Test copy the same string onto itself */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + sz = strnlen_s(str1, LEN); + ret = stpncpy_s(str1, LEN, str1, sz, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 7 Test for string overlap, destination < src, and + * dest overlaps onto the src string, so a copy would + * change the src string */ + printf("Test #%d:\n", ++testno); + + strcpy(&str1[0], "keep it simple"); + sz = strnlen_s(str1, LEN); + ret = stpncpy_s(&str1[0], LEN, &str1[5], sz, &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 8 Test for string overlap, destination > src, and + * src overlaps onto the dest string, so a copy would + * result in an infinite copy operation */ + printf("Test #%d:\n", ++testno); + + strcpy(&str1[0], "keep it simple"); + sz = strnlen_s(str1, LEN); + ret = stpncpy_s(&str1[5], LEN, &str1[0], sz, &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[5] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + + + + + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 9 Test copying the null string (zero length string) + * into another existing string, and overwriting + * it's contents */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + + ret = stpncpy_s(str1, LEN/2, str2, 1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str1) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN/2; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 10 Test for copying NULL string over existing string */ + printf("Test #%d:\n", ++testno); + + memset_s(str1, '\0', 5); + strcpy(&str2[0], "keep it simple"); + + ret = stpncpy_s(str2, LEN, str1, 5, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str2) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 11 Test copying string to end of NULL string */ + printf("Test #%d:\n", ++testno); + + memset_s(str1, '\0', 50); + strcpy(&str2[0], "keep it simple"); + + sz = strnlen_s(str2, LEN); + + ret = stpncpy_s(str1, LEN, str2, sz, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- <> -%s- (smax=%zu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 12 Test for accurate subString copy over existing string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "xxxxxxxxxx"); + strcpy(str2, "abcde"); + + ret = stpncpy_s(str1, LEN, str2, 3, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } else { + + /* be sure the results are the same as strcmp */ + sz = strnlen_s(str1, LEN); + ind = strncmp(str1, str2, sz); + if (ind != 0 || sz != 3) { + printf("%s %u -%s- <> -%s- (smax=%zu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + /* be sure that the slack is correct */ + for (i=1; i<6; i++) { + if (ret[i] != 'x') { + printf("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + __FUNCTION__, __LINE__, i, rc ); + } + } + } + +/*--------------------------------------------------*/ +/* 13 Test for accurate String copy with extra nulls over existing string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "xxxxxxxxxxxxxxxxxxxx"); + strcpy(str2, "abcde"); + + ret = stpncpy_s(str1, LEN, str2, 10, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } else { + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } else { + /* be sure that the nulls are correct */ + for (i=0; i<5; i++) { + if (ret[i] != '\0') { + printf("%s %u Incorrect NULL fill at returned ptr index %d Error rc=%u \n", + __FUNCTION__, __LINE__, i, rc ); + } + } + /* be sure that the slack is correct */ + for (; i<15; i++) { + if (ret[i] != 'x') { + printf("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + __FUNCTION__, __LINE__, i, rc ); + } + } + } + } + +/*--------------------------------------------------*/ +/* 14 Test for accurate String copy and added null over existing string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "xxxxxxxxxx"); + strcpy(str2, "abcde"); + + ret = stpncpy_s(str1, LEN, str2, 5, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } else { + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } else { + /* be sure that the slack is correct */ + for (i=1; i<5; i++) { + if (ret[i] != 'x') { + printf("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + __FUNCTION__, __LINE__, i, rc ); + } + } + } + } + +/*--------------------------------------------------*/ +/* 15 Test for accurate String copy and added null over existing string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "xxxxxxxxxx"); + strcpy(str2, "abcde"); + + ret = stpncpy_s(str1, LEN, str2, 6, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } else { + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } else { + /* be sure that the slack is correct */ + for (i=1; i<5; i++) { + if (ret[i] != 'x') { + printf("%s %u Incorrect Slack at returned ptr index %d Error rc=%u \n", + __FUNCTION__, __LINE__, i, rc ); + } + } + } + } + +/*--------------------------------------------------*/ +/* 16 Test for not enough space in destination */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + sz = strnlen_s(str2, LEN); + + ret = stpncpy_s(str1, 1, str2, sz, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 17 Test for not enough space in destination for null terminator */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + sz = strnlen_s(str2, LEN); + + ret = stpncpy_s(str1, 14, str2, sz, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 18: Test for just enough space in destination */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "it"); + sz = strnlen_s(str2, LEN); + + ret = stpncpy_s(str1, 3, str2, sz, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 19: Test copy short string over long string */ + printf("Test #%d:\n", ++testno); + + strcpy(str1, "qq12345weqeqeqeq"); + strcpy(str2, "it"); + + ret = stpncpy_s(str1, 10, str2, 2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != '\0' || ret != str1+strnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcpy */ + ind = strcmp(str1, str2); + if (ind != 0) { + printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + /*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_strcasecmp_s.c b/safestringlib/unittests/test_strcasecmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..c54892f794c78daa3b7e30d1f8a9629e99c32e8f --- /dev/null +++ b/safestringlib/unittests/test_strcasecmp_s.c @@ -0,0 +1,242 @@ +/*------------------------------------------------------------------ + * test_strcasecmp_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strcasecmp_s (void) +{ + errno_t rc; + + int ind; + int std_ind; + +/*--------------------------------------------------*/ + + rc = strcasecmp_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasecmp_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasecmp_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasecmp_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasecmp_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strcasecmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = strcasecmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP IT SIMPLE"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, 1, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP IT SIMPLE"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, 2, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP IT SIMPLE"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, 4, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP IT SIMPLE"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = strcasecmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keeP it simple"); + + rc = strcasecmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + rc = strcasecmp_s(str1, LEN, str1, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP it simplified"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != ('I' - 'E')) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP 1234567890"); + strcpy (str2, "keep it simple"); + + rc = strcasecmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != ('1' - 'I')) { + printf("%s %u Error ind=%d rc=%d %d \n", + __FUNCTION__, __LINE__, ind, rc, ('1' - 'I')); + } + +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_strcasestr_s.c b/safestringlib/unittests/test_strcasestr_s.c new file mode 100644 index 0000000000000000000000000000000000000000..6e9eb5b25acc0740bad379b1a077142ae7baa1fa --- /dev/null +++ b/safestringlib/unittests/test_strcasestr_s.c @@ -0,0 +1,434 @@ +/*------------------------------------------------------------------ + * test_strcasestr_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +extern errno_t strcasestr_s (char *dest, rsize_t dmax, const char *src, rsize_t slen, char **substring); + +int test_strcasestr_s() +{ + errno_t rc; + char *sub; + char *std_sub; + + rsize_t len1; + rsize_t len2; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strcasestr_s(NULL, LEN, str2, LEN, &sub); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, LEN, NULL, LEN, &sub); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, 0, str2, LEN, &sub); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, RSIZE_MAX_STR+1, str2, LEN, &sub); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, LEN, str2, 0, &sub); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcasestr_s(str1, LEN, str2, RSIZE_MAX_STR+1, &sub); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + *str1 = '\0'; + *str2 = '\0'; + + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != str1) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error strcasestr_s() does not have same return as strcasestr() when str1 & str2 are zero length strings. rc=%u \n", + __FUNCTION__, __LINE__, rc); + printf("str1:[%s]\n", str1); + printf("str2:[%s]\n", str2); + printf("strcasestr_s returns:[%p]\n", sub); + printf("strcasestr returns:[%p]\n\n", std_sub); + } + +/*--------------------------------------------------*/ + + *str1 = '\0'; + strcpy(str1, "key"); + + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != str1) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is zero length string. rc=%u \n", + __FUNCTION__, __LINE__, rc); + printf("str1:[%s]\n", str1); + printf("str2:[%s]\n", str2); + printf("strcasestr_s returns:[%p]\n", sub); + printf("strcasestr returns:[%p]\n\n", std_sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + *str2 = '\0'; + + /* str2 being empty, must return str1 */ + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != str1) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is zero length string. rc=%u \n", + __FUNCTION__, __LINE__, rc); + printf("str1:[%s]\n", str1); + printf("str2:[%s]\n", str2); + printf("strcasestr_s returns:[%p]\n", sub); + printf("strcasestr returns:[%p]\n\n", std_sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "kee"); + + /* substring at beginning */ + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[0]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "eep it"); + + /* substring in the middle */ + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[1]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "ethe"); + + /* substring in the middle */ + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[15]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "er"); + + len1 = strlen(str1); + len2 = strlen(str2); + + /* substring at the end */ + rc = strcasestr_s(str1, len1, str2, len2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[18]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is substring of the end of str1. rc=%u \n", + __FUNCTION__, __LINE__, rc); + printf("str1:[%s]\n", str1); + printf("str2:[%s]\n", str2); + printf("strcasestr_s returns:[%p]\n", sub); + printf("strcasestr returns:[%p]\n\n", std_sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "er"); + + len1 = strlen(str1); + len2 = strlen(str2); + + /* substring at the end */ + rc = strcasestr_s(str1, len1, str2, 2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[18]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error strcasestr_s() does not have same return value as strcasestr() when str2 is substring of middle of str1. rc=%u \n", + __FUNCTION__, __LINE__, rc); + printf("str1:[%s]\n", str1); + printf("str2:[%s]\n", str2); + printf("strcasestr_s returns:[%p]\n", sub); + printf("strcasestr returns:[%p]\n\n", std_sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strcasestr_s(str1, 3, str2, LEN, &sub); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != NULL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strcasestr_s(str1, LEN, str2, 1, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[5]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strcasestr_s(str1, LEN, str2, 2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[5]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strcasestr_s(str1, LEN, str2, 5, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[5]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "1234"); + + len1 = strlen(str1); + rc = strcasestr_s(str1, len1, str2, LEN, &sub); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != NULL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "IT ALL"); + + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[5]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "EEP"); + + /* validate */ + rc = strcasestr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[1]) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strcasestr(str1, str2); + if ((int)sub != (int)std_sub) { // comparison to handle 32-bit library return and 64-bit library return + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strcat_s.c b/safestringlib/unittests/test_strcat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..2e6f7006f54980a87d9c5b442ddf963d5b4eda99 --- /dev/null +++ b/safestringlib/unittests/test_strcat_s.c @@ -0,0 +1,307 @@ +/*------------------------------------------------------------------ + * test_strcat_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strcat_s (void) +{ + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + +/*--------------------------------------------------*/ + + rc = strcat_s(NULL, LEN, str2); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcat_s(str1, LEN, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcat_s(str1, 0, str2); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcat_s(str1, (RSIZE_MAX_STR+1), str2); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaa"); + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 1, str2); + if (rc != ESUNTERM) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaa"); + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 2, str2); + if (rc != ESUNTERM) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(&str1[0], "aaaaaaaaaa"); + strcpy(&str2[0], "keep it simple"); + + len1 = strlen(str1); + len2 = strlen(str2); + + rc = strcat_s(str1, 50, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + len3 = strlen(str1); + if (len3 != (len1+len2)) { + debug_printf("%s %u lengths wrong: %u %u %u \n", + __FUNCTION__, __LINE__, len1, len2, len3); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 1, str2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 2, str2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 20, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, str2 ); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strcat_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqq"); + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "qqweqqkeep it simple"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "1234"); + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 12, str2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "1234"); + strcpy(str2, "keep it simple"); + + rc = strcat_s(str1, 52, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "1234keep it simple"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "12345678901234567890"); + + rc = strcat_s(str1, 8, &str1[7]); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "123456789"); + + rc = strcat_s(str1, 9, &str1[8]); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str2, "123"); + strcpy(str1, "keep it simple"); + + rc = strcat_s(str2, 31, &str1[0]); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str2, "123keep it simple"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + strcpy(str2, "1234"); + strcpy(str1, "56789"); + + rc = strcat_s(str2, 10, str1); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str2, "123456789"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strcmp_s.c b/safestringlib/unittests/test_strcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b15fff55e0ccc4e329d7925d9273714069bed3fb --- /dev/null +++ b/safestringlib/unittests/test_strcmp_s.c @@ -0,0 +1,240 @@ +/*------------------------------------------------------------------ + * test_strcmp_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strcmp_s (void) +{ + errno_t rc; + int ind; + int std_ind; + +/*--------------------------------------------------*/ + + rc = strcmp_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcmp_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcmp_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strcmp_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strcmp_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strcmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = strcmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strcmp_s(str1, 5, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + /* K - k == -32 */ + strcpy (str1, "Keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strcmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != (-32)) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = strcmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + /* p - P == 32 */ + strcpy (str1, "keep it simple"); + strcpy (str2, "keeP it simple"); + + rc = strcmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 32) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + std_ind = strcmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + rc = strcmp_s(str1, LEN, str1, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + /* be sure the results are the same as strcmp */ + std_ind = strcmp(str1, str1); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simplified"); + strcpy (str2, "keep it simple"); + + rc = strcmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind <= 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + /* be sure the results are the same as strcmp */ + std_ind = strcmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep it simplified"); + + rc = strcmp_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind >= 0) { + printf("%s %u Error ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + /* be sure the results are the same as strcmp */ + std_ind = strcmp(str1, str2); + if (ind != std_ind) { + printf("%s %u ind=%d std_ind=%d rc=%d \n", + __FUNCTION__, __LINE__, ind, std_ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strcmpfld_s.c b/safestringlib/unittests/test_strcmpfld_s.c new file mode 100644 index 0000000000000000000000000000000000000000..8a2d8d992e221f49891242eb335094893c250aeb --- /dev/null +++ b/safestringlib/unittests/test_strcmpfld_s.c @@ -0,0 +1,240 @@ +/*------------------------------------------------------------------ + * test_strcmpfld_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +int test_strcmpfld_s() +{ + errno_t rc; + uint32_t i; + rsize_t len; + int ind; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strcmpfld_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + rc = strcmpfld_s(str1, len, NULL, &ind); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + rc = strcmpfld_s(str1, len, str2, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strcmpfld_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strcmpfld_s(str1, (RSIZE_MAX_STR+1), str2, &ind); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + len = 1; + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + len = 2; + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + len = 3; + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + len = strlen(str1); + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str1[10] = '\0'; + + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[10] = '\0'; + + len = strlen(str1); + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen(str1); + str1[0] = '\0'; + str1[15] = '\0'; + + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + str2[15] = '\0'; + + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen(str1); + str1[3] = '\0'; /* now place a null */ + + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[3] = '\0'; + + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen(str1); + str1[1] = '\0'; /* now place nulls */ + str1[20] = '\0'; + + strcpy(str2, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[1] = '\0'; + str2[20] = '\0'; + + rc = strcmpfld_s(str1, len, str2, &ind); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d ind=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], ind, rc ); + } + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strcpy_s.c b/safestringlib/unittests/test_strcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..5fa9883cc21d1eaf66db1629ee49b2fc88e5998f --- /dev/null +++ b/safestringlib/unittests/test_strcpy_s.c @@ -0,0 +1,263 @@ +/*------------------------------------------------------------------ + * test_strcpy_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strcpy_s (void) +{ + errno_t rc; +#ifdef SAFE_LIB_STR_NULL_SLACK + uint32_t i; +#endif /*SAFE_LIB_STR_NULL_SLACK*/ + int32_t ind; + +/*--------------------------------------------------*/ + + rc = strcpy_s(NULL, LEN, str2); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + rc = strcpy_s(str1, 5, NULL); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ + + rc = strcpy_s(str1, 0, str2); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strcpy_s(str1, (RSIZE_MAX_STR+1), str2); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + + rc = strcpy_s(str1, LEN/2, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN/2; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + rc = strcpy_s(str1, LEN, str1); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(&str1[0], "keep it simple"); + + rc = strcpy_s(&str1[0], LEN, &str1[5]); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ + + strcpy(&str1[0], "keep it simple"); + str2[0] = '\0'; + + rc = strcpy_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(&str2[0], "keep it simple"); + + rc = strcpy_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + rc = strcpy_s(str1, LEN, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + rc = strcpy_s(str1, 1, str2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + rc = strcpy_s(str1, 2, str2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "it"); + + rc = strcpy_s(str1, 3, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qq12345weqeqeqeq"); + strcpy(str2, "it"); + + rc = strcpy_s(str1, 10, str2); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcpy */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + /* + for (i=0; i<10; i++) { + printf("str1[%i] = %d \n", i, str1[i]); + } */ + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strcpyfld_s.c b/safestringlib/unittests/test_strcpyfld_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0901636a74a25796269cdd3d5adc7644007c944c --- /dev/null +++ b/safestringlib/unittests/test_strcpyfld_s.c @@ -0,0 +1,209 @@ +/*------------------------------------------------------------------ + * test_strcpyfld_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +int test_strcpyfld_s() +{ + errno_t rc; + uint32_t i; + rsize_t len; + rsize_t slen = 0; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strcpyfld_s(NULL, LEN, str2, slen); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + len = 5; + slen = 5; + rc = strcpyfld_s(str1, len, NULL, slen); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + len = 5; + slen = 5; + rc = strcpyfld_s(str1, 0, str2, slen); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + slen = 5; + rc = strcpyfld_s(str1, (RSIZE_MAX_STR+1), str2, slen); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + slen = 0; + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + slen = len+1; + rc = strcpyfld_s(str1, (RSIZE_MAX_STR+1), str2, slen); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = 1; + + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = 1; + str2[0] = '\0'; + + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = 2; + + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = 2; + str2[0] = '\0'; + + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = 3; + + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = 3; + str2[0] = '\0'; + + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen(str1); + + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = strlen(str2); + str2[0] = '\0'; + + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + len = strlen(str1) + 2; + str1[20] = '\0'; + + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + slen = strlen(str1); + str2[0] = '\0'; + str2[20] = '\0'; + + rc = strcpyfld_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<slen; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc ); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strcpyfldin_s.c b/safestringlib/unittests/test_strcpyfldin_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0ddcb6b9b3be75aaf80a5d43d1b2670691011d25 --- /dev/null +++ b/safestringlib/unittests/test_strcpyfldin_s.c @@ -0,0 +1,246 @@ +/*------------------------------------------------------------------ + * test_strcpyfldin_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +int test_strcpyfldin_s() +{ + errno_t rc; + uint32_t i; + rsize_t len; + rsize_t slen; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strcpyfldin_s(NULL, LEN, str2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + rc = strcpyfldin_s(str1, len, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + rc = strcpyfldin_s(str1, 0, str2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strcpyfldin_s(str1, (RSIZE_MAX_STR+1), str2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = strlen(str1); + slen = strlen(str2); + + rc = strcpyfldin_s(str1, len, str2, slen); + if (rc == EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != 0) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 1; + rc = strcpyfldin_s(str1, len, str2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 2; + rc = strcpyfldin_s(str1, len, str2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 3; + rc = strcpyfldin_s(str1, len, str2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + /* same string in dest and src */ + len = LEN; + rc = strcpyfldin_s(str1, len, str1, len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple for best results "); + len = strlen(str1); + + /* overlap */ + rc = strcpyfldin_s(&str1[0], len, &str1[5], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple for best results "); + len = 20; + + /* overlap */ + rc = strcpyfldin_s(&str1[10], len, &str1[0], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=10; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + len = strlen(str1); + + strcpy(str2, "KEEP IT SIMPLE PLEASE"); + + rc = strcpyfldin_s(str1, len, str2, len); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "always keep it simple"); + len = strlen(str1); + + strcpy(str2, "keep it simple"); + slen = strlen(str2); + + rc = strcpyfldin_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<slen; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strcpyfldout_s.c b/safestringlib/unittests/test_strcpyfldout_s.c new file mode 100644 index 0000000000000000000000000000000000000000..e4f3305e668ebd40d8ee27d8b543ba08c3e30c95 --- /dev/null +++ b/safestringlib/unittests/test_strcpyfldout_s.c @@ -0,0 +1,250 @@ +/*------------------------------------------------------------------ + * test_strcpyfldout_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +int test_strcpyfldout_s() +{ + errno_t rc; + uint32_t i; + rsize_t len; + rsize_t slen = 0; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strcpyfldout_s(NULL, LEN, str2, slen); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + rc = strcpyfldout_s(str1, len, NULL, len); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + rc = strcpyfldout_s(str1, 0, str2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strcpyfldout_s(str1, (RSIZE_MAX_STR+1), str2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + slen = 0; + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 5; + slen = 6; + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 1; + slen = 1; + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* str1 becomes null */ + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 2; + slen = 2; + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len-1; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "01234567890123456789"); + + len = 3; + slen = 3; + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len-1; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + /* same string in dest and src */ + len = LEN; + rc = strcpyfldout_s(str1, len, str1, len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple for best results"); + len = strlen(str1); + + /* overlap */ + rc = strcpyfldout_s(&str1[0], len, &str1[5], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple for best results "); + len = 20; + + /* overlap */ + rc = strcpyfldout_s(&str1[10], len, &str1[0], len); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=10; i<len; i++) { + if (str1[i] != '\0') { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + len = strlen(str1); + + strcpy(str2, "aaaaaaaaaaaaaa"); + slen = strlen(str2); + + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<len-1; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "always keep it simple"); + len = strlen(str1); + + strcpy(str2, "keep it simple"); + slen = strlen(str2); + + rc = strcpyfldout_s(str1, len, str2, slen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<slen; i++) { + if (str1[i] != str2[i]) { + debug_printf("%s %u diff s1[%d]=%d s2[%d]=%d rc=%u \n", + __FUNCTION__, __LINE__, i, str1[i], i, str2[i], rc); + } + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strcspn_s.c b/safestringlib/unittests/test_strcspn_s.c new file mode 100644 index 0000000000000000000000000000000000000000..0abfe6399702c237455b661456fa8005a47d9612 --- /dev/null +++ b/safestringlib/unittests/test_strcspn_s.c @@ -0,0 +1,310 @@ +/*------------------------------------------------------------------ + * test_strcspn_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strcspn_s (void) +{ + errno_t rc; + rsize_t count; + int std_count; + unsigned int testno = 0; + + + +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d: NULL Scan String Check\n", ++testno); + + rc = strcspn_s(NULL, LEN, str2, LEN, &count); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 2 Test for NULL source check */ + printf("Test #%d: NULL Exclusion String Check: \n", ++testno); + + rc = strcspn_s(str1, LEN, NULL, LEN, &count); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 3 Test for NULL Count ouput check */ + printf("Test #%d: NULL Count parameter Check: \n", ++testno); + + rc = strcspn_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 4 Test for zero length destination */ + printf("Test #%d:Zero Length Scan String Check\n", ++testno); + + rc = strcspn_s(str1, 0, str2, LEN, &count); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 5 Test for zero length source */ + printf("Test #%d:Zero Length Exclusion String Check\n", ++testno); + + rc = strcspn_s(str1, LEN, str2, 0, &count); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 6 Test for too large length destination */ + printf("Test #%d:Exceed Max Length Scan String Check\n", ++testno); + + rc = strcspn_s(str1, RSIZE_MAX_STR+1, str2, LEN, &count); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 7 Test for too large length destination */ + printf("Test #%d:Exceed Max Length Exclusion String Check\n", ++testno); + + rc = strcspn_s(str1, RSIZE_MAX_STR, str2, RSIZE_MAX_STR+1, &count); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 8 Test for */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strcspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + + std_count = strcspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ +/* 9 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP"); + + rc = strcspn_s(str1, 1, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 1) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 10 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP"); + + rc = strcspn_s(str1, 2, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 2) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 11 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP"); + + rc = strcspn_s(str1, 3, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 3) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + + +/*--------------------------------------------------*/ +/* 12 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP"); + + rc = strcspn_s(str1, 6, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 6) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ +/* 13 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "ABCDEF"); + + rc = strcspn_s(str1, 6, str2, 2, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 6) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ +/* 14 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strcspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strcspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ +/* 15 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "notincluded"); + + rc = strcspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strcspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ +/* 16 Test for */ + printf("Test #%d:\n", ++testno); + + + strcpy (str1, "keep it simple"); + strcpy (str2, "1234567890"); + + rc = strcspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strcspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_strfirstchar_s.c b/safestringlib/unittests/test_strfirstchar_s.c new file mode 100644 index 0000000000000000000000000000000000000000..75f16aa9c4146cdf344c8cf261caa28658046cbe --- /dev/null +++ b/safestringlib/unittests/test_strfirstchar_s.c @@ -0,0 +1,148 @@ +/*------------------------------------------------------------------ + * test_strfirstchar_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +int test_strfirstchar_s() +{ + errno_t rc; + rsize_t len; + + char *first; + char str1[LEN]; + +/*--------------------------------------------------*/ + + rc = strfirstchar_s(NULL, LEN, 'a', &first); + if (rc != ESNULLP) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + + if (first) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstchar_s(str1, LEN, 'a', NULL); + if (rc != ESNULLP) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstchar_s(str1, 0, 'a', &first); + if (rc != ESZEROL) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + + if (first) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstchar_s(str1, RSIZE_MAX_STR+1, 'a', &first); + if (rc != ESLEMAX) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + + if (first) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + + rc = strfirstchar_s(str1, LEN, 'a', &first); + if (rc != ESNOTFND) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + + if (first) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + + rc = strfirstchar_s(str1, LEN, 'z', &first); + if (rc != ESNOTFND) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + + if (first) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEEp it simple"); + + rc = strfirstchar_s(str1, LEN, 'E', &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first != &str1[1]) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simpleZ"); + len = strlen(str1); + + rc = strfirstchar_s(str1, len, 'Z', &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first != &str1[14]) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simpleZZ"); + + rc = strfirstchar_s(str1, LEN, 'Z', &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first != &str1[14]) { + printf("%s %u Error str1=%p first=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, first, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strfirstdiff_s.c b/safestringlib/unittests/test_strfirstdiff_s.c new file mode 100644 index 0000000000000000000000000000000000000000..1dc21401b8735d3e05a3072a62dccdf783cfe3e4 --- /dev/null +++ b/safestringlib/unittests/test_strfirstdiff_s.c @@ -0,0 +1,229 @@ +/*------------------------------------------------------------------ + * test_strfirstdiff_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strfirstdiff_s() +{ + errno_t rc; + rsize_t ind; + + char str1[LEN]; + char str2[LEN]; + +/*--------------------------------------------------*/ + + rc = strfirstdiff_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstdiff_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstdiff_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstdiff_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstdiff_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strfirstdiff_s(str1, LEN, str2, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEeP it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 1) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keEp IT simple"); + + rc = strfirstdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 2) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + rc = strfirstdiff_s(str1, LEN, str1, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, 1, str2, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simplE"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, 13, str2, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simplE"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, 14, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simplE"); + strcpy (str2, "keep it simple"); + + rc = strfirstdiff_s(str1, 55, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strfirstsame_s.c b/safestringlib/unittests/test_strfirstsame_s.c new file mode 100644 index 0000000000000000000000000000000000000000..cef3bc7763caa0c00e090af2623a7731529d80a2 --- /dev/null +++ b/safestringlib/unittests/test_strfirstsame_s.c @@ -0,0 +1,246 @@ +/*------------------------------------------------------------------ + * test_strfirstsame_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strfirstsame_s() +{ + errno_t rc; + rsize_t ind; + + char str1[LEN]; + char str2[LEN]; + +/*--------------------------------------------------*/ + + rc = strfirstsame_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstsame_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstsame_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstsame_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strfirstsame_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strfirstsame_s(str1, LEN, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEEP it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 1) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 4) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLe"); + + rc = strfirstsame_s(str1, 13, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLe"); + + rc = strfirstsame_s(str1, 14, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + /* same string for src and dest */ + rc = strfirstsame_s(str1, LEN, str1, &ind); + if (rc != EOK) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP it simple"); + strcpy (str2, "keep it simple"); + + rc = strfirstsame_s(str1, 1, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLE"); + + rc = strfirstsame_s(str1, 5, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLE"); + + rc = strfirstsame_s(str1, LEN, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strisalphanumeric_s.c b/safestringlib/unittests/test_strisalphanumeric_s.c new file mode 100644 index 0000000000000000000000000000000000000000..25cb5a9a76c7fb99625e473d33f5c39776446a0c --- /dev/null +++ b/safestringlib/unittests/test_strisalphanumeric_s.c @@ -0,0 +1,140 @@ +/*------------------------------------------------------------------ + * test_strisalphanumeric_s.c + * + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strisalphanumeric_s() +{ + bool rc; + + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strisalphanumeric_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strisalphanumeric_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + /* exceeds max */ + len = 99999; + rc = strisalphanumeric_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + /* empty string */ + rc = strisalphanumeric_s("", LEN); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "123456789"); + len = 4; + + rc = strisalphanumeric_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "N"); + + rc = strisalphanumeric_s(str, 1); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "N"); + len = strlen(str); + + rc = strisalphanumeric_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "NowISTHETimE4us"); + len = strlen(str); + + rc = strisalphanumeric_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "qq21ego"); + len = strlen(str); + + rc = strisalphanumeric_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "1234"); + str[2] = 132; /* special char */ + len = strlen(str); + + /* special char embedded */ + rc = strisalphanumeric_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "!@#$%^&*(){}[]:;\"'?/.>,<"); + len = strlen(str); + + rc = strisalphanumeric_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strisascii_s.c b/safestringlib/unittests/test_strisascii_s.c new file mode 100644 index 0000000000000000000000000000000000000000..7737df9fa3cc2dedef5b4eaafdfa606e808e5cbf --- /dev/null +++ b/safestringlib/unittests/test_strisascii_s.c @@ -0,0 +1,126 @@ +/*------------------------------------------------------------------ + * test_strisascii_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strisascii_s() +{ + bool rc; + + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strisascii_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strisascii_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strisascii_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + /* empty string */ + rc = strisascii_s("", 2); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "ABCDEFGHIJK"); + + rc = strisascii_s(str, 2); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "N"); + len = strlen(str); + + rc = strisascii_s(str, 1); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "N"); + len = strlen(str); + + rc = strisascii_s(str, 2); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "NowISTHETimE"); + len = strlen(str); + + rc = strisascii_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qq21ego"); + + rc = strisascii_s(str, 33); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1234"); + str[2] = 132; /* special char */ + len = strlen(str); + + /* special char embedded */ + rc = strisascii_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strisdigit_s.c b/safestringlib/unittests/test_strisdigit_s.c new file mode 100644 index 0000000000000000000000000000000000000000..268ffe231c8fcf0bd3b42d15029bbb67d99539e6 --- /dev/null +++ b/safestringlib/unittests/test_strisdigit_s.c @@ -0,0 +1,114 @@ +/*------------------------------------------------------------------ + * test_strisdigit_s + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strisdigit_s() +{ + bool rc; + + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strisdigit_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strisdigit_s("1234", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strisdigit_s("1234", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 9; + rc = strisdigit_s("", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "123456789"); + len = 4; + + rc = strisdigit_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "1"); + len = strlen(str); + + rc = strisdigit_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "12"); + len = strlen(str); + + rc = strisdigit_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "1abcd"); + len = strlen(str); + + rc = strisdigit_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "abcd"); + len = strlen(str); + + rc = strisdigit_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strishex_s.c b/safestringlib/unittests/test_strishex_s.c new file mode 100644 index 0000000000000000000000000000000000000000..31f8b529f1679fd6ece3489d8809bd3f63d4cf4c --- /dev/null +++ b/safestringlib/unittests/test_strishex_s.c @@ -0,0 +1,135 @@ +/*------------------------------------------------------------------ + * test_strishex_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strishex_s() +{ + bool rc; + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strishex_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + str[0] = '\0'; + rc = strishex_s(str, 5); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strishex_s("1234", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strishex_s("1234", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 9; + rc = strishex_s("", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "123456789"); + len = 6; + + rc = strishex_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1"); + len = strlen(str); + + rc = strishex_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "12"); + len = strlen(str); + + rc = strishex_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1Af"); + len = strlen(str); + + rc = strishex_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "FF"); + len = strlen(str); + + rc = strishex_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1abzd"); + len = strlen(str); + + /* non hex char in string */ + rc = strishex_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strislowercase_s.c b/safestringlib/unittests/test_strislowercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3960a5b9dc3ea26b58325224580c42c7881647ab --- /dev/null +++ b/safestringlib/unittests/test_strislowercase_s.c @@ -0,0 +1,103 @@ +/*------------------------------------------------------------------ + * test_strislowercase_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strislowercase_s() +{ + bool rc; + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strislowercase_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strislowercase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strislowercase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + str[0] = '\0'; + rc = strislowercase_s(str, 5); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qqweqeqeqeq"); + len = 3; + + rc = strislowercase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qqweqeqeqeq"); + len = strlen(str); + + rc = strislowercase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qqWe go"); + len = strlen(str); + + rc = strislowercase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1234"); + len = strlen(str); + + rc = strislowercase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strismixed_s.c b/safestringlib/unittests/test_strismixed_s.c new file mode 100644 index 0000000000000000000000000000000000000000..f0672390333cbf829d7acca96874a97388e68e42 --- /dev/null +++ b/safestringlib/unittests/test_strismixed_s.c @@ -0,0 +1,114 @@ +/*------------------------------------------------------------------ + * test_strismixed_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strismixed_s() +{ + bool rc; + rsize_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strismixedcase_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strismixedcase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = RSIZE_MAX_STR+1; + rc = strismixedcase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 9; + rc = strismixedcase_s("", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "AaBbCcDdEeFf"); + len = 5; + + rc = strismixedcase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "N"); + len = strlen(str); + + rc = strismixedcase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "NowISTHETimE"); + len = strlen(str); + + rc = strismixedcase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "qq21ego"); + len = strlen(str); + + rc = strismixedcase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "1234"); + len = strlen(str); + + rc = strismixedcase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strispassword_s.c b/safestringlib/unittests/test_strispassword_s.c new file mode 100644 index 0000000000000000000000000000000000000000..6a54410b58ae90d4c79afb9a17ab9c37fc802bd9 --- /dev/null +++ b/safestringlib/unittests/test_strispassword_s.c @@ -0,0 +1,129 @@ +/*------------------------------------------------------------------ + * test_strispassword_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN 64 + + +int test_strispassword_s() +{ + bool rc; + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + rc = strispassword_s(NULL, LEN); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strispassword_s("", LEN); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strispassword_s("Test4You&", 0); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strispassword_s("Test4You&", 999); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strispassword_s("", 9); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "Test4You*123"); + len = 8; + + rc = strispassword_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "Test4You*"); + len = strlen(str); + + rc = strispassword_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "Test4You*Test4You*Test4You*"); + len = strlen(str); + + rc = strispassword_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "Eest!22/"); + len = strlen(str); + + rc = strispassword_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "pa$$W0rD"); + len = strlen(str); + + rc = strispassword_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "Test"); + len = strlen(str); + + rc = strispassword_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strisuppercase_s.c b/safestringlib/unittests/test_strisuppercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..9064d5221750f7c4cde52fbcd7bd59de9fd1af69 --- /dev/null +++ b/safestringlib/unittests/test_strisuppercase_s.c @@ -0,0 +1,114 @@ +/*------------------------------------------------------------------ + * test_strisuppercase_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strisuppercase_s() +{ + bool rc; + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strisuppercase_s(NULL, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strisuppercase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strisuppercase_s("test", len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + str[0] = '\0'; + rc = strisuppercase_s(str, 5); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "ABCDEFGHIGHIJ"); + len = 7; + + rc = strisuppercase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "ABCDEFGHIGHIJ"); + len = strlen(str); + + rc = strisuppercase_s(str, len); + if (rc != true) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qqWe go"); + len = strlen(str); + + rc = strisuppercase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1234"); + len = strlen(str); + + rc = strisuppercase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "!@#$%^&*()"); + len = strlen(str); + + rc = strisuppercase_s(str, len); + if (rc != false) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strlastchar_s.c b/safestringlib/unittests/test_strlastchar_s.c new file mode 100644 index 0000000000000000000000000000000000000000..31543bf1a67029f5450186b01794c73aab26e52d --- /dev/null +++ b/safestringlib/unittests/test_strlastchar_s.c @@ -0,0 +1,163 @@ +/*------------------------------------------------------------------ + * test_strlastchar_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strlastchar_s() +{ + errno_t rc; + + char *last; + char str1[LEN]; + +/*--------------------------------------------------*/ + + rc = strlastchar_s(NULL, LEN, 'a', &last); + if (rc != ESNULLP) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastchar_s(str1, LEN, 'a', NULL); + if (rc != ESNULLP) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastchar_s(str1, 0, 'a', &last); + if (rc != ESZEROL) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastchar_s(str1, RSIZE_MAX_STR+1, 'a', &last); + if (rc != ESLEMAX) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + + rc = strlastchar_s(str1, LEN, 'a', &last); + if (rc != ESNOTFND) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + + rc = strlastchar_s(str1, 5, 'z', &last); + if (rc != ESNOTFND) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simplezz"); + + rc = strlastchar_s(str1, LEN, 'z', &last); + if (rc != EOK) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + + if (last != &str1[15]) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + + rc = strlastchar_s(str1, LEN, 'K', &last); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (last != &str1[0]) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEEp it simple"); + + rc = strlastchar_s(str1, LEN, 'E', &last); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (last != &str1[2]) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEep it Simple"); + + rc = strlastchar_s(str1, LEN, 'S', &last); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (last != &str1[8]) { + printf("%s %u Error str1=%p last=%p rc=%d \n", + __FUNCTION__, __LINE__, str1, last, rc); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strlastdiff_s.c b/safestringlib/unittests/test_strlastdiff_s.c new file mode 100644 index 0000000000000000000000000000000000000000..2310e75d62d9e27bf7f01b82acd94e43532f0def --- /dev/null +++ b/safestringlib/unittests/test_strlastdiff_s.c @@ -0,0 +1,198 @@ +/*------------------------------------------------------------------ + * test_strlastdiff_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strlastdiff_s() +{ + errno_t rc; + rsize_t ind; + + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + + rc = strlastdiff_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastdiff_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastdiff_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastdiff_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastdiff_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strlastdiff_s(str1, LEN, str2, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep iT simple"); + strcpy (str2, "keep it simple"); + + rc = strlastdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 6) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEep it simple"); + strcpy (str2, "keep it simple"); + + rc = strlastdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 1) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it siMple"); + strcpy (str2, "keEp it Simple"); + + rc = strlastdiff_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 10) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + rc = strlastdiff_s(str1, LEN, str1, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep it simple"); + + rc = strlastdiff_s(str1, 1, str2, &ind); + if (rc != ESNODIFF) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep it simplE"); + + rc = strlastdiff_s(str1, 25, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strlastsame_s.c b/safestringlib/unittests/test_strlastsame_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d81fe5262cafc1f0b8061ced0b4908a15c2f493f --- /dev/null +++ b/safestringlib/unittests/test_strlastsame_s.c @@ -0,0 +1,246 @@ +/*------------------------------------------------------------------ + * test_strlastsame_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strlastsame_s() +{ + errno_t rc; + rsize_t ind; + + char str1[LEN]; + char str2[LEN]; + +/*--------------------------------------------------*/ + + rc = strlastsame_s(NULL, LEN, str2, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastsame_s(str1, LEN, NULL, &ind); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastsame_s(str1, LEN, str2, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastsame_s(str1, 0, str2, &ind); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + rc = strlastsame_s(str1, RSIZE_MAX_STR+1, str2, &ind); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "Keep it simple"); + strcpy (str2, "keep_IT_SIMPLISTIC"); + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 3) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kEEP_IT_SIMPLE"); + strcpy (str2, "keep it simplistic"); + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "kkEEP_IT_SIMPLE"); + strcpy (str2, "kkeep it simplistic"); + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 1) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keeP_IT_SIMPLe"); + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + + /* same string for src and dest */ + rc = strlastsame_s(str1, LEN, str1, &ind); + if (rc != EOK) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 13) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP it simple"); + strcpy (str2, "keep it simple"); + + rc = strlastsame_s(str1, 1, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "KEEP it simple"); + strcpy (str2, "Keep it simple"); + + rc = strlastsame_s(str1, 1, str2, &ind); + if (rc != EOK) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLE"); + + rc = strlastsame_s(str1, 5, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "KEEP_IT_SIMPLE"); + + rc = strlastsame_s(str1, LEN, str2, &ind); + if (rc != ESNOTFND) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + + if (ind != 0) { + printf("%s %u Error ind=%zu rc=%d \n", + __FUNCTION__, __LINE__, ind, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strljustify_s.c b/safestringlib/unittests/test_strljustify_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d8a6b511e399bb16d77f1e2745081c98872bbe9b --- /dev/null +++ b/safestringlib/unittests/test_strljustify_s.c @@ -0,0 +1,248 @@ +/*------------------------------------------------------------------ + * test_strljustify_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strljustify_s() +{ + errno_t rc; + int ind; + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strljustify_s(NULL, len); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strljustify_s("test", len); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strljustify_s("test", len); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + /* empty string */ + rc = strljustify_s(" ", 12); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABCDEFGHIJK"); + len = 2; + + /* unterminated */ + rc = strljustify_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " ABCDEFGHIJK"); + len = 5; + + /* unterminated */ + rc = strljustify_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "A"); + len = 1; + + /* a one char string will be emptied - str[0]=='\0' */ + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABC"); + len = 2; + + /* this will be unterminated */ + rc = strljustify_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABC"); + len = 5; + + /* this will be unterminated */ + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "ABC"); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " B "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "B "); + if (ind != 0) { + printf("%s %u Error -%s- ind=%d \n", + __FUNCTION__, __LINE__, str, ind); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " B "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "B "); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " C "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "C "); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " NowISTHETimE "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "NowISTHETimE "); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " qq21ego "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " 1234 "); + len = strlen(str); + + rc = strljustify_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strncat_s.c b/safestringlib/unittests/test_strncat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..5bedd3972dfad62d51776210cb17593acc396418 --- /dev/null +++ b/safestringlib/unittests/test_strncat_s.c @@ -0,0 +1,217 @@ +/*------------------------------------------------------------------ + * test_strncat_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strncat_s (void) +{ + errno_t rc; + int32_t ind; + +/*--------------------------------------------------*/ + + rc = strncat_s(NULL, LEN, str2, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strncat_s(str1, LEN, NULL, LEN); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strncat_s(str1, 0, str2, LEN); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strncat_s(str1, (RSIZE_MAX_STR+1), str2, LEN); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strncat_s(str1, (RSIZE_MAX_STR), str2, (RSIZE_MAX_STR+1)); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaa"); + strcpy(str2, "keep it simple"); + + rc = strncat_s(str1, 1, str2, LEN); + if (rc != ESUNTERM) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaa"); + strcpy(str2, "keep it simple"); + + rc = strncat_s(str1, 2, str2, LEN); + if (rc != ESUNTERM) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "a"); + strcpy(str2, "b"); + + rc = strncat_s(str1, 2, str2, 1); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "a"); + strcpy(str2, "b"); + + rc = strncat_s(str1, 3, str2, 1); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "ab"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaa"); + strcpy(str2, "keep it simple"); + + rc = strncat_s(str1, 50, str2, LEN); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "aaaaaaaaaakeep it simple"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(str1, "good"); + strcpy(str2, "bye"); + + rc = strncat_s(str1, 100, str2, 100); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "goodbye"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(str1, "hello"); + + rc = strncat_s(str1, 6, "", 1); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "hello"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(str1, "hello"); + + rc = strncat_s(str1, 6, "X", 2); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(str1, "abc"); + + rc = strncat_s(str1, 7, "defghijklmn", 3); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + ind = strcmp(str1, "abcdef"); + if (ind != 0) { + debug_printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strncpy_s.c b/safestringlib/unittests/test_strncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ba56fd1ceb3023eecd29f937d6ad640abdbb0fc6 --- /dev/null +++ b/safestringlib/unittests/test_strncpy_s.c @@ -0,0 +1,328 @@ +/*------------------------------------------------------------------ + * test_strncpy_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +static char str1[LEN]; +static char str2[LEN]; +static char dest[LEN]; + +int test_strncpy_s (void) +{ + errno_t rc; + rsize_t nlen; + int32_t ind; + +/*--------------------------------------------------*/ + + nlen = 5; + rc = strncpy_s(NULL, LEN, str2, nlen); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + nlen = 5; + rc = strncpy_s(str1, 5, NULL, nlen); + if (rc != ESNULLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + nlen = 5; + rc = strncpy_s(str1, 0, str2, nlen); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strncpy_s(str1, (RSIZE_MAX_STR+1), str2, nlen); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + + rc = strncpy_s(str1, 5, str2, 0); + if (rc != ESZEROL) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + +#if 1 + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + strcpy(str2, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + + rc = strncpy_s(str1, 5, str2, (RSIZE_MAX_STR+1)); + if (rc != ESLEMAX) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = '\0'; + nlen = 5; + + rc = strncpy_s(&str1[0], LEN/2, &str2[0], nlen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + nlen = 5; + + /* test overlap */ + rc = strncpy_s(str1, LEN, str1, nlen); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + nlen = 18; + + rc = strncpy_s(&str1[0], LEN, &str1[5], nlen); + if (rc != ESOVRLP) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + str2[0] = '\0'; + + nlen = 10; + rc = strncpy_s(str1, LEN, str2, nlen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[0] != '\0') { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + strcpy(str2, "keep it simple"); + + nlen = 20; + rc = strncpy_s(str1, LEN, str2, nlen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + nlen = 32; + rc = strncpy_s(str1, LEN, str2, nlen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + rc = strncpy_s(str1, 1, str2, nlen); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qqweqeqeqeq"); + strcpy(str2, "keep it simple"); + + rc = strncpy_s(str1, 2, str2, nlen); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != '\0') { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(dest, " "); + strcpy(str1, "hello"); + + rc = strncpy_s(dest, 6, str1, 100); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(dest, str1); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(dest, " "); + strcpy(str2, "goodbye"); + + rc = strncpy_s(dest, 5, str2, 7); + if (rc != ESNOSPC) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* TR example */ + + strcpy(dest, " "); + strcpy(str2, "goodbye"); + + rc = strncpy_s(dest, 5, str2, 4); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(dest, "good"); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(dest, " "); + strcpy(str2, "good"); + + /* strnlen("good") < 5 */ + rc = strncpy_s(dest, 5, str2, 8); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(dest, "good"); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "qq12345weqeqeqeq"); + strcpy(str2, "it"); + + nlen = 10; + rc = strncpy_s(str1, 10, str2, nlen); + if (rc != EOK) { + debug_printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + /* be sure the results are the same as strcmp */ + ind = strcmp(str1, str2); + if (ind != 0) { + debug_printf("%s %u -%s- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strnlen_s.c b/safestringlib/unittests/test_strnlen_s.c new file mode 100644 index 0000000000000000000000000000000000000000..d0f507a5ec63cf774522f80a3f6c0bbac3586d23 --- /dev/null +++ b/safestringlib/unittests/test_strnlen_s.c @@ -0,0 +1,129 @@ +/*------------------------------------------------------------------ + * test_strnlen_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + +int test_strnlen_s (void) +{ + rsize_t len; + rsize_t std_len; + rsize_t max_len; + +/*--------------------------------------------------*/ + + max_len = 3; + len = strnlen_s(NULL, max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + max_len = 0; + len = strnlen_s("test", max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + max_len = RSIZE_MAX_STR+1; + len = strnlen_s("test", max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + std_len = strlen(""); + max_len = RSIZE_MAX_STR; + + len = strnlen_s ("", max_len); + + if (std_len != len) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + std_len = strlen("t"); + max_len = RSIZE_MAX_STR; + + len = strnlen_s ("t", max_len); + + if (std_len != len) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + std_len = strlen("to"); + max_len = RSIZE_MAX_STR; + + len = strnlen_s ("to", max_len); + + if (std_len != len) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + std_len = strlen("testing"); + max_len = RSIZE_MAX_STR; + + len = strnlen_s ("testing", max_len); + + if (std_len != len) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + max_len = 1; + len = strnlen_s ("testing", max_len); + + if (len != max_len) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + max_len = 2; + len = strnlen_s ("testing", max_len); + + if (len != max_len) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + max_len = 3; + len = strnlen_s ("testing", max_len); + + if (len != max_len) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_strnterminate_s.c b/safestringlib/unittests/test_strnterminate_s.c new file mode 100644 index 0000000000000000000000000000000000000000..004b47d0b94d1f7cf20e8cd5738eaa54cbbc027c --- /dev/null +++ b/safestringlib/unittests/test_strnterminate_s.c @@ -0,0 +1,182 @@ +/*------------------------------------------------------------------ + * test_strnterminate_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strnterminate_s() +{ + rsize_t len; + rsize_t std_len; + rsize_t max_len; + char dest[LEN]; + + +/*--------------------------------------------------*/ + + strcpy(dest,""); + max_len = 3; + len = strnterminate_s(NULL, max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"test"); + max_len = 0; + len = strnterminate_s(dest, max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"test"); + max_len = RSIZE_MAX_STR+1; + len = strnterminate_s(dest, max_len); + if (len != 0) { + printf("%s %u Len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"ff"); + std_len = strlen(dest); + max_len = RSIZE_MAX_STR; + + len = strnterminate_s (dest, max_len); + + if (std_len != len) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"ff"); + len = strnterminate_s (dest, 1); + + if (len != 0 ) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"f"); + max_len = RSIZE_MAX_STR; + len = strnterminate_s (dest, max_len); + + if (len != 1 ) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"f"); + max_len = RSIZE_MAX_STR; + len = strnterminate_s (dest, max_len); + + if (len != 1 ) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"ff"); + max_len = RSIZE_MAX_STR; + len = strnterminate_s (dest, max_len); + + if (len != 2) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"test"); + max_len = RSIZE_MAX_STR; + len = strnterminate_s (dest, max_len); + + if (len != 4) { + printf("%s %u std_len=%zu len=%zu \n", + __FUNCTION__, __LINE__, std_len, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"testing"); + max_len = 1; + len = strnterminate_s (dest, max_len); + + if (len != 0) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"testing"); + max_len = 2; + len = strnterminate_s (dest, max_len); + + if (len != max_len-1) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"testing"); + max_len = 3; + len = strnterminate_s (dest, max_len); + + if (len != max_len-1) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"testing"); + max_len = 33; + len = strnterminate_s (dest, max_len); + + if (len != strlen(dest)) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + +/*--------------------------------------------------*/ + + strcpy(dest,"012345678901234567890"); + len = 21; + + while (len) { + //printf(" strnterminate_s() len=%u \n", len); + len = strnterminate_s (dest, len); + if (len != strlen(dest)) { + printf("%s %u len=%zu \n", + __FUNCTION__, __LINE__, len); + } + } + +/*--------------------------------------------------*/ + + + + return (0); +} diff --git a/safestringlib/unittests/test_strpbrk_s.c b/safestringlib/unittests/test_strpbrk_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ff80c1e0b39609d03dd8c60f7167f6bb40a15714 --- /dev/null +++ b/safestringlib/unittests/test_strpbrk_s.c @@ -0,0 +1,281 @@ +/*------------------------------------------------------------------ + * test_strpbrk_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strpbrk_s (void) +{ + errno_t rc; + char *first; + char *std_first; + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(NULL, LEN, str2, LEN, &first); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, LEN, NULL, LEN, &first); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, 0, str2, LEN, &first); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, RSIZE_MAX_STR+1, str2, LEN, &first); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + rc = strpbrk_s(str1, RSIZE_MAX_STR, str2, RSIZE_MAX_STR+1, &first); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + /* not to be found */ + rc = strpbrk_s(str1, LEN, str2, LEN, &first); + if (rc != ESNOTFND) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + + if (first) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "1234"); + + rc = strpbrk_s(str1, 2, str2, LEN, &first); + if (rc != ESNOTFND) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "ke"); + + rc = strpbrk_s(str1, 2, str2, LEN, &first); + if (rc != EOK) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simplez"); + strcpy (str2, "z"); + + rc = strpbrk_s(str1, LEN, str2, LEN, &first); + if (rc != EOK) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "123456"); + + rc = strpbrk_s(str1, LEN, str2, 2, &first); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first != 0) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, ""); + + rc = strpbrk_s(str1, LEN, str2, 1, &first); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (first != 0) { + printf("%s %u Error first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "k"); + + rc = strpbrk_s(str1, LEN, str2, 1, &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "ke"); + + rc = strpbrk_s(str1, LEN, str2, 2, &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "hip"); + + rc = strpbrk_s(str1, LEN, str2, LEN, &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simply"); + strcpy (str2, "123y"); + + rc = strpbrk_s(str1, LEN, str2, LEN, &first); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_first = strpbrk(str1, str2); + if (first != std_first) { + printf("%s %u first=%p std_first=%p rc=%d \n", + __FUNCTION__, __LINE__, first, std_first, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strprefix_s.c b/safestringlib/unittests/test_strprefix_s.c new file mode 100644 index 0000000000000000000000000000000000000000..268f96b10713b995e46be8ca0751b6e10b1d3415 --- /dev/null +++ b/safestringlib/unittests/test_strprefix_s.c @@ -0,0 +1,160 @@ +/*------------------------------------------------------------------ + * test_strprefix_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + + +int test_strprefix_s() +{ + errno_t rc; + rsize_t len; + + char str1[LEN]; + char str2[LEN]; + +/*--------------------------------------------------*/ + + rc = strprefix_s(NULL, LEN, str2); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strprefix_s(str1, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strprefix_s(str1, 0, str2); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strprefix_s(str1, RSIZE_MAX_STR+1, str2); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strprefix_s(str1, LEN, str2); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "keep"); + + rc = strprefix_s(str1, 55, str2); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "kerp"); + + rc = strprefix_s(str1, 55, str2); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "ke"); + strcpy(str2, "kerp"); + + rc = strprefix_s(str1, 2, str2); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "keep"); + + rc = strprefix_s(str1, 4, str2); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "keeeep"); + + rc = strprefix_s(str1, 4, str2); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + + rc = strprefix_s(str1, 4, ""); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "keep it sipmle and very long"); + + len = strlen(str1); + + rc = strprefix_s(str1, len, str2); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it simple"); + strcpy(str2, "keep it simple"); + + len = strlen(str1); + + rc = strprefix_s(str1, len, str2); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strremovews_s.c b/safestringlib/unittests/test_strremovews_s.c new file mode 100644 index 0000000000000000000000000000000000000000..3c80bcaf23deeaec0ec6990791a030de80310ca6 --- /dev/null +++ b/safestringlib/unittests/test_strremovews_s.c @@ -0,0 +1,233 @@ +/*------------------------------------------------------------------ + * test_strremovews_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strremovews_s() +{ + errno_t rc; + int ind; + + uint32_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strremovews_s(NULL, len); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strremovews_s("test", len); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strremovews_s("test", len); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABCDEFGHIJK"); + len = 1; + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABCDEFGHIJK"); + len = 2; + + rc = strremovews_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u --%s--\n", + __FUNCTION__, __LINE__, rc, str ); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " ABCDEFGHIJK"); + len = 3; + + rc = strremovews_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u --%s--\n", + __FUNCTION__, __LINE__, rc, str ); + } + + if (str[0] != '\0') { + printf("%s %u Error rc=%u --%s--\n", + __FUNCTION__, __LINE__, rc, str ); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " ABCDEFGHIJK"); + len = 9; + + rc = strremovews_s(str, len); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u --%s--\n", + __FUNCTION__, __LINE__, rc, str ); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "A"); + len = 1; + + /* a one char string will be emptied - str[0]=='\0' */ + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != '\0') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, "ABC"); + len = 8; + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != 'A') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " B"); + len = strlen(str); + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str[0] != 'B') { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " C "); + len = strlen(str); + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "C"); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy(str, " NowISTHETimE 1 2 "); + len = strlen(str); + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "NowISTHETimE 1 2"); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " q q21ego"); + len = strlen(str); + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "q q21ego"); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strzero_s(str, LEN); + strcpy (str, " 1 2 3 4 "); + len = strlen(str); + + rc = strremovews_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + ind = strcmp(str, "1 2 3 4"); + if (ind != 0) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strspn_s.c b/safestringlib/unittests/test_strspn_s.c new file mode 100644 index 0000000000000000000000000000000000000000..8529d2f9efd32c1fad8ef9f6edd5ffe6b991f58f --- /dev/null +++ b/safestringlib/unittests/test_strspn_s.c @@ -0,0 +1,281 @@ +/*------------------------------------------------------------------ + * test_strspn_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strspn_s (void) +{ + errno_t rc = 0; + rsize_t count = 0; + int32_t std_count = 0; + + +/*--------------------------------------------------*/ + + rc = strspn_s(NULL, LEN, str2, LEN, &count); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, LEN, NULL, LEN, &count); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, 0, str2, LEN, &count); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, LEN, str2, 0, &count); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, RSIZE_MAX_STR+1, str2, LEN, &count); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + rc = strspn_s(str1, RSIZE_MAX_STR, str2, RSIZE_MAX_STR+1, &count); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = strspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 0) { + printf("%s %u Error count=%zu rc=%d \n", + __FUNCTION__, __LINE__, count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strspn_s(str1, 1, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 1) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strspn_s(str1, 2, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 2) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strspn_s(str1, 3, str2, 12, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (count != 3) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "k"); + + rc = strspn_s(str1, LEN, str2, 1, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "ke"); + + rc = strspn_s(str1, LEN, str2, 2, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "keep"); + + rc = strspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "notincluded"); + + rc = strspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + strcpy (str1, "keep it simple"); + strcpy (str2, "1234567890"); + + rc = strspn_s(str1, LEN, str2, LEN, &count); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + std_count = strspn(str1, str2); + if (count != std_count) { + printf("%s %u count=%zu std_count=%d rc=%d \n", + __FUNCTION__, __LINE__, count, std_count, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_strstr_s.c b/safestringlib/unittests/test_strstr_s.c new file mode 100644 index 0000000000000000000000000000000000000000..895577472d8ad0360687e1c5d0a0d2cbd9462ae5 --- /dev/null +++ b/safestringlib/unittests/test_strstr_s.c @@ -0,0 +1,321 @@ +/*------------------------------------------------------------------ + * test_strstr_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) +#define SHORT_LEN ( 5 ) + +static char str1[LEN]; +static char str2[LEN]; + +int test_strstr_s (void) +{ + errno_t rc; + char *sub; + char *std_sub; + + rsize_t len1; + rsize_t len2; + +/*--------------------------------------------------*/ + + rc = strstr_s(NULL, LEN, str2, LEN, &sub); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, LEN, NULL, LEN, &sub); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, LEN, str2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, 0, str2, LEN, &sub); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, RSIZE_MAX_STR+1, str2, LEN, &sub); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, LEN, str2, 0, &sub); + if (rc != ESZEROL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + rc = strstr_s(str1, LEN, str2, RSIZE_MAX_STR+1, &sub); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + *str1 = '\0'; + *str2 = '\0'; + + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != str1) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + *str2 = '\0'; + + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != str1) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "kee"); + + /* substring at beginning */ + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[0]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "eep it"); + + /* substring in the middle - left */ + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[1]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "ethe"); + + /* substring in the middle - right */ + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[15]) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + // 012345678901234567890 + strcpy(str1, "keep it all together"); + strcpy(str2, "he"); + + len1 = strlen(str1); + len2 = strlen(str2); + + rc = strstr_s(str1, len1, str2, len2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[17]) { + printf("%s %u Error rc=%d sub=%s \n", + __FUNCTION__, __LINE__, rc, sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "er"); + + len1 = strlen(str1); + len2 = strlen(str2); + + rc = strstr_s(str1, len1, str2, len2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[18]) { + printf("%s %u Error rc=%d sub=%s \n", + __FUNCTION__, __LINE__, rc, sub); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strstr_s(str1, 3, str2, LEN, &sub); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strstr_s(str1, 333, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strstr_s(str1, LEN, str2, 5, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "1234"); + + len1 = strlen(str1); + + rc = strstr_s(str1, len1, str2, LEN, &sub); + if (rc != ESNOTFND) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != NULL) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "it all"); + + rc = strstr_s(str1, LEN, str2, 2, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%d \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + strcpy(str1, "keep it all together"); + strcpy(str2, "eep"); + + rc = strstr_s(str1, LEN, str2, LEN, &sub); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (sub != &str1[1]) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + /* compare to legacy */ + std_sub = strstr(str1, str2); + if (sub != std_sub) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strtok_s.c b/safestringlib/unittests/test_strtok_s.c new file mode 100644 index 0000000000000000000000000000000000000000..8cba76f0358daf0c6f1719368087ae0f47621546 --- /dev/null +++ b/safestringlib/unittests/test_strtok_s.c @@ -0,0 +1,328 @@ +/*------------------------------------------------------------------ + * test_strtok_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strtok_s() +{ + errno_t rc; + char *p2str; + char *p2tok; + + rsize_t len; + char str1[LEN]; + char str2[LEN]; + + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + p2tok = strtok_s(str1, NULL, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + len = 0; + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + len = RSIZE_MAX_STR + 1; + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + len = 0; + p2tok = strtok_s(str1, &len, NULL, &p2str); + if (p2tok != NULL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + p2tok = strtok_s(str1, &len, str2, NULL); + if (p2tok != NULL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + /* no token test */ + strcpy(str1, "aaaaaaaa"); + len = strlen(str1); + + strcpy(str2, "fedcba"); + + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + strcpy(str1, "jklmnopqrst"); + len = strlen(str1) - 2; /* cheat on len */ + + strcpy(str2, "fedcba"); + + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + + if (p2tok != NULL) { + printf("token -%s- -%s- \n", p2tok, p2str); + } + +/*--------------------------------------------------*/ + //printf("test: %u \n", __LINE__); + + strcpy(str1, "aaamnopqrst"); + len = strlen(str1); + + strcpy(str2, "fedcba"); + + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok == NULL) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + +/*--------------------------------------------------*/ +/** [1] **/ + //printf("test: %u \n", __LINE__); + + strcpy(str1, "aaamnopqrstfedcba"); + len = strlen(str1); + + strcpy(str2, "fedcba"); + + p2tok = strtok_s(str1, &len, str2, &p2str); + if (p2tok == NULL) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + + if (strcmp(p2tok, "mnopqrst")) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + + //printf("token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + +/*--------------------------------------------------*/ +/** [2] **/ + + p2tok = strtok_s(p2str, &len, str2, &p2str); + if (p2tok != NULL) { + printf("%s %u token -%s- remaining -%s- \n", + __FUNCTION__, __LINE__, p2tok, p2str); + } + + //printf("token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/** [1] **/ + //printf("test: %u \n", __LINE__); + + strcpy(str1, "?a???b,,,#c"); + len = strlen(str1); + + strcpy(str2, "?"); + + p2tok = strtok_s(str1, &len, str2, &p2str); + + if (strcmp(p2tok, "a") ) { + printf("%s %u token -%s- -%s- len=%d \n", + __FUNCTION__, __LINE__, p2tok, p2str, (int)len ); + } + + //printf("token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + +/*--------------------------------------------------*/ +/** [2] **/ + strcpy(str1, "?a???b,,,#c"); + len = strlen(str1); + + strcpy(str2, ","); /* change the tokenizer string */ + + /** p2tok = strtok_s(p2str, &len, str2, &p2str); **/ + p2tok = strtok_s(NULL, &len, str2, &p2str); + + if (strcmp(p2tok, "??b") ) { + printf("%s %u token -%s- -%s- len=%d \n", + __FUNCTION__, __LINE__, p2tok, p2str, (int)len ); + } + + //printf("token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + +/*--------------------------------------------------*/ +/* + strcpy(str1, ",,0,1,23,456,789,a,b,"); + len = strlen(str1); + + strcpy(str2, ","); // change the tokenizer string + + printf("\n"); + printf("String to tokenize str1 = \"%s\" len = %u\n", str1, len); + printf("String of delimiters str2 = \"%s\" \n", str2); + + p2str = str1; + p2tok = str1; + + while (p2tok && len) { + + printf(" p2tok = strtok_s(p2str, &len, str2, &p2str); \n"); + + p2tok = strtok_s(p2str, &len, str2, &p2str); + + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + } +*/ +/*--------------------------------------------------*/ +/* + strcpy(str1, ",.*;one,two;three,;four*.*.five-six***"); + + len = strlen(str1); + + strcpy(str2, ",.;*"); + + printf("\n"); + printf("String to tokenize str1 = \"%s\" len = %u\n", str1, len); + printf("String of delimiters str2 = \"%s\" \n", str2); + + printf(" p2tok = strtok_s(str1, &len, str2, &p2str); \n"); + p2tok = strtok_s(str1, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + // len is zero at this point + printf(" p2tok = strtok_s(NULL, &len, str2, &p2str); \n"); + p2tok = strtok_s(NULL, &len, str2, &p2str); + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + + printf("\n"); +*/ +/*--------------------------------------------------*/ +/* + strcpy(str1, ",.*;one,two;three,;four*.*.five-six***"); + + len = strlen(str1); + + strcpy(str2, ",.;*"); + + printf("\n"); + printf("String to tokenize str1 = \"%s\" len = %u\n", str1, len); + printf("String of delimiters str2 = \"%s\" \n", str2); + + p2str = str1; + p2tok = str1; + + while (p2tok && len) { + printf(" p2tok = strtok_s(p2str, &len, str2, &p2str); \n"); + + p2tok = strtok_s(p2str, &len, str2, &p2str); + + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + } +*/ +/*--------------------------------------------------*/ +/* + strcpy(str1, ",.*;one,two;three,;four*.*.five-six***"); + + len = strlen(str1) - 1; // back off the null + + strcpy(str2, ",.;*"); + + printf("\n"); + printf("String to tokenize str1 = \"%s\" len = %u\n", str1, len); + printf("String of delimiters str2 = \"%s\" \n", str2); + + p2str = str1; + p2tok = str1; + + while (p2tok && len) { + printf(" p2tok = strtok_s(p2str, &len, str2, &p2str); \n"); + + p2tok = strtok_s(p2str, &len, str2, &p2str); + + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + } +*/ +/*--------------------------------------------------*/ +/* + strcpy(str1, ",.*;one,two;three,;four*.*.five-six***"); + + len = strlen(str1) - 15; // back off a few! + + strcpy(str2, ",.;*"); + + printf("\n"); + printf("String to tokenize str1 = \"%s\" len = %u\n", str1, len); + printf("String of delimiters str2 = \"%s\" \n", str2); + + p2str = str1; + p2tok = str1; + + while (p2tok && len) { + printf(" p2tok = strtok_s(p2str, &len, str2, &p2str); \n"); + +// p2tok = strtok_s(p2str, &len, str2, &p2str); + p2tok = strtok_s(NULL, &len, str2, &p2str); + + printf(" token -%s- -%s- len=%d \n", p2tok, p2str, (int)len ); + } +*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strtolowercase_s.c b/safestringlib/unittests/test_strtolowercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..31cf6e5d19a9b8f9d5a5f1813d41ab1e4584ed48 --- /dev/null +++ b/safestringlib/unittests/test_strtolowercase_s.c @@ -0,0 +1,141 @@ +/*------------------------------------------------------------------ + * test_strtolowercase_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strtolowercase_s() +{ + errno_t rc; + rsize_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + rc = strtolowercase_s(NULL, len); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + rc = strtolowercase_s("test", len); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 99999; + rc = strtolowercase_s("test", len); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy(str, "N"); + len = strlen(str); + + rc = strtolowercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(str, "n") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy(str, "n"); + len = strlen(str); + + rc = strtolowercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(str, "n") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy(str, "NOWISTHETIM3"); + + rc = strtolowercase_s(str, 25); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(str, "nowisthetim3") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy(str, "NOWISTHETIME"); + len = strlen(str); + + rc = strtolowercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(str, "nowisthetime") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy(str, "qqeRo"); + len = strlen(str); + + rc = strtolowercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(str, "qqero") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy(str, "1234"); + len = strlen(str); + + rc = strtolowercase_s(str, 4); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + + return (0); +} diff --git a/safestringlib/unittests/test_strtouppercase_s.c b/safestringlib/unittests/test_strtouppercase_s.c new file mode 100644 index 0000000000000000000000000000000000000000..25d4d8d9a97647756fd99ce4a8ad0c9833577d39 --- /dev/null +++ b/safestringlib/unittests/test_strtouppercase_s.c @@ -0,0 +1,150 @@ +/*------------------------------------------------------------------ + * test_strtouppercase_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strtouppercase_s() +{ + errno_t rc; + rsize_t len; + char str[LEN]; + +/*--------------------------------------------------*/ + + len = 5; + //printf("debug - 01\n"); + rc = strtouppercase_s(NULL, len); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + len = 0; + //printf("debug - 02\n"); + rc = strtouppercase_s("test", len); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + /* empty string */ + len = 5; + //printf("debug - 03\n"); + rc = strtouppercase_s("", len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + +/* FIXME: known bug: this test causes a bus error if the string max size is + not restricted via RSIZE_MAX_STR */ + len = 99999; + //printf("debug - 04\n"); + rc = strtouppercase_s("test", len); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + strcpy (str, "n"); + len = strlen(str); + + //printf("debug - 05\n"); + rc = strtouppercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + //printf("debug - 06\n"); + + if (strcmp(str, "N") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy (str, "N"); + len = strlen(str); + + //printf("debug - 07\n"); + rc = strtouppercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + //printf("debug - 08\n"); + if (strcmp(str, "N") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy (str, "nowisthetime"); + len = strlen(str); + + //printf("debug - 09\n"); + rc = strtouppercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + //printf("debug - 10\n"); + if (strcmp(str, "NOWISTHETIME") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy (str, "qqeRo"); + len = strlen(str); + + //printf("debug - 11\n"); + rc = strtouppercase_s(str, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + //printf("debug - 12\n"); + if (strcmp(str, "QQERO") ) { + printf("%s %u Error -%s- \n", + __FUNCTION__, __LINE__, str); + } + +/*--------------------------------------------------*/ + + strcpy (str, "1234"); + len = strlen(str); + + //printf("debug - 13\n"); + rc = strtouppercase_s(str, 22); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_strzero_s.c b/safestringlib/unittests/test_strzero_s.c new file mode 100644 index 0000000000000000000000000000000000000000..b164db1d0af07351234123a8a572179d72cd9e19 --- /dev/null +++ b/safestringlib/unittests/test_strzero_s.c @@ -0,0 +1,131 @@ +/*------------------------------------------------------------------ + * test_strzero_s + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + + +int test_strzero_s() +{ + errno_t rc; + rsize_t max_len; + char str1[LEN]; + uint32_t i; + + +/*--------------------------------------------------*/ + + rc = strzero_s(NULL, 5); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strzero_s(str1, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + rc = strzero_s(str1, RSIZE_MAX_STR+1); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ + + max_len = 1; + rc = strzero_s(str1, max_len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<max_len; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + max_len = 2; + rc = strzero_s(str1, max_len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<max_len; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + max_len = 3; + rc = strzero_s(str1, max_len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<max_len; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + max_len = LEN; + rc = strzero_s(str1, max_len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + for (i=0; i<max_len; i++) { + if (str1[i] != '\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } + +/*--------------------------------------------------*/ + + strcpy(str1, "Now is the time for all data to be zeroed"); + max_len = strlen("Now is the "); + + rc = strzero_s(str1, max_len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (strcmp(&str1[max_len], "time for all data to be zeroed") ) { + printf("%s %u ERROR --%s-- \n", + __FUNCTION__, __LINE__, + &str1[max_len]); + } + +/*--------------------------------------------------*/ + + + return (0); +} diff --git a/safestringlib/unittests/test_wcpcpy_s.c b/safestringlib/unittests/test_wcpcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..317c8f8d44db17978b8b0d9896fdbb553de94a3d --- /dev/null +++ b/safestringlib/unittests/test_wcpcpy_s.c @@ -0,0 +1,518 @@ +/*------------------------------------------------------------------ + * test_wcpcpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * + * TEST WHEN SRC & DEST ARE THE SAME + * TC 5: Test for src=dest, but string too long for dmax + * TC 6: Test for src=dest, proper return + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 7: Test for overlap of dest buffer into src buffer (src string too long) + * TC12: Test for proper copy of short string over long string + * TC13: Test for not enough space in destination (dest < src) + * TC16: Test copy short string over long string + * + * TEST NON-STANDARD FAILURE CONDITIONS FOR NULL DEST STRINGS + * TC 9: Test copy null string over destination string + * TC10: Test copy NULL string over existing string (dest > src) + * TC11: Test copy string over NULL string (dest < src) + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC 8: Test src buffer runs into beginning of dest buffer (src buffer is unterminated or been destroyed by copy) + * TC14: Test for not enough space in destination (src < dest) + * TC15: Test copy of string - just enough space in dest + * TC17: Test copy with not enough room for final NULL in destination + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128 ) +#define LEN ( 128 ) + +static wchar_t str1[LEN]; +static wchar_t str2[LEN]; + +extern wchar_t *wcpcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, errno_t *err); +extern errno_t wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); +extern rsize_t wcsnlen_s (const wchar_t *dest, rsize_t dmax); + +int test_wcpcpy_s (void) +{ + wchar_t *ret; + errno_t rc; +#ifdef SAFE_LIB_STR_NULL_SLACK + uint32_t i; +#endif /*SAFE_LIB_STR_NULL_SLACK*/ + int32_t ind; + rsize_t sz; + unsigned int testno = 0; + + + printf("\nTesting wcpcpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d:\n", ++testno); + + ret = wcpcpy_s(NULL, LEN, str2, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + printf("Test #%d:\n", ++testno); + + ret = wcpcpy_s(str1, 0, str2, &rc); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + ret = wcpcpy_s(str1, (RSIZE_MAX_STR+1), str2, &rc); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = wcpcpy_s(str1, 5, NULL, &rc); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 5 Test for Src is same as dest, but source too long */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = wcpcpy_s(str1, 5, str1, &rc); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 6 Test copy the same string onto itself */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + + ret = wcpcpy_s(str1, LEN, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != L'\0' || ret != str1+wcsnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 7 Test for string overlap, destination < src, and + * dest overlaps onto the src string, so a copy would + * change the src string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(&str1[0], LEN, L"keep it simple"); + sz = wcsnlen_s(str1, LEN); + + ret = wcpcpy_s(&str1[0], LEN, &str1[5], &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 8 Test for string overlap, src < dest, and + * src overlaps onto the dest string, so a copy would + * result in an infinite copy operation */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(&str1[0], LEN, L"keep it simple"); + sz = wcsnlen_s(str1, LEN); + + ret = wcpcpy_s(&str1[5], LEN, &str1[0], &rc); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[5] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + + + + + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 9 Test copying the null string (zero length string) + * into another existing string, and overwriting + * it's contents */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + str2[0] = L'\0'; + + ret = wcpcpy_s(str1, LEN/2, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != L'\0' || ret != str1) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN/2; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error - string should be NULL rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 10 Test for copying string over NULL string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"keep it simple"); + + memset_s(str2, '\0', 30); + + ret = wcpcpy_s(str2, LEN, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != L'\0' || ret != str2+wcsnlen_s(str2,LEN)) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str2, LEN, L"keep it simple", (15)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + + +/*--------------------------------------------------*/ +/* 11 Test copying string over the NULL string */ + printf("Test #%d:\n", ++testno); + + memset_s(str1, '\0', 50); + wcscpy_s(&str2[0], LEN, L"keep it simple"); + + sz = wcsnlen_s(str2, LEN); + + ret = wcpcpy_s(str1, LEN, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (wcsnlen_s(str2, LEN))*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- <> -%ls- (smax=%lu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + + if (ret == NULL || ret[0] != L'\0' || ret != str1+wcsnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 12 Test for accurate subString copy over existing string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"xxxxxxxxxx"); + wcscpy_s(str2, LEN, L"abcde"); + + ret = wcpcpy_s(str1, LEN, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret == NULL || ret[0] != L'\0' || ret != str1+wcsnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + sz = wcsnlen_s(str1, LEN); + if (sz != 5) { + printf("%s %u (sz=%lu <> 5) Error rc=%u \n", + __FUNCTION__, __LINE__, sz, rc ); + } + rc = memcmp_s(str1, LEN, str2, (6)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + + +/*--------------------------------------------------*/ +/* 13 Test for not enough space in destination (dest < src) */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"qqweqeqeqeq"); + wcscpy_s(str2, LEN, L"keep it simple"); + sz = wcsnlen_s(str2, LEN); + + ret = wcpcpy_s(str1, 14, str2, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 14 Test for not enough space in destination (src < dest) */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"qqweqeqeqeq"); + wcscpy_s(str2, LEN, L"keep it simple"); + sz = wcsnlen_s(str2, LEN); + + ret = wcpcpy_s(str2, 6, str1, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 15 Test for just enough space in destination */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"qqweqeqeqeq"); + wcscpy_s(str1, LEN, L"it"); + + ret = wcpcpy_s(str2, 3, str1, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (3)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + if (ret == NULL || ret[0] != L'\0' || ret != str2+wcsnlen_s(str2, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 16 Test copy short string over long string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"qq12345weqeqeqeq"); + wcscpy_s(str2, LEN, L"it"); + + ret = wcpcpy_s(str1, 10, str2, &rc); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + if (ret == NULL || ret[0] != L'\0' || ret != str1+wcsnlen_s(str1, LEN) ) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (3)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + +/*--------------------------------------------------*/ +/* 17 Test for not enough space in destination for final NULL */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"qqweqeqeqeq"); + wcscpy_s(str1, LEN, L"it"); + sz = wcsnlen_s(str2, LEN); + + ret = wcpcpy_s(str2, 2, str1, &rc); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (ret != NULL) { + printf("Returned pointer incorrect: %s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_wcscat_s.c b/safestringlib/unittests/test_wcscat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..689af75b4be92c0cb76507b4798c59bd24d1907e --- /dev/null +++ b/safestringlib/unittests/test_wcscat_s.c @@ -0,0 +1,416 @@ +/*------------------------------------------------------------------ + * test_wcscat_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + +static wchar_t str1[LEN]; +static wchar_t str2[LEN]; + +extern rsize_t wcsnlen_s (const wchar_t *dest, rsize_t dmax); +extern errno_t wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); +extern errno_t wcscat_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); + +int test_wcscat_s (void) +{ + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + unsigned int testno = 0; + + + printf("\nTesting wcscat_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ + printf("Test #%d:\n", ++testno); + + rc = wcscat_s(NULL, LEN, str2); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 2 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + rc = wcscat_s(str1, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 3 Test zero maximum length of destination */ + printf("Test #%d:\n", ++testno); + + rc = wcscat_s(str1, 0, str2); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 4 Test Exceed Maximum size of destination */ + printf("Test #%d:\n", ++testno); + + rc = wcscat_s(str1, (RSIZE_MAX_STR+1), str2); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 5 Test overlapping destination string into the beginning of the src */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"12345678901234567890"); + + rc = wcscat_s(str1, 8, &str1[7]); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 6 Test too small size - destination appears unterminated */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaa"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, 1, str2); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 7 Test length of destination appears unterminated */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaa"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, 10, str2); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 8 Test overlap of destination buffer into source after copying begins */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"keep it simple"); + wcscpy_s(&str1[20], LEN, L"aaaaaaaaaaaaaaaaaaaa"); + + rc = wcscat_s(str1, 30, &str1[20]); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 9 Test Verify proper size of concatenated strings */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(&str1[0], LEN, L"aaaaaaaaaa"); + wcscpy_s(&str2[0], LEN, L"keep it simple"); + + len1 = wcsnlen_s(str1, LEN); + len2 = wcsnlen_s(str2, LEN); + + rc = wcscat_s(str1, 50, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + len3 = wcsnlen_s(str1, LEN); + if (len3 != (len1+len2)) { + printf("%s %u lengths wrong: %u %u %u \n", + __FUNCTION__, __LINE__, len1, len2, len3); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 10 Test NULL string is destination - too short */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, 1, str2); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 11 Test NULL string is destination - too short */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, 11, str2); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 12 Test NULL string is destination - proper result */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, 20, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str1, LEN, str2, wcsnlen_s(str2, LEN)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 13 Test concat two NULL strings */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = wcscat_s(str1, LEN, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 14 Test concat NULL string to existing string - proper result */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str2, LEN, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"keep it simple", (15)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 15 Test concat two strings - proper result */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"qqweqq"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str1, LEN, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str1, LEN, L"qqweqqkeep it simple", (20)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 16 Test concat two strings - not enough space in dest */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"1234"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str2, 16, str1); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 17 Test concat two strings - just enough space in the destination */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"1234"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcscat_s(str2, 19, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"keep it simple1234", (19)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + + +/*--------------------------------------------------*/ +/* 18 Test source overlaps into the dest string after copying begins */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"123456789123456789"); + wcscpy_s(&str1[13], LEN, L"ABCDEFGHIJKLMNOP123456789"); + + rc = wcscat_s(&str1[13], LEN, str1); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[13] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 19 Test normal string concat */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"123"); + wcscpy_s(str1, LEN, L"keep it simple"); + + rc = wcscat_s(str2, 31, &str1[0]); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"123keep it simple", (17)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 20 Test normal string concat - just enough room */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"1234"); + wcscpy_s(str1, LEN, L"56789"); + + rc = wcscat_s(str2, 10, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"123456789", (9)*sizeof(wchar_t), &ind ); + + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 21 Test normal string concat - not enough room for NULL */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"1234"); + wcscpy_s(str1, LEN, L"56789"); + + rc = wcscat_s(str2, 9, str1); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str2[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_wcscpy_s.c b/safestringlib/unittests/test_wcscpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..294c168568d53d68647d10cb83761750438653b5 --- /dev/null +++ b/safestringlib/unittests/test_wcscpy_s.c @@ -0,0 +1,437 @@ +/*------------------------------------------------------------------ + * test_wcscpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * + * TEST WHEN SRC & DEST ARE THE SAME + * TC 5: Test for src=dest, but string too long for dmax + * TC 6: Test for src=dest, proper return + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 7: Test for overlap of dest buffer into src buffer (src string too long) + * TC12: Test for proper copy of short string over long string + * TC13: Test for not enough space in destination (dest < src) + * TC16: Test copy short string over long string + * + * TEST NON-STANDARD FAILURE CONDITIONS FOR NULL DEST STRINGS + * TC 9: Test copy null string over destination string + * TC10: Test copy NULL string over existing string (dest > src) + * TC11: Test copy string over NULL string (dest < src) + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC 8: Test src buffer runs into beginning of dest buffer (src buffer is unterminated or been destroyed by copy) + * TC14: Test for not enough space in destination (src < dest) + * TC15: Test copy of string - just enough space in dest + * TC17: Test copy with not enough room for final NULL in destination + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128*4 ) +#define LEN ( 128*4 ) + +static wchar_t str1[LEN]; +static wchar_t str2[LEN]; + +extern errno_t wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); + + +int test_wcscpy_s (void) +{ + errno_t rc; +#ifdef SAFE_LIB_STR_NULL_SLACK + uint32_t i; +#endif /*SAFE_LIB_STR_NULL_SLACK*/ + int32_t ind; + rsize_t sz; + rsize_t sz_orig; + unsigned int testno = 0; + + + printf("\nTesting wcscpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d:\n", ++testno); + + rc = wcscpy_s(NULL, LEN, str2); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + printf("Test #%d:\n", ++testno); + + rc = wcscpy_s(str1, 0, str2); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + rc = wcscpy_s(str1, (RSIZE_MAX_STR+1), str2); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaa", 5); + + rc = wcscpy_s(str1, 5, NULL); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 5 Test for Src is same as dest, but source too long */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcscpy_s(str1, 5, str1); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 6 Test copy the same string onto itself */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcscpy_s(str1, LEN, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 7 Test for string overlap, destination < src, and + * dest overlaps onto the src string, so a copy would + * change the src string */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + + rc = wcscpy_s(&str1[0], LEN, &str1[5]); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 8 Test for string overlap, src < dest, and + * src overlaps onto the dest string, so a copy would + * result in an infinite copy operation */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str1, LEN); + + rc = wcscpy_s(&str1[8], LEN, &str1[0]); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[8] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 9 Test copying the null string (zero length string) + * into another existing string, and overwriting + * it's contents */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 41); + str2[0] = L'\0'; + + rc = wcscpy_s(str1, LEN/2, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN/2; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error - string should be NULL rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 10 Test for copying string over NULL string */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str1, LEN); + memset_s(str2, '\0', 30); + + rc = wcscpy_s(str2, LEN, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str2, LEN, str1, (sz+1)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- <> -%ls-\n", + __FUNCTION__, __LINE__, str2, str1); + } + + +/*--------------------------------------------------*/ +/* 11 Test copying string over the NULL string */ + printf("Test #%d:\n", ++testno); + + memset_s(str1, '\0', 50); + wmemcpy_s(str2, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str2, LEN); + + rc = wcscpy_s(str1, LEN, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (sz)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- <> -%ls- (smax=%lu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + +/*--------------------------------------------------*/ +/* 12 Test for accurate subString copy over existing string */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'x', 20); + wmemcpy_s(str2, LEN, L"keep it simple", 15); + sz_orig = wcsnlen_s(str2, LEN); + + rc = wcscpy_s(str1, LEN, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + sz = wcsnlen_s(str1, LEN); + if (sz != sz_orig && sz == 14) { + printf("%s %u (sz=%lu <> 5) Error rc=%u \n", + __FUNCTION__, __LINE__, sz, rc ); + } + rc = memcmp_s(str1, LEN, str2, (sz)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + + +/*--------------------------------------------------*/ +/* 13 Test for not enough space in destination (dest < src) */ + printf("Test #%d:\n", ++testno); + + + wmemset_s(str1, L'x', 20); + wmemcpy_s(str2, LEN, L"keep it simple", 15); + + rc = wcscpy_s(str1, 14, str2); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str1 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 14 Test for not enough space in destination (src < dest) */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'x', 20); + wmemcpy_s(str2, LEN, L"keep it simple", 15); + + rc = wcscpy_s(str2, 6, str1); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 15 Test for just enough space in destination */ + printf("Test #%d:\n", ++testno); + + + wmemcpy_s(str1, LEN, L"it", 3); + wmemcpy_s(str2, LEN, L"qqweqeqeqeq", 12); + + rc = wcscpy_s(str2, 3, str1); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (3)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + +/*--------------------------------------------------*/ +/* 16 Test copy short string over long string */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"qq12345weqeqeqeq", 17); + wmemcpy_s(str2, LEN, L"it", 3); + sz_orig = wcsnlen_s(str2, LEN); + + + rc = wcscpy_s(str1, 10, str2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (3)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + +/*--------------------------------------------------*/ +/* 17 Test for not enough space in destination for final NULL */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"it", 3); + wmemcpy_s(str2, LEN, L"qqweqeqeqeq", 12); + + sz = wcsnlen_s(str2, LEN); + + rc = wcscpy_s(str2, 2, str1); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_wcsncat_s.c b/safestringlib/unittests/test_wcsncat_s.c new file mode 100644 index 0000000000000000000000000000000000000000..865ccf86a22c03ceee3574a2a018ce31546aebad --- /dev/null +++ b/safestringlib/unittests/test_wcsncat_s.c @@ -0,0 +1,485 @@ +/*------------------------------------------------------------------ + * test_wcsncat_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for third parameter, source char string, being sent in as NULL + * TC 3: Test for last parameter, source length (slen), being larger than the maximum allowed size + * TC 4: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 5: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 6: Test for searching end of dest buffer runs into the src buffer (buffers overlap) + * TC 7: Test for dest buffer unterminated in dmax characters + * TC 8: Test for overlap of dest buffer into src buffer after copying from source begins + * TC 9: Test for proper concatenation of only slen characters from source string + * TC10: Test for proper concatenation of two strings + * + * TEST NON-STANDARD FAILURE CONDITIONS FOR NULL DEST STRINGS + * TC 11: Test null string destination and size too short + * TC 12: Test null string destination and dmax size is one character too short + * TC 13: Test for proper concatenation into a NULL string of appropriate buffer size + * TC 14: Test concatenation of two NULL strings + * TC 15: Test concatenation of NULL string onto end of existing string + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC16: Test concatenation of two strings - proper result + * TC17: Test for dest buffer unterminated in dmax characters + * TC18: Test for not enough space in dest buffer to fit src buffer characters + * TC19: Test src buffer runs into beginning of dest buffer (src buffer is unterminated or been destroyed by copy) + * TC20: Test concatenation with just enough space in the destination buffer + * TC21: Test for proper concatenation of only slen characters from source string + * TC22: Test concatenation with not enough room for final NULL in destination + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define LEN ( 128 ) + +static wchar_t str1[LEN]; +static wchar_t str2[LEN]; + +extern rsize_t wcsnlen_s (const wchar_t *dest, rsize_t dmax); +extern errno_t wcscpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src); +extern errno_t wcsncat_s (wchar_t *dest, rsize_t dmax, const wchar_t *src, rsize_t slen); + +int test_wcsncat_s (void) +{ + errno_t rc; + int32_t ind; + int32_t len1; + int32_t len2; + int32_t len3; + unsigned int testno = 0; + + + printf("\nTesting wcsncat_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ + printf("Test #%d:\n", ++testno); + + rc = wcsncat_s(NULL, LEN, str2, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 2 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + rc = wcsncat_s(str1, LEN, NULL, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 3 Test Exceed Maximum possible size of source */ + printf("Test #%d:\n", ++testno); + + rc = wcsncat_s(str1, LEN, str2, (RSIZE_MAX_STR+1)); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } +/*--------------------------------------------------*/ +/* 4 Test zero maximum length of destination */ + printf("Test #%d:\n", ++testno); + + rc = wcsncat_s(str1, 0, str2, LEN); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 5 Test Exceed Maximum size of destination */ + printf("Test #%d:\n", ++testno); + + rc = wcsncat_s(str1, (RSIZE_MAX_STR+1), str2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 6 Test destination buffer overlaps into the src buffer */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"aaaaaaaaaa keep it simple"); + + rc = wcsncat_s(str1, LEN, &str1[11], LEN); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 7 Test length of destination appears unterminated */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"keep it simple"); + + rc = wcsncat_s(str1, 2, &str1[20], LEN); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 8 Test overlap of destination buffer into source after copying begins */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"keep it simple"); + wcscpy_s(&str1[20], LEN, L"aaaaaaaaaaaaaaaaaaaa"); + + rc = wcsncat_s(str1, 30, &str1[20], LEN); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 9 Test proper concatenated of at most slen characters */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(&str1[0], LEN, L"aaaaaaaaaa"); + wcscpy_s(&str2[0], LEN, L"keep it simple"); + + len1 = wcsnlen_s(str1, LEN); + len2 = 10; + + rc = wcsncat_s(str1, 50, str2, len2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + len3 = wcsnlen_s(str1, LEN); + if (len3 != (len1+len2)) { + printf("%s %u lengths wrong: %u %u %u \n", + __FUNCTION__, __LINE__, len1, len2, len3); + } + + rc = memcmp_s(str1, LEN, L"aaaaaaaaaakeep it si", (len3+1)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 10 Test Verify proper size of concatenated strings & value of concatenated string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(&str1[0], LEN, L"aaaaaaaaaa"); + wcscpy_s(&str2[0], LEN, L"keep it simple"); + + len1 = wcsnlen_s(str1, LEN); + len2 = wcsnlen_s(str2, LEN); + + rc = wcsncat_s(str1, 50, str2, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + len3 = wcsnlen_s(str1, LEN); + if (len3 != (len1+len2)) { + printf("%s %u lengths wrong: %u %u %u \n", + __FUNCTION__, __LINE__, len1, len2, len3); + } + + rc = memcmp_s(str1, LEN, L"aaaaaaaaaakeep it simple", (len3+1)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 11 Test NULL string is destination - too short */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str1, 1, str2, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 12 Test NULL string is destination - too short */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str1, 14, str2, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 13 Test NULL string is destination - proper result */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str1, 20, str2, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str1, LEN, str2, wcsnlen_s(str2, LEN)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 14 Test concat two NULL strings */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + str2[0] = '\0'; + + rc = wcsncat_s(str1, LEN, str2, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 15 Test concat NULL string to existing string - proper result */ + printf("Test #%d:\n", ++testno); + + str1[0] = '\0'; + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, LEN, str1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"keep it simple", (15)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 16 Test concat two strings - proper result */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"qqweqq"); + wcscpy_s(str1, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, LEN, str1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"qqweqqkeep it simple", (20)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 17 Test concat two strings - dest appears unterminated */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"1234"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, 12, str1, LEN); + if (rc != ESUNTERM) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str2[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 18 Test concat two strings - not enough space in dest */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"1234"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, 16, str1, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str2[0] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 19 Test overlapping destination string into the beginning of the src */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"12345678901234567890"); + + rc = wcsncat_s(&str1[7], LEN, str1, LEN); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str1[7] != '\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + +/*--------------------------------------------------*/ +/* 20 Test concat two strings - just enough space in the destination */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str1, LEN, L"1234"); + wcscpy_s(str2, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, 19, str1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"keep it simple1234", (19)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 21 Test copy at most slen characters from src string */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"123456789"); + wcscpy_s(str1, LEN, L"keep it simple"); + + rc = wcsncat_s(str2, LEN, str1, 7); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + rc = memcmp_s(str2, LEN, L"123456789keep it", (17)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- \n", + __FUNCTION__, __LINE__, str1); + } + +/*--------------------------------------------------*/ +/* 22 Test normal string concat - no enough room for NULL */ + printf("Test #%d:\n", ++testno); + + wcscpy_s(str2, LEN, L"1234"); + wcscpy_s(str1, LEN, L"56789"); + + rc = wcsncat_s(str2, 9, str1, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if (str2[0] != L'\0') { + printf("%s %u Expected null \n", + __FUNCTION__, __LINE__); + } + + +/*--------------------------------------------------*/ + + return (0); +} + + diff --git a/safestringlib/unittests/test_wcsncpy_s.c b/safestringlib/unittests/test_wcsncpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..009f47a420ba1d57abc66e5178b618907812c5df --- /dev/null +++ b/safestringlib/unittests/test_wcsncpy_s.c @@ -0,0 +1,505 @@ +/*------------------------------------------------------------------ + * test_wcsncpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * TC 5: Test for last parameter, source length (slen), being sent in as zero + * TC 6: Test for last parameter, source length (slen), being larger than the maximum allowed size + * + * TEST WHEN SRC & DEST ARE THE SAME + * TC 7: Test for src=dest, overlapping buffers not the same + * + * TEST WHEN DEST BUFFER < SOURCE BUFFER + * TC 8: Test for overlap of dest buffer into src buffer + * TC 9: Test copy only slen characters from src into dest (src string longer than provided length) + * TC10: Test for copy dest < src, and copy ends after copy NULL char (slen > char string) + * TC11: Test for copy dest < src, but dmax too small to hold src string + * TC16: Test for accurate String copy over existing string (src > dest) + * + * TEST WHEN DEST BUFFER >= SOURCE BUFFER + * TC12: Test overlapping buffers fails ( dest > src ) + * TC13: Test copy only slen characters from src into dest (dest > src) + * TC14: Test for copy src < dest, and copy ends after copy NULL char (slen > char string) + * TC15: Test for copy src < dest, but dmax too small to hold src string + * TC17: Test for just enough space in destination (src < dest) + * TC18: Test for not enough space in destination for final NULL (dest > src) + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128*4 ) +#define LEN ( 128*4 ) + +static wchar_t str1[LEN]; +static wchar_t str2[LEN]; + +extern errno_t wcsncpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t slen); + +extern rsize_t wcsnlen_s(const wchar_t *dest, rsize_t dmax); +extern errno_t wmemset_s (wchar_t *dest, wchar_t value, rsize_t len); + +int test_wcsncpy_s (void) +{ + errno_t rc; +#ifdef SAFE_LIB_STR_NULL_SLACK + uint32_t i; +#endif /*SAFE_LIB_STR_NULL_SLACK*/ + int32_t ind; + rsize_t sz; + rsize_t sz_orig; + unsigned int testno = 0; + + + printf("\nTesting wcsncpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d:\n", ++testno); + + rc = wcsncpy_s(NULL, LEN, str2, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + printf("Test #%d:\n", ++testno); + + rc = wcsncpy_s(str1, 0, str2, LEN); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + rc = wcsncpy_s(str1, (RSIZE_MAX_STR+1), str2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaa", 5); + + rc = wcsncpy_s(str1, 5, NULL, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/* 5 Test for zero length source */ + printf("Test #%d:\n", ++testno); + + rc = wcsncpy_s(str1, LEN, str2, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/* 6 Test for too large source size */ + printf("Test #%d:\n", ++testno); + + rc = wcsncpy_s(str1, LEN, str2, (RSIZE_MAX_STR+1)); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<LEN; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/* 7 Test for Src is same as dest, overlapping buffers not allowed */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcsncpy_s(str1, 5, str1, LEN); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/* 8 Test overlapping buffers fails */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcsncpy_s(str1, LEN, &str1[5], 30); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 9 Test copy only slen characters from src into dest */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str2, LEN, L"keep it simple--keep it simple--keep it simple", 47); + wmemset_s(str1, L'\0', 20); + + rc = wcsncpy_s(str1, LEN, str2, 10); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[9] == L'\0' && str2[10] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (10)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- <> -%ls-\n", + __FUNCTION__, __LINE__, str1, str2); + } + + +/*--------------------------------------------------*/ +/* 10 Test for copy src > dest, and copy ends after copy NULL char (slen > char string) */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'\0', 20); + wmemcpy_s(str2, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str2, LEN); + + rc = wcsncpy_s(str1, LEN, str2, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[sz] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (sz+1)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- <> -%ls-\n", + __FUNCTION__, __LINE__, str1, str2); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 11 Test for copy src > dest, but dmax too small to hold src string */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'\0', 20); + wmemcpy_s(str2, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str2, LEN); + + rc = wcsncpy_s(str1, (sz-5), str2, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/* 12 Test overlapping buffers fails (dest > src ) */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcsncpy_s(&str1[5], LEN, str1, 30); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str1[5] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 13 Test copy only slen characters from src into dest */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + wmemset_s(str2, L'\0', 20); + + rc = wcsncpy_s(str2, LEN, str1, 17); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str2[16] == L'\0' && str2[17] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (17)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- <> -%ls-\n", + __FUNCTION__, __LINE__, str1, str2); + } + + +/*--------------------------------------------------*/ +/* 14 Test for copy src < dest, and copy ends after copy NULL char (slen > char string) */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str2, L'\0', 20); + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str1, LEN); + + rc = wcsncpy_s(str2, LEN, str1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (str1[sz] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str2, LEN, str1, (sz+1)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u Error -%ls- <> -%ls-\n", + __FUNCTION__, __LINE__, str2, str1); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ +/* 15: Test for copy src < dest, but dmax too small to hold src string */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str2, L'\0', 20); + wmemcpy_s(str1, LEN, L"keep it simple--keep it simple--keep it simple", 47); + sz = wcsnlen_s(str1, LEN); + + rc = wcsncpy_s(str2, (sz-5), str1, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#ifdef SAFE_LIB_STR_NULL_SLACK + for (i=0; i<5; i++) { + if (str1[i] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + } +#else + if (str2[0] != L'\0') { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } +#endif + + +/*--------------------------------------------------*/ +/* 16: Test for accurate String copy over existing string */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'x', 20); + wmemcpy_s(str2, LEN, L"keep it simple", 15); + sz_orig = wcsnlen_s(str2, LEN); + + rc = wcsncpy_s(str1, LEN, str2, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + sz = wcsnlen_s(str1, LEN); + if (sz != sz_orig && sz == 14) { + printf("%s %u (sz=%lu <> 5) Error rc=%u \n", + __FUNCTION__, __LINE__, sz, rc ); + } + rc = memcmp_s(str1, LEN, str2, (sz)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- <> -%ls- (size=%lu) Error rc=%u \n", + __FUNCTION__, __LINE__, str1, str2, sz, rc ); + } + + + +/*--------------------------------------------------*/ +/* 17: Test for just enough space in destination */ + printf("Test #%d:\n", ++testno); + + + wmemcpy_s(str1, LEN, L"it", 3); + wmemcpy_s(str2, LEN, L"qqweqeqeqeq", 12); + + rc = wcsncpy_s(str2, 3, str1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + rc = memcmp_s(str1, LEN, str2, (3)*sizeof(wchar_t), &ind ); + if (ind != 0) { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } + + + +/*--------------------------------------------------*/ +/* 18: Test for not enough space in destination for final NULL */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"it", 3); + wmemcpy_s(str2, LEN, L"qqweqeqeqeq", 12); + + sz = wcsnlen_s(str2, LEN); + + rc = wcsncpy_s(str2, 2, str1, LEN); + if (rc != ESNOSPC) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + if (*str2 != L'\0') { + printf("%s %u -%ls- Error rc=%u \n", + __FUNCTION__, __LINE__, str1, rc ); + } +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_wcsnlen_s.c b/safestringlib/unittests/test_wcsnlen_s.c new file mode 100644 index 0000000000000000000000000000000000000000..755adee8e9c0bf0c2b67e1c7590279a1d8210ec3 --- /dev/null +++ b/safestringlib/unittests/test_wcsnlen_s.c @@ -0,0 +1,156 @@ +/*------------------------------------------------------------------ + * test_wcsnlen_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * + * + * + * + *------------------------------------------------------------------ + */ + +#include "test_private.h" +#include "safe_str_lib.h" + +#define MAX ( 128*4 ) +#define LEN ( 128*4 ) + +static wchar_t str1[LEN]; + +extern rsize_t wcsnlen_s(const wchar_t *dest, rsize_t dmax); +extern errno_t wmemset_s (wchar_t *dest, wchar_t value, rsize_t len); + +int test_wcsnlen_s (void) +{ + errno_t rc; + unsigned int testno = 0; + + + printf("\nTesting wcsnlen_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ +printf("Test #%d:\n", ++testno); + + rc = wcsnlen_s(NULL, LEN); + if (rc != 0) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 2 Test for too large maximum size */ + printf("Test #%d:\n", ++testno); + + rc = wcsnlen_s(str1, (RSIZE_MAX_STR+1)); + if (rc != 0) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 3 Test for length is equal to maximum */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcsnlen_s(str1, 41); + if (rc != 40) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 4 Test for return length is equal to dmax */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 42); + + rc = wcsnlen_s(str1, 20); + if (rc != 20) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 5 Test for zero length string */ + printf("Test #%d:\n", ++testno); + + wmemset_s(str1, L'\0', 42); + + rc = wcsnlen_s(str1, LEN); + if (rc != 0) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + +/*--------------------------------------------------*/ +/* 6 Test for single character string */ + printf("Test #%d:\n", ++testno); + + memset_s(str1, '\0', 50); + str1[0] = L'A'; + + rc = wcsnlen_s(str1, LEN); + if (rc != 1) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + +/*--------------------------------------------------*/ +/* 7 Test for two char string */ + printf("Test #%d:\n", ++testno); + + wmemcpy_s(str1, LEN, L"12", 3); + + rc = wcsnlen_s(str1, LEN); + if (rc != 2) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc ); + } + + + return (0); +} + diff --git a/safestringlib/unittests/test_wmemcmp_s.c b/safestringlib/unittests/test_wmemcmp_s.c new file mode 100644 index 0000000000000000000000000000000000000000..532a5692a217dc6cd6cb5888e4e3757e675a2d79 --- /dev/null +++ b/safestringlib/unittests/test_wmemcmp_s.c @@ -0,0 +1,355 @@ +/*------------------------------------------------------------------ + * test_wcsncat_s.c + * + * August 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for third parameter, source char string, being sent in as NULL + * TC 3: Test for last parameter, indicator, being sent in as NULL + * TC 4: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 5: Test for last parameter, source maximum (smax), being sent in as zero + * TC 6: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 7: Test for last parameter, source length (smax), being larger than the maximum allowed size + * + * + * TC 8: Test for single character equality comparison - proper result + * TC 9: Test for two character equality comparison - proper result + * TC10: Test for long string character equality comparison - proper result + * TC11: Test long string many differences - s1 < s2 at index 10 + * TC12: Test long string many differences - s1 < s2 at index 10 + * TC13: Test long string - single char greater than difference at index 1 + * TC14: Test long string - single char less than difference at index 1 + * TC15: Test long string - single char greater than difference at end of string + * TC16: Test long string - single char less than difference at end of string + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 128 ) + +extern errno_t wmemcmp_s (const wchar_t *dest, rsize_t dmax, + const wchar_t *src, rsize_t smax, int *diff); + +int test_wmemcmp_s() +{ + errno_t rc; + uint32_t len; + int32_t ind; + uint32_t i; + + wchar_t mem1[LEN]; + wchar_t mem2[LEN]; + unsigned int testno = 0; + + + printf("\nTesting wmemcmp_s:\n"); +/*--------------------------------------------------*/ +/* 1: Test for first parameter, destination char string, being sent in as NULL */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(NULL, LEN, mem2, LEN, &ind); + if (rc != ESNULLP) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 2: Test for third parameter, source char string, being sent in as NULL */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, LEN, NULL, LEN, &ind); + if (rc != ESNULLP) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 3: Test for last parameter, indicator, being sent in as NULL */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, LEN, mem2, LEN, NULL); + if (rc != ESNULLP) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 4: Test for second parameter, dest maximum length (dmax), being sent in as zero */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, 0, mem2, LEN, &ind); + if (rc != ESZEROL) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 5: Test for last parameter, source maximum (smax), being sent in as zero */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, LEN, mem2, 0, &ind); + if (rc != ESZEROL) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 6: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN, &ind); + if (rc != ESLEMAX) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 7: Test for last parameter, source length (smax), being larger than the maximum allowed size */ + + printf("Test #%d:\n", ++testno); + rc = wmemcmp_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1, &ind); + if (rc != ESLEMAX) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 8: Test for single character equality comparison */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 1; + rc = wmemcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + ind = memcmp(mem1, mem2, len*4); + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 9: Test for two character equality comparison */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + len = 2; + rc = wmemcmp_s(mem1, len, mem2, len, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + ind = memcmp(mem1, mem2, len*4); + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 10: Test for long string character equality comparison */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + ind = memcmp(mem1, mem2, LEN*4); + if (ind != 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 11: Test short string - s1 > s2 at index 10 */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + for (i=10; i<LEN-10; i++) { mem2[i] = 5; } + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind <= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + +/*--------------------------------------------------*/ +/* 12: Test short string - s1 < s2 at index 10 */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + for (i=10; i<LEN-10; i++) { mem2[i] = 5; } + + rc = wmemcmp_s(mem2, LEN, mem1, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind >= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 13: Test long string - single char greater than difference at index 1 */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + mem2[1] += 1; + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind >= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 14: Test long string - single char less than difference at index 1 */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + mem2[1] -= 1; + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind <= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 15: Test long string - single char greater than difference at end of string */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + mem2[LEN-1] += 1; + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind >= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/* 16: Test long string - single char less than difference at end of string */ + + printf("Test #%d:\n", ++testno); + for (i=0; i<LEN; i++) { mem1[i] = i; } + for (i=0; i<LEN; i++) { mem2[i] = i; } + + mem2[LEN-1] -= 1; + + rc = wmemcmp_s(mem1, LEN, mem2, LEN, &ind); + if (rc != EOK) { + printf("%s %u Ind=%d Error rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + + if (ind <= 0) { + printf("%s %u Ind=%d rc=%u \n", + __FUNCTION__, __LINE__, ind, rc ); + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} diff --git a/safestringlib/unittests/test_wmemcpy_s.c b/safestringlib/unittests/test_wmemcpy_s.c new file mode 100644 index 0000000000000000000000000000000000000000..568b6162e93cad9da9f92289d8ab09bd101c990e --- /dev/null +++ b/safestringlib/unittests/test_wmemcpy_s.c @@ -0,0 +1,417 @@ +/*------------------------------------------------------------------ + * test_wwmemcpy_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * TC 5: Test for last parameter, source length (smax), being sent in as zero + * TC 6: Test for last parameter, source length (smax), being larger than the maximum allowed size + * TC 7: Test for destination overlaps into source buffer + * TC 8: Test for source overlaps into dest buffer + * + * TC 9: Test for just enough room for dest buffer before source & proper copying + * + * + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256*4 ) + +static wchar_t mem1[LEN+2]; +static wchar_t mem2[LEN+2]; + +extern errno_t wmemcpy_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t smax); + +int test_wmemcpy_s (void) +{ + errno_t rc; + uint32_t i; + rsize_t len; + unsigned int testno = 0; + + + printf("\nTesting wmemcpy_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 5 Test for zero length source */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 6 Test for too large source size */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 7 Test for destination overlaps into source buffer */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(mem1, LEN, &mem1[20], 21); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 8 Test for source overlaps into dest buffer */ + printf("Test #%d:\n", ++testno); + + rc = wmemcpy_s(&mem1[25], LEN, mem1, 26); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + +/*--------------------------------------------------*/ +/* 9 Test for just enough room for dest buffer before source & proper copying */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<10; i++) { mem1[i] = 33; } + mem1[10] = 40; + for (i=11; i<LEN; i++) { mem1[i] = 44; } + + rc = wmemcpy_s(mem1, 10, &mem1[10], 10); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + if ( mem1[0] != 40 && mem1[10] != 40) { + printf("%d - %d m1[0]=%d m1[10]=%d should be 40 \n", + __LINE__, i, mem1[0], mem1[10]); + } + for (i=1; i<10; i++) { + if (mem1[i] != 44) { + printf("%d - %d m1=%d should be 44 \n", + __LINE__, i, mem1[i]); + } + } + } + +/*--------------------------------------------------*/ +/* 10 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+1; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = wmemcpy_s(mem1, len, mem2, (len+1) ); + if (rc == EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[i] != 33) { + printf("%d - %lu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ +/* 11 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN/2; + rc = wmemcpy_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33) { + printf("%d - %lu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + } + +/*--------------------------------------------------*/ +/* 12 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = wmemcpy_s(mem1, len, mem2, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33) { + printf("%d - %lu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ +/* 13 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = wmemcpy_s(mem1, len, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + /* verify mem1 was zeroed */ + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] == 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + + } + +/*--------------------------------------------------*/ +/* 14 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + + /* same ptr - no move */ + rc = wmemcpy_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 15 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + for (i=0; i<LEN; i++) { mem2[i] = 65; } + + /* overlap */ + len = 100; + rc = wmemcpy_s(&mem1[0], len, &mem1[10], len); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] == 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + + } + +/*--------------------------------------------------*/ +/* 16 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + for (i=0; i<LEN; i++) { mem2[i] = 65; } + + /* overlap */ + len = 100; + rc = wmemcpy_s(&mem1[10], len, &mem1[0], len); + if (rc != ESOVRLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=10; i<len+10; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + } + +/*--------------------------------------------------*/ +/* 17 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + len = 5; + rc = wmemcpy_s(mem1, len, mem2, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d\n", + __LINE__, i, mem1[i]); + } + } + + } + +/*--------------------------------------------------*/ +/* 18 */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + rc = wmemcpy_s(mem1, LEN, mem2, LEN/2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_wmemmove_s.c b/safestringlib/unittests/test_wmemmove_s.c new file mode 100644 index 0000000000000000000000000000000000000000..878e4cee53128e02e2caf4f7b2bdc03c3584ab48 --- /dev/null +++ b/safestringlib/unittests/test_wmemmove_s.c @@ -0,0 +1,456 @@ +/*------------------------------------------------------------------ + * test_wmemmove_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for second parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size + * TC 4: Test for third parameter, source char string, being sent in as NULL + * TC 5: Test for last parameter, source length (smax), being sent in as zero + * TC 6: Test for last parameter, source length (smax), being larger than the maximum allowed size + * TC 7: Test for destination overlaps into source buffer + * TC 8: Test for source overlaps into dest buffer + * + * TC 9: Test for just enough room for dest buffer before source & proper copying + * TC10: Test source length is too large for destination buffer length by only one + * TC11: Test destination buffer is too short for source buffer + * TC12: Test proper copy without going over + * TC13: Test copying when src buffer overlaps end of destination buffer + * TC14: Test copying when src buffer overlaps beginning of destination buffer + * TC15: Test moving pointer onto itself + * TC16: Test short move between buffers + * TC17: Test offset buffer one byte for move between buffers + * TC18: Test offset buffer two bytes for move between buffers + * + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256*4 ) + +static wchar_t mem1[LEN+2]; +static wchar_t mem2[LEN+2]; + +extern errno_t wmemmove_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, rsize_t smax); +extern errno_t wmemmove_s(wchar_t* dest, rsize_t dmax, const wchar_t* src, size_t smax); + +int test_wmemmove_s (void) +{ + errno_t rc; + uint32_t i; + rsize_t len; + unsigned int testno = 0; + + + printf("\nTesting wmemmove_s:\n"); +/*--------------------------------------------------*/ +/* 1 Test for NULL destination check */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(NULL, LEN, mem2, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 2 Test for zero length destination */ + + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, 0, mem2, LEN); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 3 Test for too large destination size */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, RSIZE_MAX_MEM+1, mem2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 4 Test for NULL source check */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, LEN, NULL, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 5 Test for zero length source */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, 10, mem2, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 6 Test for too large source size */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, LEN, mem2, RSIZE_MAX_MEM+1); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 7 Test for destination overlaps into source buffer */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(mem1, LEN, &mem1[20], 21); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 8 Test for source overlaps into dest buffer */ + printf("Test #%d:\n", ++testno); + + rc = wmemmove_s(&mem1[25], LEN, mem1, 26); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + +/*--------------------------------------------------*/ +/* 9 Test for just enough room for dest buffer before source & proper copying */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<10; i++) { mem1[i] = 33; } + mem1[10] = 40; + for (i=11; i<LEN; i++) { mem1[i] = 44; } + + rc = wmemmove_s(mem1, 10, &mem1[10], 10); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + if ( mem1[0] != 40 && mem1[10] != 40) { + printf("%d - %d m1[0]=%d m1[10]=%d should be 40 \n", + __LINE__, i, mem1[0], mem1[10]); + } + for (i=1; i<10; i++) { + if (mem1[i] != 44) { + printf("%d - %d m1=%d should be 44 \n", + __LINE__, i, mem1[i]); + } + } + } + +/*--------------------------------------------------*/ +/* 10 Test source length is too large for destination buffer length */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+1; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = wmemmove_s(mem1, len, mem2, (len+1) ); + if (rc == EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[i] != 33) { + printf("%d - %lu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + + } + +/*--------------------------------------------------*/ +/* 11 Test destination buffer is too short for source buffer */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN/2; + rc = wmemmove_s(mem1, len, mem2, LEN); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 0) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33) { + printf("%d - %lu m1=%d m2=%d \n", + __LINE__, len, mem1[len], mem2[len]); + } + } + +/*--------------------------------------------------*/ +/* 12 Test proper copy without going over */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+2; i++) { mem1[i] = 33; } + for (i=0; i<LEN; i++) { mem2[i] = 44; } + + len = LEN; + rc = wmemmove_s(mem1, len, mem2, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + + } else { + + /* verify mem1 was copied */ + for (i=0; i<len; i++) { + if (mem1[i] != mem2[i]) { + printf("%d - %d m1=%d <> m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + if (mem1[len] != 33 && mem1[len+1] != 33) { + printf("%d - %lu m1[len]=%d m1[len+1]=%d \n", + __LINE__, len, mem1[len], mem1[len+1]); + } + + } + +/*--------------------------------------------------*/ +/* 13 Test copying when src buffer overlaps end of destination buffer */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<10; i++) { mem1[i] = 33; } + for (i=10; i<LEN; i++) { mem1[i] = 44; } + + len = LEN-10; + rc = wmemmove_s(mem1, len, &mem1[10], len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + /* verify mem1 was copied properly */ + for (i=0; i<len; i++) { + if (mem1[i] != 44) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + + } + + +/*--------------------------------------------------*/ +/* 14 Test copying when src buffer overlaps beginning of destination buffer */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN+2; i++) { mem1[i] = i; } + + len = LEN-10; + rc = wmemmove_s(&mem1[10], len, mem1, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + /* verify mem1 was copied properly */ + for (i=0; i<10; i++) { + if (mem1[i] != i) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + for (i=10; i<LEN; i++) { + if (mem1[i] != i-10) { + printf("%d - %d m1=%d should=%d \n", + __LINE__, i, mem1[i], i-10); + } + } + + if ( mem1[LEN] != LEN && mem1[LEN+1] != LEN+1) { + printf("%d - %d m1[LEN]=%d mem1[LEN+1]=%d should be 1024 & 1025 \n", + __LINE__, i, mem1[LEN], mem1[LEN+1]); + } + + } + +/*--------------------------------------------------*/ +/* 15 Test moving pointer onto itself */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 55; } + + /* same ptr - no move */ + rc = wmemmove_s(mem1, LEN, mem1, LEN); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + +/*--------------------------------------------------*/ +/* 16 Test short move between buffers */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + len = 5; + rc = wmemmove_s(mem1, len, mem2, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<len; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d\n", + __LINE__, i, mem1[i]); + } + } + + } + +/*--------------------------------------------------*/ +/* 17 Test long move between buffers */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + rc = wmemmove_s(mem1, LEN, mem2, LEN/2); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + for (i=0; i<LEN/2; i++) { + if (mem1[i] != 55) { + printf("%d - %d m1=%d m2=%d \n", + __LINE__, i, mem1[i], mem2[i]); + } + } + } + + +/*--------------------------------------------------*/ +/* 17 Test offset buffer one byte for move between buffers */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + rc = wmemmove_s((wchar_t)(((char *)mem1)+1), LEN, mem2, 10); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + if ( mem1[0] != 0x00003723 ) { + printf("%d - %d first char memory incorrect m1=%04x \n", + __LINE__, i, mem1[i]); + } + for (i=1; i<10; i++) { + if (mem1[i] != 0x00003700) { + printf("%d - %d m1=%04x \n", + __LINE__, i, mem1[i]); + } + } + } + + +/*--------------------------------------------------*/ +/* 18 Test offset buffer two byte for move between buffers */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 35; } + for (i=0; i<LEN; i++) { mem2[i] = 55; } + + rc = wmemmove_s((wchar_t)(((char *)mem1)+2), LEN, mem2, 10); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } else { + + if ( mem1[0] != 0x00370023 ) { + printf("%d - %d first char memory incorrect m1=%04x \n", + __LINE__, i, mem1[i]); + } + for (i=1; i<10; i++) { + if (mem1[i] != 0x00370000) { + printf("%d - %d m1=%04x \n", + __LINE__, i, mem1[i]); + } + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} + diff --git a/safestringlib/unittests/test_wmemset_s.c b/safestringlib/unittests/test_wmemset_s.c new file mode 100644 index 0000000000000000000000000000000000000000..ed27c4cc6d726d1ab6b8f1d2210e1410c74fdb61 --- /dev/null +++ b/safestringlib/unittests/test_wmemset_s.c @@ -0,0 +1,240 @@ +/*------------------------------------------------------------------ + * test_wmemset_s + * + * September 2014, D Wheeler + * + * Copyright (c) 2014 by Intel Corp + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + *------------------------------------------------------------------ + *------------------------------------------------------------------ + * TEST COVERAGE NOTES + * + * The following notes describe the purpose of the test cases in + * order to ensure full coverage of all return paths in the code to + * be tested, as well as test for security concerns in the target. + * The test methodology is to perfrom branch-coverage testing to ensure + * all exit paths from the code have been tested. Additional tests are added to + * perform some corner case validation of certain more complex branches + * to verify no side-effects or missing corners are introduced in the code. + * + * BASIC PARAMETER VALIDATION + * TC 1: Test for first parameter, destination char string, being sent in as NULL + * TC 2: Test for third parameter, dest maximum length (dmax), being sent in as zero + * TC 3: Test for third parameter, dest maximum length (dmax), being larger than the maximum allowed size + * + * TC 4: Test setting a single character + * TC 5: Test setting two characters + * TC 6: Test setting multiple characters (12) + * TC 7: Test setting multiple characters (31) + * TC 8: Test setting multiple characters (133) + * + * + *------------------------------------------------------------------ + */ + + +#include "test_private.h" +#include "safe_mem_lib.h" + +#define LEN ( 256 ) + +static wchar_t mem1[LEN]; + +extern errno_t wmemset_s (wchar_t *dest, wchar_t value, rsize_t len); + +int test_wmemset_s (void) +{ + errno_t rc; + uint32_t len; + uint32_t i; + unsigned int testno = 0; + wchar_t value; + + printf("\nTesting wmemset_s:\n"); +/*--------------------------------------------------*/ +/* 1: Test for first parameter, destination char string, being sent in as NULL */ + printf("Test #%d:\n", ++testno); + + value = 34; + + rc = wmemset_s(NULL, value, LEN); + if (rc != ESNULLP) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 2: Test for third parameter, dest maximum length (dmax), being sent in as zero */ + printf("Test #%d:\n", ++testno); + value = 34; + + rc = wmemset_s(mem1, value, 0); + if (rc != ESZEROL) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 3: Test for second parameter, dest maximum length (dmax), being larger than the maximum allowed size */ + printf("Test #%d:\n", ++testno); + + value = 34; + + rc = wmemset_s(mem1, value, (RSIZE_MAX_MEM+1)); + if (rc != ESLEMAX) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + +/*--------------------------------------------------*/ +/* 4: Test setting a single character */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 1; + value = 34; + + rc = wmemset_s(mem1, value, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if ( mem1[0] != value ) { + printf("%d - m1[0]=%d \n", + __LINE__, mem1[0]); + } + for (i=1; i<LEN; i++) { + if (mem1[i] != 99) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/* 5: Test setting two characters */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 2; + value = 34; + + rc = wmemset_s(mem1, value, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + if ( mem1[0] != value || mem1[1] != value ) { + printf("%d - m1[0]=%d m1[1]=%d \n", + __LINE__, mem1[0], mem1[1]); + } + for (i=2; i<LEN; i++) { + if (mem1[i] != 99) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + + +/*--------------------------------------------------*/ +/* 6: Test setting multiple characters */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 12; + value = 34; + + rc = wmemset_s(mem1, value, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + for (i=len; i<LEN; i++) { + if (mem1[i] != 99) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/* 7: Test setting multiple characters */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 31; + value = 3; + + rc = wmemset_s(mem1, value, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/* 8: Test setting multiple characters */ + printf("Test #%d:\n", ++testno); + + for (i=0; i<LEN; i++) { mem1[i] = 99; } + + len = 133; + value = L'A'; + + rc = wmemset_s(mem1, value, len); + if (rc != EOK) { + printf("%s %u Error rc=%u \n", + __FUNCTION__, __LINE__, rc); + } + + for (i=0; i<len; i++) { + if (mem1[i] != value) { + printf("%d - %d m1=%d \n", + __LINE__, i, mem1[i]); + } + } + +/*--------------------------------------------------*/ +/*--------------------------------------------------*/ + + return (0); +} +