port the libstrongswan memory allocation methods to pluto
This commit is contained in:
+13
-11
@@ -269,8 +269,10 @@ free_list(char **list)
|
||||
char **s;
|
||||
|
||||
for (s = list; *s; s++)
|
||||
pfree(*s);
|
||||
pfree(list);
|
||||
{
|
||||
free(*s);
|
||||
}
|
||||
free(list);
|
||||
}
|
||||
|
||||
char **
|
||||
@@ -279,7 +281,7 @@ new_list(char *value)
|
||||
char *val, *b, *e, *end, **ret;
|
||||
int count;
|
||||
|
||||
val = value ? clone_str(value, "list value") : NULL;
|
||||
val = value ? clone_str(value) : NULL;
|
||||
if (!val)
|
||||
return NULL;
|
||||
end = val + strlen(val);
|
||||
@@ -293,20 +295,20 @@ new_list(char *value)
|
||||
}
|
||||
if (count == 0)
|
||||
{
|
||||
pfree(val);
|
||||
free(val);
|
||||
return NULL;
|
||||
}
|
||||
ret = (char **)alloc_bytes((count+1) * sizeof(char *), "list");
|
||||
ret = (char **)malloc((count+1) * sizeof(char *));
|
||||
|
||||
for (b = val, count = 0; b < end; )
|
||||
{
|
||||
for (e = b; (*e != '\0'); e++);
|
||||
if (e != b)
|
||||
ret[count++] = clone_str(b, "list value");
|
||||
ret[count++] = clone_str(b);
|
||||
b = e + 1;
|
||||
}
|
||||
ret[count] = NULL;
|
||||
pfree(val);
|
||||
free(val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -455,10 +457,10 @@ assign_arg(kw_token_t token, kw_token_t first, kw_list_t *kw, char *base
|
||||
char **cp = (char **)p;
|
||||
|
||||
/* free any existing string */
|
||||
pfreeany(*cp);
|
||||
free(*cp);
|
||||
|
||||
/* assign the new string */
|
||||
*cp = clone_str(kw->value, "str_value");
|
||||
*cp = clone_str(kw->value);
|
||||
}
|
||||
break;
|
||||
case ARG_LST:
|
||||
@@ -521,7 +523,7 @@ free_args(kw_token_t first, kw_token_t last, char *base)
|
||||
{
|
||||
char **cp = (char **)p;
|
||||
|
||||
pfreeany(*cp);
|
||||
free(*cp);
|
||||
*cp = NULL;
|
||||
}
|
||||
break;
|
||||
@@ -557,7 +559,7 @@ clone_args(kw_token_t first, kw_token_t last, char *base1, char *base2)
|
||||
char **cp1 = (char **)(base1 + token_info[token].offset);
|
||||
char **cp2 = (char **)(base2 + token_info[token].offset);
|
||||
|
||||
*cp1 = clone_str(*cp2, "cloned str");
|
||||
*cp1 = clone_str(*cp2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+21
-21
@@ -75,8 +75,8 @@ static void default_values(starter_config_t *cfg)
|
||||
cfg->conn_default.policy = POLICY_ENCRYPT | POLICY_TUNNEL | POLICY_RSASIG |
|
||||
POLICY_PFS | POLICY_MOBIKE;
|
||||
|
||||
cfg->conn_default.ike = clone_str(ike_defaults, "ike_defaults");
|
||||
cfg->conn_default.esp = clone_str(esp_defaults, "esp_defaults");
|
||||
cfg->conn_default.ike = clone_str(ike_defaults);
|
||||
cfg->conn_default.esp = clone_str(esp_defaults);
|
||||
cfg->conn_default.sa_ike_life_seconds = OAKLEY_ISAKMP_SA_LIFETIME_DEFAULT;
|
||||
cfg->conn_default.sa_ipsec_life_seconds = PLUTO_SA_LIFE_DURATION_DEFAULT;
|
||||
cfg->conn_default.sa_rekey_margin = SA_REPLACEMENT_MARGIN_DEFAULT;
|
||||
@@ -193,7 +193,7 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
|
||||
if (streq(value, "%modeconfig") || streq(value, "%modecfg") ||
|
||||
streq(value, "%config") || streq(value, "%cfg"))
|
||||
{
|
||||
pfree(end->srcip);
|
||||
free(end->srcip);
|
||||
end->srcip = NULL;
|
||||
end->modecfg = TRUE;
|
||||
}
|
||||
@@ -336,7 +336,7 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
|
||||
plog("# bad subnet: %s=%s [%s]", name, value, ugh);
|
||||
goto err;
|
||||
}
|
||||
end->subnet = clone_str(value, "subnetwithin");
|
||||
end->subnet = clone_str(value);
|
||||
break;
|
||||
}
|
||||
case KW_PROTOPORT:
|
||||
@@ -356,7 +356,7 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
|
||||
if (cfg->defaultroute.defined)
|
||||
{
|
||||
addrtot(&cfg->defaultroute.addr, 0, buf, sizeof(buf));
|
||||
end->srcip = clone_str(buf, "natip");
|
||||
end->srcip = clone_str(buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -375,7 +375,7 @@ kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token
|
||||
plog("# bad addr: %s=%s [%s]", name, value, ugh);
|
||||
goto err;
|
||||
}
|
||||
end->srcip = clone_str(value, "srcip");
|
||||
end->srcip = clone_str(value);
|
||||
}
|
||||
end->has_natip = TRUE;
|
||||
conn->policy |= POLICY_TUNNEL;
|
||||
@@ -426,7 +426,7 @@ handle_firewall( const char *label, starter_end_t *end, starter_config_t *cfg)
|
||||
}
|
||||
else
|
||||
{
|
||||
end->updown = clone_str(firewall_defaults, "firewall_defaults");
|
||||
end->updown = clone_str(firewall_defaults);
|
||||
end->firewall = FALSE;
|
||||
}
|
||||
}
|
||||
@@ -467,9 +467,9 @@ load_conn(starter_conn_t *conn, kw_list_t *kw, starter_config_t *cfg)
|
||||
{
|
||||
if (cfg->parse_also)
|
||||
{
|
||||
also_t *also = alloc_thing(also_t, "also_t");
|
||||
also_t *also = malloc_thing(also_t);
|
||||
|
||||
also->name = clone_str(kw->value, "also");
|
||||
also->name = clone_str(kw->value);
|
||||
also->next = conn->also;
|
||||
conn->also = also;
|
||||
|
||||
@@ -698,7 +698,7 @@ static void
|
||||
conn_default(char *name, starter_conn_t *conn, starter_conn_t *def)
|
||||
{
|
||||
memcpy(conn, def, sizeof(starter_conn_t));
|
||||
conn->name = clone_str(name, "conn name");
|
||||
conn->name = clone_str(name);
|
||||
|
||||
clone_args(KW_CONN_FIRST, KW_CONN_LAST, (char *)conn, (char *)def);
|
||||
clone_args(KW_END_FIRST, KW_END_LAST, (char *)&conn->left, (char *)&def->left);
|
||||
@@ -727,9 +727,9 @@ load_ca(starter_ca_t *ca, kw_list_t *kw, starter_config_t *cfg)
|
||||
{
|
||||
if (cfg->parse_also)
|
||||
{
|
||||
also_t *also = alloc_thing(also_t, "also_t");
|
||||
also_t *also = malloc_thing(also_t);
|
||||
|
||||
also->name = clone_str(kw->value, "also");
|
||||
also->name = clone_str(kw->value);
|
||||
also->next = ca->also;
|
||||
ca->also = also;
|
||||
|
||||
@@ -766,7 +766,7 @@ static void
|
||||
ca_default(char *name, starter_ca_t *ca, starter_ca_t *def)
|
||||
{
|
||||
memcpy(ca, def, sizeof(starter_ca_t));
|
||||
ca->name = clone_str(name, "ca name");
|
||||
ca->name = clone_str(name);
|
||||
|
||||
clone_args(KW_CA_FIRST, KW_CA_LAST, (char *)ca, (char *)def);
|
||||
}
|
||||
@@ -896,8 +896,8 @@ free_also(also_t *head)
|
||||
also_t *also = head;
|
||||
|
||||
head = also->next;
|
||||
pfree(also->name);
|
||||
pfree(also);
|
||||
free(also->name);
|
||||
free(also);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -942,7 +942,7 @@ confread_free(starter_config_t *cfg)
|
||||
|
||||
conn = conn->next;
|
||||
confread_free_conn(conn_aux);
|
||||
pfree(conn_aux);
|
||||
free(conn_aux);
|
||||
}
|
||||
|
||||
confread_free_ca(&cfg->ca_default);
|
||||
@@ -953,10 +953,10 @@ confread_free(starter_config_t *cfg)
|
||||
|
||||
ca = ca->next;
|
||||
confread_free_ca(ca_aux);
|
||||
pfree(ca_aux);
|
||||
free(ca_aux);
|
||||
}
|
||||
|
||||
pfree(cfg);
|
||||
free(cfg);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -980,7 +980,7 @@ confread_load(const char *file)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
cfg = (starter_config_t *)alloc_thing(starter_config_t, "starter_config_t");
|
||||
cfg = malloc_thing(starter_config_t);
|
||||
|
||||
/* set default values */
|
||||
default_values(cfg);
|
||||
@@ -1021,7 +1021,7 @@ confread_load(const char *file)
|
||||
DBG(DBG_CONTROL,
|
||||
DBG_log("Loading ca '%s'", sca->name)
|
||||
)
|
||||
ca = (starter_ca_t *)alloc_thing(starter_ca_t, "starter_ca_t");
|
||||
ca = malloc_thing(starter_ca_t);
|
||||
|
||||
ca_default(sca->name, ca, &cfg->ca_default);
|
||||
ca->kw = sca->kw;
|
||||
@@ -1092,7 +1092,7 @@ confread_load(const char *file)
|
||||
DBG(DBG_CONTROL,
|
||||
DBG_log("Loading conn '%s'", sconn->name)
|
||||
)
|
||||
conn = (starter_conn_t *)alloc_thing(starter_conn_t, "starter_conn_t");
|
||||
conn = malloc_thing(starter_conn_t);
|
||||
|
||||
conn_default(sconn->name, conn, &cfg->conn_default);
|
||||
conn->kw = sconn->kw;
|
||||
|
||||
+14
-19
@@ -80,10 +80,9 @@ section_or_include:
|
||||
} kw_section
|
||||
| CONN STRING EOL
|
||||
{
|
||||
section_list_t *section = (section_list_t *)alloc_thing(section_list_t
|
||||
, "section_list_t");
|
||||
section_list_t *section = malloc_thing(section_list_t);
|
||||
|
||||
section->name = clone_str($2, "conn section name");
|
||||
section->name = clone_str($2);
|
||||
section->kw = NULL;
|
||||
section->next = NULL;
|
||||
_parser_kw = &(section->kw);
|
||||
@@ -97,9 +96,8 @@ section_or_include:
|
||||
} kw_section
|
||||
| CA STRING EOL
|
||||
{
|
||||
section_list_t *section = (section_list_t *)alloc_thing(section_list_t
|
||||
, "section_list_t");
|
||||
section->name = clone_str($2, "ca section name");
|
||||
section_list_t *section = malloc_thing(section_list_t);
|
||||
section->name = clone_str($2);
|
||||
section->kw = NULL;
|
||||
section->next = NULL;
|
||||
_parser_kw = &(section->kw);
|
||||
@@ -138,9 +136,9 @@ statement_kw:
|
||||
}
|
||||
else if (_parser_kw)
|
||||
{
|
||||
new = (kw_list_t *)alloc_thing(kw_list_t, "kw_list_t");
|
||||
new = (kw_list_t *)malloc_thing(kw_list_t);
|
||||
new->entry = entry;
|
||||
new->value = clone_str($3, "kw_list value");
|
||||
new->value = clone_str($3);
|
||||
new->next = NULL;
|
||||
if (_parser_kw_last)
|
||||
_parser_kw_last->next = new;
|
||||
@@ -179,7 +177,7 @@ parser_load_conf(const char *file)
|
||||
|
||||
memset(parser_errstring, 0, ERRSTRING_LEN+1);
|
||||
|
||||
cfg = (config_parsed_t *)alloc_thing(config_parsed_t, "config_parsed_t");
|
||||
cfg = (config_parsed_t *)malloc_thing(config_parsed_t);
|
||||
if (cfg)
|
||||
{
|
||||
memset(cfg, 0, sizeof(config_parsed_t));
|
||||
@@ -247,9 +245,8 @@ parser_free_kwlist(kw_list_t *list)
|
||||
{
|
||||
elt = list;
|
||||
list = list->next;
|
||||
if (elt->value)
|
||||
pfree(elt->value);
|
||||
pfree(elt);
|
||||
free(elt->value);
|
||||
free(elt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,20 +261,18 @@ parser_free_conf(config_parsed_t *cfg)
|
||||
{
|
||||
sec = cfg->conn_first;
|
||||
cfg->conn_first = cfg->conn_first->next;
|
||||
if (sec->name)
|
||||
pfree(sec->name);
|
||||
free(sec->name);
|
||||
parser_free_kwlist(sec->kw);
|
||||
pfree(sec);
|
||||
free(sec);
|
||||
}
|
||||
while (cfg->ca_first)
|
||||
{
|
||||
sec = cfg->ca_first;
|
||||
cfg->ca_first = cfg->ca_first->next;
|
||||
if (sec->name)
|
||||
pfree(sec->name);
|
||||
free(sec->name);
|
||||
parser_free_kwlist(sec->kw);
|
||||
pfree(sec);
|
||||
free(sec);
|
||||
}
|
||||
pfree(cfg);
|
||||
free(cfg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user