diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-05-02 15:55:46 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-05-02 15:55:46 +0200 |
commit | 61e48488d9c07c87cf78930a8bc1ed5cb8eb5f86 (patch) | |
tree | 4ab26c9b14ca1169c3e490f7e89f8fffa48e7bae /src | |
parent | a48484322eaab334be4b3c914396093f984892aa (diff) | |
download | strongswan-61e48488d9c07c87cf78930a8bc1ed5cb8eb5f86.tar.bz2 strongswan-61e48488d9c07c87cf78930a8bc1ed5cb8eb5f86.tar.xz |
final fix for cloning and deleting sourceip strings
Diffstat (limited to 'src')
-rw-r--r-- | src/starter/args.c | 2 | ||||
-rw-r--r-- | src/starter/confread.c | 6 |
2 files changed, 3 insertions, 5 deletions
diff --git a/src/starter/args.c b/src/starter/args.c index c2614cd14..512f2f46f 100644 --- a/src/starter/args.c +++ b/src/starter/args.c @@ -253,7 +253,7 @@ static const token_info_t token_info[] = { ARG_STR, offsetof(starter_end_t, subnet), NULL }, { ARG_MISC, 0, NULL /* KW_SUBNETWITHIN */ }, { ARG_MISC, 0, NULL /* KW_PROTOPORT */ }, - { ARG_MISC, 0, NULL /* KW_SOURCEIP */ }, + { ARG_STR, offsetof(starter_end_t, sourceip), NULL }, { ARG_MISC, 0, NULL /* KW_NATIP */ }, { ARG_ENUM, offsetof(starter_end_t, firewall), LST_bool }, { ARG_ENUM, offsetof(starter_end_t, hostaccess), LST_bool }, diff --git a/src/starter/confread.c b/src/starter/confread.c index c581376be..759aa059a 100644 --- a/src/starter/confread.c +++ b/src/starter/confread.c @@ -194,11 +194,13 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token, streq(value, "%config") || streq(value, "%cfg")) { /* request ip via config payload */ + free(end->sourceip); end->sourceip = NULL; end->sourceip_mask = 1; } else { /* %poolname, strip %, serve ip requests */ + free(end->sourceip); end->sourceip = clone_str(value+1); end->sourceip_mask = 0; } @@ -222,7 +224,6 @@ static void kw_end(starter_conn_t *conn, starter_end_t *end, kw_token_t token, goto err; } *pos = '\0'; - end->sourceip = clone_str(value); end->sourceip_mask = atoi(pos + 1); } else @@ -233,7 +234,6 @@ static void 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->sourceip = clone_str(value); end->sourceip_mask = (conn->tunnel_addr_family == AF_INET) ? 32 : 128; } @@ -925,8 +925,6 @@ static void free_also(also_t *head) */ static void confread_free_conn(starter_conn_t *conn) { - free(conn->left.sourceip); - free(conn->right.sourceip); free_args(KW_END_FIRST, KW_END_LAST, (char *)&conn->left); free_args(KW_END_FIRST, KW_END_LAST, (char *)&conn->right); free_args(KW_CONN_NAME, KW_CONN_LAST, (char *)conn); |