Denis Fondras <open...@ledeuns.net> writes:

>> By the OS, which cleans up after the process exits.  If it wasn't that
>> way, we'd all have a much shorter uptime...
>> 
>
> Thank you Jérémie :)
> I had not considered it as I can see
>
> ...
> free(ibuf_rde);
> ...
> free(ibuf_main);
> ...
>
> at the end of session_main() in session.c.

Maybe you should consider this as "best effort".  It's a good thing to
clean up at the end of a function in an executable, even in error cases
where the end result is exit(1) / err() / fatal(), because code gets
copied and used in different contexts (where cleaning up could be
necessary).

But from discussions on tech@ a few months ago, you'll see that there is
no real interest in amending those non-problems if no true audit is
done to track down all occurrences in a particular piece of software.

That said, thid diff works fine on a simple test setup.

Index: session.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/session.c,v
retrieving revision 1.334
diff -u -p -p -u -r1.334 session.c
--- session.c   22 Jan 2014 04:08:08 -0000      1.334
+++ session.c   6 May 2014 13:21:26 -0000
@@ -599,6 +599,7 @@ session_main(int pipe_m2s[2], int pipe_s
                free(la);
        }
        free(conf->listen_addrs);
+       free(conf);
        free(peer_l);
        free(mrt_l);
        free(pfd);

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to