2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-30 21:55:20 +00:00

postfix-2.9.15

This commit is contained in:
Wietse Venema
2015-10-10 00:00:00 -05:00
committed by Viktor Dukhovni
parent 0c804d19d5
commit f55d429ab2
6 changed files with 55 additions and 10 deletions

View File

@@ -17968,3 +17968,27 @@ Apologies for any names omitted.
SSLv2 or SSLv3. See the RELEASE_NOTES file for how to get
the old settings back. Files: global/mail_params.h,
proto/postconf.proto, and files derived from those.
20150924
Bugfix (introduced: 20090216-24): incorrect postmulti error
message. Reported by Patrik Koetter. Fix by Viktor Dukhovni.
File: postmulti/postmulti.c.
Workaround: don't create a new instance when the template
main.cf and master.cf files are missing, as happens on
Debian-like systems. Viktor Dukhovni. File: conf/postmulti-script.
20150925
Bugfix (introduced: 19970309, fixed 20150421 in development
release): reset errno before calling readdir(), in order
to distinguish between an end-of-directory and an error
condition. File: scandir.c.
20150930
Bugfix (introduced: 20040124): Milter client panic while
adding a header, because the PREPEND action used the same
output function for header_checks and body_checks. Viktor
Dukhovni and Wietse. File: cleanup/cleanup_message.c.

View File

@@ -127,6 +127,11 @@ create|import)
fatal "'$config_directory' lacks a master.cf file"
}
test -f $daemon_directory/main.cf ||
fatal "Missing main.cf prototype: $daemon_directory/main.cf"
test -f $daemon_directory/master.cf ||
fatal "Missing master.cf prototype: $daemon_directory/master.cf"
# Create instance-specific directories
#
test -d $config_directory ||

View File

@@ -385,11 +385,20 @@ static const char *cleanup_act(CLEANUP_STATE *state, char *context,
if (STREQUAL(value, "PREPEND", command_len)) {
if (*optional_text == 0) {
msg_warn("PREPEND action without text in %s map", map_class);
} else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0
&& !is_header(optional_text)) {
msg_warn("bad PREPEND header text \"%s\" in %s map -- "
"need \"headername: headervalue\"",
optional_text, map_class);
} else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0) {
if (!is_header(optional_text)) {
msg_warn("bad PREPEND header text \"%s\" in %s map -- "
"need \"headername: headervalue\"",
optional_text, map_class);
} else {
VSTRING *temp;
cleanup_act_log(state, "prepend", context, buf, optional_text);
temp = vstring_strcpy(vstring_alloc(strlen(optional_text)),
optional_text);
cleanup_out_header(state, temp);
vstring_free(temp);
}
} else {
cleanup_act_log(state, "prepend", context, buf, optional_text);
cleanup_out_string(state, REC_TYPE_NORM, optional_text);

View File

@@ -20,8 +20,8 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
#define MAIL_RELEASE_DATE "20150720"
#define MAIL_VERSION_NUMBER "2.9.14"
#define MAIL_RELEASE_DATE "20151010"
#define MAIL_VERSION_NUMBER "2.9.15"
#ifdef SNAPSHOT
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE

View File

@@ -1685,7 +1685,7 @@ int main(int argc, char **argv)
case 'e':
if ((code = EDIT_CMD_CODE(optarg)) < 0)
msg_fatal("Invalid '-e' edit action '%s'. Specify '%s', "
"'%s', '%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
"'%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
optarg,
EDIT_CMD_STR(EDIT_CMD_CREATE),
EDIT_CMD_STR(EDIT_CMD_DESTROY),
@@ -1694,8 +1694,7 @@ int main(int argc, char **argv)
EDIT_CMD_STR(EDIT_CMD_ENABLE),
EDIT_CMD_STR(EDIT_CMD_DISABLE),
EDIT_CMD_STR(EDIT_CMD_ASSIGN),
EDIT_CMD_STR(EDIT_CMD_INIT),
optarg);
EDIT_CMD_STR(EDIT_CMD_INIT));
if (cmd_mode != code)
command_mode_count++;
cmd_mode = code;

View File

@@ -78,6 +78,7 @@
#endif
#endif
#include <string.h>
#include <errno.h>
/* Utility library. */
@@ -177,6 +178,13 @@ char *scan_dir_next(SCAN_DIR *scan)
#define STREQ(x,y) (strcmp((x),(y)) == 0)
if (info) {
/*
* Fix 20150421: readdir() does not reset errno after reaching the
* end-of-directory. This dates back all the way to the initial
* implementation of 19970309.
*/
errno = 0;
while ((dp = readdir(info->dir)) != 0) {
if (STREQ(dp->d_name, ".") || STREQ(dp->d_name, "..")) {
if (msg_verbose > 1)