On Sun, Dec 02, 2018 at 02:48:47PM -0500, Jaroslav Skarvada wrote:

> src/posttls-finger/posttls-finger.c:1412:
> # 1410|       if (state->smtp == 0) {
> # 1411|       if (strncmp(dest, "unix:", 5) == 0) {
> # 1412|->         connect_unix(state, dest + 5);
> # 1413|           if (!state->stream)
> # 1414|               msg_info("Failed to establish session to %s: %s",

That's not so much a memory leak as a bug in the little used support
for unix-domain sockets.  Connections to unix-domain sockets will always
appear to fail.  The correct code is:

--- src/posttls-finger/posttls-finger.c
+++ src/posttls-finger/posttls-finger.c
@@ -1547,7 +1547,7 @@ static int connect_dest(STATE *state)
      */
     if (state->smtp == 0) {
        if (strncmp(dest, "unix:", 5) == 0) {
-           connect_unix(state, dest + 5);
+           state->stream = connect_unix(state, dest + 5);
            if (!state->stream)
                msg_info("Failed to establish session to %s: %s",
                         dest, vstring_str(state->why->reason));

> src/util/dict_random.c:112: leaked_storage: Variable "argv" ...
> #  110|       || ((argv = argv_splitq(saved_name, CHARS_COMMA_SP, 
> CHARS_BRACE)),
> #  111|           (argv->argc == 0)))
> #  112|->     DICT_RANDOM_RETURN(dict_surrogate(DICT_TYPE_RANDOM, name,
> #  113|                                         open_flags, dict_flags,
> #  114|                                         "bad syntax: \"%s:%s\"; "

This code was refactored in postfix-3.4-20181105, and the "leak"
is gone.  In earlier versions this "leak" only happens during process
initialization (i.e. just once per process, so not important) and
only for a malformed "random" table definition with no values.

I don't think this warrants any changes for the earlier releases.
 
-- 
        Viktor.

Reply via email to