brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 3a25a93 Raw
76 lines · cpp
1// RUN: %check_clang_tidy %s android-cloexec-socket %t2 3#define SOCK_STREAM 14#define SOCK_DGRAM 25#define __O_CLOEXEC 36#define SOCK_CLOEXEC __O_CLOEXEC7#define TEMP_FAILURE_RETRY(exp) \8  ({                            \9    int _rc;                    \10    do {                        \11      _rc = (exp);              \12    } while (_rc == -1);        \13  })14 15extern "C" int socket(int domain, int type, int protocol);16 17void a() {18  socket(0, SOCK_STREAM, 0);19  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: 'socket' should use SOCK_CLOEXEC where possible [android-cloexec-socket]20  // CHECK-FIXES: socket(0, SOCK_STREAM | SOCK_CLOEXEC, 0);21  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM, 0));22  // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: 'socket'23  // CHECK-FIXES: TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_CLOEXEC, 0));24  socket(0, SOCK_STREAM | SOCK_DGRAM, 0);25  // CHECK-MESSAGES: :[[@LINE-1]]:37: warning: 'socket'26  // CHECK-FIXES: socket(0, SOCK_STREAM | SOCK_DGRAM | SOCK_CLOEXEC, 0);27  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_DGRAM, 0));28  // CHECK-MESSAGES: :[[@LINE-1]]:56: warning: 'socket'29  // CHECK-FIXES: TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_DGRAM | SOCK_CLOEXEC, 0));30}31 32void f() {33  socket(0, 3, 0);34  // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: 'socket'35  // CHECK-FIXES: socket(0, 3 | SOCK_CLOEXEC, 0);36  TEMP_FAILURE_RETRY(socket(0, 3, 0));37  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: 'socket'38  // CHECK-FIXES: TEMP_FAILURE_RETRY(socket(0, 3 | SOCK_CLOEXEC, 0));39 40  int flag = 3;41  socket(0, flag, 0);42  TEMP_FAILURE_RETRY(socket(0, flag, 0));43}44 45namespace i {46int socket(int domain, int type, int protocol);47 48void d() {49  socket(0, SOCK_STREAM, 0);50  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM, 0));51  socket(0, SOCK_STREAM | SOCK_DGRAM, 0);52  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_DGRAM, 0));53}54 55} // namespace i56 57void e() {58  socket(0, SOCK_CLOEXEC, 0);59  TEMP_FAILURE_RETRY(socket(0, SOCK_CLOEXEC, 0));60  socket(0, SOCK_STREAM | SOCK_CLOEXEC, 0);61  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_CLOEXEC, 0));62  socket(0, SOCK_STREAM | SOCK_CLOEXEC | SOCK_DGRAM, 0);63  TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_CLOEXEC | SOCK_DGRAM, 0));64}65 66class G {67public:68  int socket(int domain, int type, int protocol);69  void d() {70    socket(0, SOCK_STREAM, 0);71    TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM, 0));72    socket(0, SOCK_STREAM | SOCK_DGRAM, 0);73    TEMP_FAILURE_RETRY(socket(0, SOCK_STREAM | SOCK_DGRAM, 0));74  }75};76