release dynamic memory allocated for VIDs

This commit is contained in:
Andreas Steffen
2009-04-24 15:01:32 +00:00
parent adc25ec252
commit 6fd5b52f4c
3 changed files with 20 additions and 9 deletions
+1
View File
@@ -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
View File
@@ -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;
+1
View File
@@ -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);