X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/1ba28e2b955b005ce4825fec792df17f75a8de1e..f5730918ef684baafbd9e606a1d4eb06914563cc:/src/src/lookups/lf_check_file.c diff --git a/src/src/lookups/lf_check_file.c b/src/src/lookups/lf_check_file.c index 1d452599d..c4c05e44d 100644 --- a/src/src/lookups/lf_check_file.c +++ b/src/src/lookups/lf_check_file.c @@ -1,11 +1,11 @@ -/* $Cambridge: exim/src/src/lookups/lf_check_file.c,v 1.5 2009/11/16 19:50:38 nm4 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2009 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ #include "../exim.h" @@ -40,14 +40,12 @@ Side effect: sets errno to ERRNO_BADUGID, ERRNO_NOTREGULAR or ERRNO_BADMODE for */ int -lf_check_file(int fd, uschar *filename, int s_type, int modemask, uid_t *owners, - gid_t *owngroups, const char *type, uschar **errmsg) +lf_check_file(int fd, const uschar * filename, int s_type, int modemask, + uid_t * owners, gid_t * owngroups, const char * type, uschar ** errmsg) { -int i; struct stat statbuf; -if ((fd >= 0 && fstat(fd, &statbuf) != 0) || - (fd < 0 && Ustat(filename, &statbuf) != 0)) +if ((fd < 0 ? Ustat(filename, &statbuf) : fstat(fd, &statbuf)) != 0) { int save_errno = errno; *errmsg = string_sprintf("%s: stat failed", filename); @@ -81,10 +79,10 @@ if ((statbuf.st_mode & modemask) != 0) return +1; } -if (owners != NULL) +if (owners) { BOOL uid_ok = FALSE; - for (i = 1; i <= (int)owners[0]; i++) + for (int i = 1; i <= (int)owners[0]; i++) if (owners[i] == statbuf.st_uid) { uid_ok = TRUE; break; } if (!uid_ok) { @@ -95,10 +93,10 @@ if (owners != NULL) } } -if (owngroups != NULL) +if (owngroups) { BOOL gid_ok = FALSE; - for (i = 1; i <= (int)owngroups[0]; i++) + for (int i = 1; i <= (int)owngroups[0]; i++) if (owngroups[i] == statbuf.st_gid) { gid_ok = TRUE; break; } if (!gid_ok) {