aboutsummaryrefslogtreecommitdiffstats
path: root/src/libhydra/plugins/resolve/resolve_handler.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-09-28 17:33:24 +0200
committerTobias Brunner <tobias@strongswan.org>2012-09-28 17:33:24 +0200
commit53ab3c27cdc03f03906dd0170c12c9039ef66fc3 (patch)
treeb8a095f47e3c27408a57a782add2f2c63aefb20c /src/libhydra/plugins/resolve/resolve_handler.c
parenta067dfbb2c1162d2c6b0c99ff9e3ad0101a6acc4 (diff)
downloadstrongswan-53ab3c27cdc03f03906dd0170c12c9039ef66fc3.tar.bz2
strongswan-53ab3c27cdc03f03906dd0170c12c9039ef66fc3.tar.xz
Ensure that pipe is closed when calling resolvconf(8)
Diffstat (limited to 'src/libhydra/plugins/resolve/resolve_handler.c')
-rw-r--r--src/libhydra/plugins/resolve/resolve_handler.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libhydra/plugins/resolve/resolve_handler.c b/src/libhydra/plugins/resolve/resolve_handler.c
index 2bee45d0d..0a3094fd7 100644
--- a/src/libhydra/plugins/resolve/resolve_handler.c
+++ b/src/libhydra/plugins/resolve/resolve_handler.c
@@ -150,6 +150,7 @@ static bool invoke_resolvconf(private_resolve_handler_t *this,
bool install)
{
char cmd[128];
+ bool success = TRUE;
/* we use the nameserver's IP address as part of the interface name to
* make them unique */
@@ -171,7 +172,8 @@ static bool invoke_resolvconf(private_resolve_handler_t *this,
DBG1(DBG_IKE, "installing DNS server %H via resolvconf", addr);
fprintf(out, "nameserver %H # by strongSwan, from %Y\n", addr,
server);
- if (ferror(out) || pclose(out))
+ success = !ferror(out);
+ if (pclose(out))
{
return FALSE;
}
@@ -180,7 +182,7 @@ static bool invoke_resolvconf(private_resolve_handler_t *this,
{
ignore_result(system(cmd));
}
- return TRUE;
+ return success;
}
METHOD(attribute_handler_t, handle, bool,