From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by passt.top (Postfix, from userid 1000) id 7E8C95A061B; Fri, 25 Oct 2024 01:04:38 +0200 (CEST) From: Stefano Brivio To: passt-dev@passt.top Subject: [PATCH 5/8] treewide: Suppress clang-tidy warning if we already use O_CLOEXEC or if we can't Date: Fri, 25 Oct 2024 01:04:35 +0200 Message-ID: <20241024230438.3192725-6-sbrivio@redhat.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241024230438.3192725-1-sbrivio@redhat.com> References: <20241024230438.3192725-1-sbrivio@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: GR3OXYOBPW2Z75YI7LIDDBI72HYOS3TT X-Message-ID-Hash: GR3OXYOBPW2Z75YI7LIDDBI72HYOS3TT X-MailFrom: sbrivio@passt.top X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: In pcap_init(), we open the packet capture file with O_CLOEXEC only when possible. In logfile_init() and pidfile_open(), the fact that we pass a third 'mode' argument to open() seems to confuse the android-cloexec-open checker in LLVM versions from 16 to 19 (at least). The checker is suggesting to add O_CLOEXEC to 'mode', and not in 'flags', where we already have it. Signed-off-by: Stefano Brivio --- log.c | 4 ++++ pcap.c | 1 + util.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/log.c b/log.c index 6932885..154466f 100644 --- a/log.c +++ b/log.c @@ -416,7 +416,11 @@ void logfile_init(const char *name, const char *path, size_t size) if (readlink("/proc/self/exe", exe, PATH_MAX - 1) < 0) die_perror("Failed to read own /proc/self/exe link"); + /* We use O_CLOEXEC here, but clang-tidy as of LLVM 16 to 19 looks for + * it in the 'mode' argument if we have one, so... + */ log_file = open(path, O_CREAT | O_TRUNC | O_APPEND | O_RDWR | O_CLOEXEC, + /* NOLINTNEXTLINE(android-cloexec-open) */ S_IRUSR | S_IWUSR); if (log_file == -1) die_perror("Couldn't open log file %s", path); diff --git a/pcap.c b/pcap.c index 6ee6cdf..6753cfb 100644 --- a/pcap.c +++ b/pcap.c @@ -167,6 +167,7 @@ void pcap_init(struct ctx *c) return; flags |= c->foreground ? O_CLOEXEC : 0; + /* NOLINTNEXTLINE(android-cloexec-open): ...only where possible */ pcap_fd = open(c->pcap, flags, S_IRUSR | S_IWUSR); if (pcap_fd == -1) { perror("open"); diff --git a/util.c b/util.c index eff6787..b719f9a 100644 --- a/util.c +++ b/util.c @@ -419,7 +419,11 @@ int pidfile_open(const char *path) if (!*path) return -1; + /* We use O_CLOEXEC here, but clang-tidy as of LLVM 16 to 19 looks for + * it in the 'mode' argument if we have one + */ if ((fd = open(path, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, + /* NOLINTNEXTLINE(android-cloexec-open) */ S_IRUSR | S_IWUSR)) < 0) { perror("PID file open"); exit(EXIT_FAILURE); -- 2.43.0