aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/stroke
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-06-25 17:17:40 +0200
committerTobias Brunner <tobias@strongswan.org>2013-06-25 17:17:40 +0200
commit9da5a2ed1e72d1b68feefd5811a089d0881dd87d (patch)
tree2eeb8375e6ffb24321e1d7e3a4ba06183bf9eaec /src/libcharon/plugins/stroke
parenta65024264379bacc2733282f2b59b8c14e3897c0 (diff)
parentac2ffde4ae8ceaddeab8b6f740804536033153e6 (diff)
downloadstrongswan-9da5a2ed1e72d1b68feefd5811a089d0881dd87d.tar.bz2
strongswan-9da5a2ed1e72d1b68feefd5811a089d0881dd87d.tar.xz
Merge branch 'check-caps'
Plugins may now ensure the process has all the required capabilities. Some minor changes to UID/GID handling are also included.
Diffstat (limited to 'src/libcharon/plugins/stroke')
-rw-r--r--src/libcharon/plugins/stroke/stroke_plugin.c6
-rw-r--r--src/libcharon/plugins/stroke/stroke_socket.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/libcharon/plugins/stroke/stroke_plugin.c b/src/libcharon/plugins/stroke/stroke_plugin.c
index 4e47a120d..6c4687f4a 100644
--- a/src/libcharon/plugins/stroke/stroke_plugin.c
+++ b/src/libcharon/plugins/stroke/stroke_plugin.c
@@ -91,6 +91,12 @@ plugin_t *stroke_plugin_create()
{
private_stroke_plugin_t *this;
+ if (!lib->caps->keep(lib->caps, CAP_CHOWN))
+ { /* required to chown(2) stroke socket */
+ DBG1(DBG_CFG, "stroke plugin requires CAP_CHOWN capability");
+ return NULL;
+ }
+
INIT(this,
.public = {
.plugin = {
diff --git a/src/libcharon/plugins/stroke/stroke_socket.c b/src/libcharon/plugins/stroke/stroke_socket.c
index d152ecd70..931dba1f4 100644
--- a/src/libcharon/plugins/stroke/stroke_socket.c
+++ b/src/libcharon/plugins/stroke/stroke_socket.c
@@ -847,8 +847,8 @@ static bool open_socket(private_stroke_socket_t *this)
return FALSE;
}
umask(old);
- if (chown(socket_addr.sun_path, charon->caps->get_uid(charon->caps),
- charon->caps->get_gid(charon->caps)) != 0)
+ if (chown(socket_addr.sun_path, lib->caps->get_uid(lib->caps),
+ lib->caps->get_gid(lib->caps)) != 0)
{
DBG1(DBG_CFG, "changing stroke socket permissions failed: %s",
strerror(errno));