diff options
author | Mateusz Kusiak <mateusz.kusiak@intel.com> | 2024-02-20 11:56:09 +0100 |
---|---|---|
committer | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-02-23 12:43:43 +0100 |
commit | b7d7837128e90c8b496ebc3d88eda1a8ff477392 (patch) | |
tree | c5ad6008284ced014a5c72cc1f4d2e50d7229dae | |
parent | 38cb95dd28fa790ae6d90b169f1fd2b1d09a02f2 (diff) | |
download | mdadm-b7d7837128e90c8b496ebc3d88eda1a8ff477392.tar.gz |
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 <mateusz.kusiak@intel.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
-rw-r--r-- | Monitor.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -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); |