X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/59a93276e38d2d8ae297a9581a5388a475c209c1..a85c067ba6c6940512cf57ec213277a370d87e70:/src/src/spool_mbox.c diff --git a/src/src/spool_mbox.c b/src/src/spool_mbox.c index 7b6a79607..d9767ec3c 100644 --- a/src/src/spool_mbox.c +++ b/src/src/spool_mbox.c @@ -4,7 +4,8 @@ /* Copyright (c) Tom Kistner 2003 - 2015 * License: GPL - * Copyright (c) The Exim Maintainers 2016 - 2018 + * Copyright (c) The Exim Maintainers 2016 - 2021 + * SPDX-License-Identifier: GPL-2.0-only */ /* Code for setting up a MBOX style spool file inside a /scan/ @@ -53,8 +54,8 @@ if (!spool_mbox_ok) temp_string = string_sprintf("scan/%s", message_id); if (!directory_make(spool_directory, temp_string, 0750, FALSE)) { - log_write(0, LOG_MAIN|LOG_PANIC, "%s", string_open_failed(errno, - "scan directory %s/scan/%s", spool_directory, temp_string)); + log_write(0, LOG_MAIN|LOG_PANIC, "%s", + string_open_failed("scan directory %s/scan/%s", spool_directory, temp_string)); goto OUT; } @@ -62,8 +63,8 @@ if (!spool_mbox_ok) if (!(mbox_file = modefopen(mbox_path, "wb", SPOOL_MODE))) { - log_write(0, LOG_MAIN|LOG_PANIC, "%s", string_open_failed(errno, - "scan file %s", mbox_path)); + log_write(0, LOG_MAIN|LOG_PANIC, "%s", + string_open_failed("scan file %s", mbox_path)); goto OUT; } @@ -185,8 +186,8 @@ if (!spool_mbox_ok) if ( !(yield = Ufopen(mbox_path,"rb")) || fstat(fileno(yield), &statbuf) != 0 ) - log_write(0, LOG_MAIN|LOG_PANIC, "%s", string_open_failed(errno, - "scan file %s", mbox_path)); + log_write(0, LOG_MAIN|LOG_PANIC, "%s", + string_open_failed( "scan file %s", mbox_path)); else *mbox_file_size = statbuf.st_size; @@ -211,34 +212,34 @@ malware_ok = 0; if (spool_mbox_ok && !f.no_mbox_unspool) { uschar *file_path; - struct dirent *entry; DIR *tempdir; rmark reset_point = store_mark(); uschar * mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id); - if (!(tempdir = opendir(CS mbox_path))) + if (!(tempdir = exim_opendir(mbox_path))) { debug_printf("Unable to opendir(%s): %s\n", mbox_path, strerror(errno)); /* Just in case we still can: */ - rmdir(CS mbox_path); + (void) rmdir(CS mbox_path); return; } /* loop thru dir & delete entries */ - while((entry = readdir(tempdir))) + for (struct dirent *entry; entry = readdir(tempdir); ) { uschar *name = US entry->d_name; - int dummy; if (Ustrcmp(name, US".") == 0 || Ustrcmp(name, US"..") == 0) continue; file_path = string_sprintf("%s/%s", mbox_path, name); debug_printf("unspool_mbox(): unlinking '%s'\n", file_path); - dummy = unlink(CS file_path); dummy = dummy; /* compiler quietening */ + if (unlink(CS file_path) != 0) + log_write(0, LOG_MAIN|LOG_PANIC, "unlink(%s): %s", file_path, strerror(errno)); } closedir(tempdir); /* remove directory */ - rmdir(CS mbox_path); + if (rmdir(CS mbox_path) != 0) + log_write(0, LOG_MAIN|LOG_PANIC, "rmdir(%s): %s", mbox_path, strerror(errno)); store_reset(reset_point); } spool_mbox_ok = 0;