brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · c906625 Raw
128 lines · c
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_CORRECT2// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_13// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_24// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_35// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_46// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_57// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s -DTEST_GETLINE_GH1448848 9// emulator of "system-header-simulator.h" because of redefinition of 'getline' function10typedef struct _FILE FILE;11typedef __typeof(sizeof(int)) size_t;12typedef long ssize_t;13#define NULL 014 15int fclose(FILE *fp);16FILE *tmpfile(void);17 18#ifdef TEST_CORRECT19ssize_t getline(char **lineptr, size_t *n, FILE *stream);20ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream);21 22void test_correct() {23  FILE *F1 = tmpfile();24  if (!F1)25    return;26  char *buffer = NULL;27  getline(&buffer, NULL, F1); // expected-warning {{Size pointer might be NULL}}28  fclose(F1);29}30 31void test_delim_correct() {32  FILE *F1 = tmpfile();33  if (!F1)34    return;35  char *buffer = NULL;36  getdelim(&buffer, NULL, ',', F1); // expected-warning {{Size pointer might be NULL}}37  fclose(F1);38}39#endif40 41#ifdef TEST_GETLINE_142// expected-no-diagnostics43ssize_t getline(int lineptr);44 45void test() {46  FILE *F1 = tmpfile();47  if (!F1)48    return;49  int buffer = 0;50  getline(buffer);51  fclose(F1);52}53#endif54 55#ifdef TEST_GETLINE_256ssize_t getline(char **lineptr, size_t *n);57 58void test() {59  FILE *F1 = tmpfile();60  if (!F1)61    return;62  char *buffer = NULL;63  getline(&buffer, NULL); // expected-warning {{Size pointer might be NULL}}64  fclose(F1);65}66#endif67 68#ifdef TEST_GETLINE_369// expected-no-diagnostics70ssize_t getline(char **lineptr, size_t n, FILE *stream);71 72void test() {73  FILE *F1 = tmpfile();74  if (!F1)75    return;76  char *buffer = NULL;77  getline(&buffer, 0, F1);78  fclose(F1);79}80#endif81 82#ifdef TEST_GETLINE_483ssize_t getline(char **lineptr, size_t *n, int stream);84ssize_t getdelim(char **lineptr, size_t *n, int delimiter, int stream);85 86void test() {87  FILE *F1 = tmpfile();88  if (!F1)89    return;90  char *buffer = NULL;91  getline(&buffer, NULL, 1); // expected-warning {{Size pointer might be NULL}}92  fclose(F1);93}94 95void test_delim() {96  FILE *F1 = tmpfile();97  if (!F1)98    return;99  char *buffer = NULL;100  getdelim(&buffer, NULL, ',', 1); // expected-warning {{Size pointer might be NULL}}101  fclose(F1);102}103#endif104 105#ifdef TEST_GETLINE_5106ssize_t getdelim(char **lineptr, size_t *n, const char* delimiter, FILE *stream);107 108void test_delim() {109  FILE *F1 = tmpfile();110  if (!F1)111    return;112  char *buffer = NULL;113  getdelim(&buffer, NULL, ",", F1); // expected-warning {{Size pointer might be NULL}}114  fclose(F1);115}116#endif117 118#ifdef TEST_GETLINE_GH144884119// expected-no-diagnostics120struct AW_string {};121void getline(int *, struct AW_string);122void top() {123  struct AW_string line;124  int getline_file_info;125  getline(&getline_file_info, line);126}127#endif128