release dynamic memory allocated for VIDs
This commit is contained in:
@@ -736,6 +736,7 @@ void exit_pluto(int status)
|
|||||||
free_crypto();
|
free_crypto();
|
||||||
free_id(); /* free myids */
|
free_id(); /* free myids */
|
||||||
free_events(); /* free remaining events */
|
free_events(); /* free remaining events */
|
||||||
|
free_vendorid(); /* free all vendor id records */
|
||||||
delete_lock();
|
delete_lock();
|
||||||
library_deinit();
|
library_deinit();
|
||||||
close_log();
|
close_log();
|
||||||
|
|||||||
+18
-9
@@ -323,8 +323,7 @@ static const char _hexdig[] = "0123456789abcdef";
|
|||||||
|
|
||||||
static int _vid_struct_init = 0;
|
static int _vid_struct_init = 0;
|
||||||
|
|
||||||
void
|
void init_vendorid(void)
|
||||||
init_vendorid(void)
|
|
||||||
{
|
{
|
||||||
struct vid_struct *vid;
|
struct vid_struct *vid;
|
||||||
MD5_CTX ctx;
|
MD5_CTX ctx;
|
||||||
@@ -392,9 +391,21 @@ init_vendorid(void)
|
|||||||
_vid_struct_init = 1;
|
_vid_struct_init = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void free_vendorid(void)
|
||||||
handle_known_vendorid (struct msg_digest *md
|
{
|
||||||
, const char *vidstr, size_t len, struct vid_struct *vid)
|
struct vid_struct *vid;
|
||||||
|
|
||||||
|
for (vid = _vid_tab; vid->id; vid++)
|
||||||
|
{
|
||||||
|
if (vid->flags & (VID_STRING | VID_MD5HASH | VID_FSWAN_HASH))
|
||||||
|
{
|
||||||
|
free(vid->vid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handle_known_vendorid (struct msg_digest *md, const char *vidstr,
|
||||||
|
size_t len, struct vid_struct *vid)
|
||||||
{
|
{
|
||||||
char vid_dump[128];
|
char vid_dump[128];
|
||||||
bool vid_useful = FALSE;
|
bool vid_useful = FALSE;
|
||||||
@@ -481,8 +492,7 @@ handle_known_vendorid (struct msg_digest *md
|
|||||||
vid_useful ? "received" : "ignoring", vid_dump);
|
vid_useful ? "received" : "ignoring", vid_dump);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void handle_vendorid (struct msg_digest *md, const char *vid, size_t len)
|
||||||
handle_vendorid (struct msg_digest *md, const char *vid, size_t len)
|
|
||||||
{
|
{
|
||||||
struct vid_struct *pvid;
|
struct vid_struct *pvid;
|
||||||
|
|
||||||
@@ -537,8 +547,7 @@ handle_vendorid (struct msg_digest *md, const char *vid, size_t len)
|
|||||||
/**
|
/**
|
||||||
* Add a vendor id payload to the msg
|
* Add a vendor id payload to the msg
|
||||||
*/
|
*/
|
||||||
bool
|
bool out_vendorid (u_int8_t np, pb_stream *outs, enum known_vendorid vid)
|
||||||
out_vendorid (u_int8_t np, pb_stream *outs, enum known_vendorid vid)
|
|
||||||
{
|
{
|
||||||
struct vid_struct *pvid;
|
struct vid_struct *pvid;
|
||||||
|
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ enum known_vendorid {
|
|||||||
};
|
};
|
||||||
|
|
||||||
void init_vendorid(void);
|
void init_vendorid(void);
|
||||||
|
void free_vendorid(void);
|
||||||
|
|
||||||
struct msg_digest;
|
struct msg_digest;
|
||||||
void handle_vendorid (struct msg_digest *md, const char *vid, size_t len);
|
void handle_vendorid (struct msg_digest *md, const char *vid, size_t len);
|
||||||
|
|||||||
Reference in New Issue
Block a user