mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-30 13:48:06 +00:00
postfix-2.12-20150120
This commit is contained in:
committed by
Viktor Dukhovni
parent
5c187bc356
commit
3d9384829e
@@ -21426,3 +21426,10 @@ Apologies for any names omitted.
|
|||||||
even when the client did not send any. This helps logfile
|
even when the client did not send any. This helps logfile
|
||||||
analyzers to recognize sessions without commands. File:
|
analyzers to recognize sessions without commands. File:
|
||||||
smtpd/smtpd.c.
|
smtpd/smtpd.c.
|
||||||
|
|
||||||
|
20150120
|
||||||
|
|
||||||
|
Bugfix (introduced: 20141230-20140109): do not reallocate
|
||||||
|
a dictionary handle after it is initialized. This breaks
|
||||||
|
CDB. Problem reported by Andreas Schulze. Files: util/dict.h,
|
||||||
|
util/dict_alloc.c, util/dict_utf8.c.
|
||||||
|
@@ -8,9 +8,18 @@ Wish list:
|
|||||||
|
|
||||||
Things to do after the stable release:
|
Things to do after the stable release:
|
||||||
|
|
||||||
|
Back out check_dict_get() because the longjmp() calls
|
||||||
|
introduce memory leaks upstream.
|
||||||
|
|
||||||
postconf -P: emit '{ name = value }' when editing/adding a
|
postconf -P: emit '{ name = value }' when editing/adding a
|
||||||
parameter whose new value contains whitespace.
|
parameter whose new value contains whitespace.
|
||||||
|
|
||||||
|
Fix the ad-hoc lowercase() calls that silently assume an
|
||||||
|
adress or localpart is ASCII: smtpd/smtpd_resolve.c,
|
||||||
|
local/forward.c, local/recipient.c, ... Are we supposed to
|
||||||
|
throw an error when casefold() fails? How do we know that
|
||||||
|
an error is permanent or just a shortage of resources?
|
||||||
|
|
||||||
In release-notes add commands=x/y logging to the command
|
In release-notes add commands=x/y logging to the command
|
||||||
statistics.
|
statistics.
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20150118"
|
#define MAIL_RELEASE_DATE "20150120"
|
||||||
#define MAIL_VERSION_NUMBER "2.12"
|
#define MAIL_VERSION_NUMBER "2.12"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@@ -249,6 +249,12 @@ extern void dict_type_override(DICT *, const char *);
|
|||||||
/*
|
/*
|
||||||
* Check and convert UTF-8 keys and values.
|
* Check and convert UTF-8 keys and values.
|
||||||
*/
|
*/
|
||||||
|
typedef struct {
|
||||||
|
const char *(*lookup) (struct DICT *, const char *);
|
||||||
|
int (*update) (struct DICT *, const char *, const char *);
|
||||||
|
int (*delete) (struct DICT *, const char *);
|
||||||
|
} DICT_UTF8_BACKUP;
|
||||||
|
|
||||||
extern DICT *dict_utf8_activate(DICT *);
|
extern DICT *dict_utf8_activate(DICT *);
|
||||||
extern char *dict_utf8_check_fold(DICT *, const char *, CONST_CHAR_STAR *);
|
extern char *dict_utf8_check_fold(DICT *, const char *, CONST_CHAR_STAR *);
|
||||||
extern int dict_utf8_check(const char *, CONST_CHAR_STAR *);
|
extern int dict_utf8_check(const char *, CONST_CHAR_STAR *);
|
||||||
|
@@ -134,7 +134,9 @@ static void dict_default_close(DICT *dict)
|
|||||||
|
|
||||||
DICT *dict_alloc(const char *dict_type, const char *dict_name, ssize_t size)
|
DICT *dict_alloc(const char *dict_type, const char *dict_name, ssize_t size)
|
||||||
{
|
{
|
||||||
DICT *dict = (DICT *) mymalloc(size);
|
extern int util_utf8_enable;
|
||||||
|
DICT *dict = (DICT *) mymalloc(util_utf8_enable ?
|
||||||
|
size + sizeof(DICT_UTF8_BACKUP) : size);
|
||||||
|
|
||||||
dict->type = mystrdup(dict_type);
|
dict->type = mystrdup(dict_type);
|
||||||
dict->name = mystrdup(dict_name);
|
dict->name = mystrdup(dict_name);
|
||||||
|
@@ -70,15 +70,6 @@
|
|||||||
#include <mymalloc.h>
|
#include <mymalloc.h>
|
||||||
#include <msg.h>
|
#include <msg.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Backed-up accessor function pointers.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
const char *(*lookup) (struct DICT *, const char *);
|
|
||||||
int (*update) (struct DICT *, const char *, const char *);
|
|
||||||
int (*delete) (struct DICT *, const char *);
|
|
||||||
} DICT_UTF8_BACKUP;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The goal is to maximize robustness: bad UTF-8 should not appear in keys,
|
* The goal is to maximize robustness: bad UTF-8 should not appear in keys,
|
||||||
* because those are derived from controlled inputs, and values should be
|
* because those are derived from controlled inputs, and values should be
|
||||||
@@ -303,7 +294,6 @@ DICT *dict_utf8_activate(DICT *dict)
|
|||||||
* to arbitrary levels of encapsulation. That is, it does not co-exist
|
* to arbitrary levels of encapsulation. That is, it does not co-exist
|
||||||
* with dict_debug(3) which is broken for the reasons stated above.
|
* with dict_debug(3) which is broken for the reasons stated above.
|
||||||
*/
|
*/
|
||||||
dict = myrealloc(dict, dict->size + sizeof(*backup));
|
|
||||||
backup = (void *) dict + dict->size;
|
backup = (void *) dict + dict->size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user