brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 948d483 Raw
112 lines · cpp
1// RUN: %check_clang_tidy %s bugprone-not-null-terminated-result %t -- \2// RUN: -- -std=c++11 -I %S/Inputs/not-null-terminated-result3 4#include "not-null-terminated-result-cxx.h"5 6#define __STDC_LIB_EXT1__ 17#define __STDC_WANT_LIB_EXT1__ 18 9//===----------------------------------------------------------------------===//10// wmemcpy() - destination array tests11//===----------------------------------------------------------------------===//12 13void bad_wmemcpy_known_dest(const wchar_t *src) {14  wchar_t dest01[13];15  wmemcpy(dest01, src, wcslen(src));16  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy' is not null-terminated [bugprone-not-null-terminated-result]17  // CHECK-FIXES: wchar_t dest01[14];18  // CHECK-FIXES-NEXT: wcscpy_s(dest01, src);19}20 21void good_wmemcpy_known_dest(const wchar_t *src) {22  wchar_t dst01[14];23  wcscpy_s(dst01, src);24}25 26//===----------------------------------------------------------------------===//27// wmemcpy() - length tests28//===----------------------------------------------------------------------===//29 30void bad_wmemcpy_full_source_length(const wchar_t *src) {31  wchar_t dest20[13];32  wmemcpy(dest20, src, wcslen(src));33  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy' is not null-terminated [bugprone-not-null-terminated-result]34  // CHECK-FIXES: wchar_t dest20[14];35  // CHECK-FIXES-NEXT: wcscpy_s(dest20, src);36}37 38void good_wmemcpy_full_source_length(const wchar_t *src) {39  wchar_t dst20[14];40  wcscpy_s(dst20, src);41}42 43void bad_wmemcpy_partial_source_length(const wchar_t *src) {44  wchar_t dest21[13];45  wmemcpy(dest21, src, wcslen(src) - 1);46  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy' is not null-terminated [bugprone-not-null-terminated-result]47  // CHECK-FIXES: wchar_t dest21[14];48  // CHECK-FIXES-NEXT: wcsncpy_s(dest21, src, wcslen(src) - 1);49}50 51void good_wmemcpy_partial_source_length(const wchar_t *src) {52  wchar_t dst21[14];53  wcsncpy_s(dst21, src, wcslen(src) - 1);54}55 56//===----------------------------------------------------------------------===//57// wmemcpy_s() - destination array tests58//===----------------------------------------------------------------------===//59 60void bad_wmemcpy_s_unknown_dest(wchar_t *dest40, const wchar_t *src) {61  wmemcpy_s(dest40, 13, src, wcslen(src));62  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy_s' is not null-terminated [bugprone-not-null-terminated-result]63  // CHECK-FIXES: wcscpy_s(dest40, 13, src);64}65 66void good_wmemcpy_s_unknown_dest(wchar_t *dst40, const wchar_t *src) {67  wcscpy_s(dst40, 13, src);68}69 70void bad_wmemcpy_s_known_dest(const wchar_t *src) {71  wchar_t dest41[13];72  wmemcpy_s(dest41, 13, src, wcslen(src));73  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy_s' is not null-terminated [bugprone-not-null-terminated-result]74  // CHECK-FIXES: wchar_t dest41[14];75  // CHECK-FIXES-NEXT: wcscpy_s(dest41, src);76}77 78void good_wmemcpy_s_known_dest(const wchar_t *src) {79  wchar_t dst41[13];80  wcscpy_s(dst41, src);81}82 83//===----------------------------------------------------------------------===//84// wmemcpy_s() - length tests85//===----------------------------------------------------------------------===//86 87void bad_wmemcpy_s_full_source_length(const wchar_t *src) {88  wchar_t dest60[13];89  wmemcpy_s(dest60, 13, src, wcslen(src));90  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy_s' is not null-terminated [bugprone-not-null-terminated-result]91  // CHECK-FIXES: wchar_t dest60[14];92  // CHECK-FIXES-NEXT: wcscpy_s(dest60, src);93}94 95void good_wmemcpy_s_full_source_length(const wchar_t *src) {96  wchar_t dst60[13];97  wcscpy_s(dst60, src);98}99 100void bad_wmemcpy_s_partial_source_length(const wchar_t *src) {101  wchar_t dest61[13];102  wmemcpy_s(dest61, 13, src, wcslen(src) - 1);103  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the result from calling 'wmemcpy_s' is not null-terminated [bugprone-not-null-terminated-result]104  // CHECK-FIXES: wchar_t dest61[14];105  // CHECK-FIXES-NEXT: wcsncpy_s(dest61, src, wcslen(src) - 1);106}107 108void good_wmemcpy_s_partial_source_length(const wchar_t *src) {109  wchar_t dst61[13];110  wcsncpy_s(dst61, src, wcslen(src) - 1);111}112