From: Mateusz Kusiak Date: Tue, 20 Feb 2024 10:56:09 +0000 (+0100) Subject: Monitor: open file before check in check_one_sharer() X-Git-Tag: mdadm-4.4~239 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7d7837128e90c8b496ebc3d88eda1a8ff477392;p=thirdparty%2Fmdadm.git Monitor: open file before check in check_one_sharer() Open file before performing checks in check_one_sharer() to avoid file tampering. Remove redundant access check. Signed-off-by: Mateusz Kusiak Signed-off-by: Mariusz Tkaczyk --- diff --git a/Monitor.c b/Monitor.c index 824a69fc..7cee95d4 100644 --- a/Monitor.c +++ b/Monitor.c @@ -451,20 +451,17 @@ static int check_one_sharer(int scan) return 2; } - if (access(AUTOREBUILD_PID_PATH, F_OK) != 0) - return 0; - - if (!is_file(AUTOREBUILD_PID_PATH)) { - pr_err("%s is not a regular file.\n", AUTOREBUILD_PID_PATH); - return 2; - } - fp = fopen(AUTOREBUILD_PID_PATH, "r"); if (!fp) { pr_err("Cannot open %s file.\n", AUTOREBUILD_PID_PATH); return 2; } + if (!is_file(AUTOREBUILD_PID_PATH)) { + pr_err("%s is not a regular file.\n", AUTOREBUILD_PID_PATH); + return 2; + } + if (fscanf(fp, "%d", &pid) != 1) { pr_err("Cannot read pid from %s file.\n", AUTOREBUILD_PID_PATH); fclose(fp);