From ae32172619a61a1c62b4b7638979bdbf81464e30 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Thu, 5 Sep 2013 12:25:02 +0200 Subject: [PATCH] Make SWID directory where tags are stored configurable --- man/strongswan.conf.5.in | 3 +++ src/libpts/plugins/imc_swid/Makefile.am | 3 ++- src/libpts/plugins/imc_swid/imc_swid.c | 6 +++++- src/libpts/swid/swid_inventory.c | 6 ++---- src/libpts/swid/swid_inventory.h | 3 ++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/man/strongswan.conf.5.in b/man/strongswan.conf.5.in index ebd5ed9a7..3ccc43867 100644 --- a/man/strongswan.conf.5.in +++ b/man/strongswan.conf.5.in @@ -970,6 +970,9 @@ Send open listening ports without being prompted .BR libimcv.plugins.imv-scanner.remediation_uri URI pointing to scanner remediation instructions .TP +.BR libimcv.plugins.imc-swid.swid_directory "[$(prefix)/share]" +Directory where SWID tags are located +.TP .BR libimcv.plugins.imc-test.additional_ids " [0]" Number of additional IMC IDs .TP diff --git a/src/libpts/plugins/imc_swid/Makefile.am b/src/libpts/plugins/imc_swid/Makefile.am index be8d5f45e..14a429363 100644 --- a/src/libpts/plugins/imc_swid/Makefile.am +++ b/src/libpts/plugins/imc_swid/Makefile.am @@ -21,7 +21,8 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan \ -I$(top_srcdir)/src/libtncif \ -I$(top_srcdir)/src/libimcv \ - -I$(top_srcdir)/src/libpts + -I$(top_srcdir)/src/libpts \ + -DSWID_DIRECTORY=\"${prefix}/share\" AM_CFLAGS = \ -rdynamic diff --git a/src/libpts/plugins/imc_swid/imc_swid.c b/src/libpts/plugins/imc_swid/imc_swid.c index ed6dd8b40..8e7c49b8d 100644 --- a/src/libpts/plugins/imc_swid/imc_swid.c +++ b/src/libpts/plugins/imc_swid/imc_swid.c @@ -155,6 +155,7 @@ static TNC_Result receive_message(imc_state_t *state, imc_msg_t *in_msg) u_int8_t flags; u_int32_t request_id, eid_epoch; swid_inventory_t *swid_inventory; + char *swid_directory; bool full_tags; type = attr->get_type(attr); @@ -178,8 +179,11 @@ static TNC_Result receive_message(imc_state_t *state, imc_msg_t *in_msg) } full_tags = (flags & TCG_SWID_ATTR_REQ_FLAG_R) == 0; + swid_directory = lib->settings->get_str(lib->settings, + "libimcv.plugins.imc-swid.swid_directory", + SWID_DIRECTORY); swid_inventory = swid_inventory_create(full_tags); - if (!swid_inventory->collect(swid_inventory)) + if (!swid_inventory->collect(swid_inventory, swid_directory)) { swid_inventory->destroy(swid_inventory); attr = swid_error_create(TCG_SWID_ERROR, request_id, diff --git a/src/libpts/swid/swid_inventory.c b/src/libpts/swid/swid_inventory.c index 9a33018af..9d5c30911 100644 --- a/src/libpts/swid/swid_inventory.c +++ b/src/libpts/swid/swid_inventory.c @@ -30,8 +30,6 @@ typedef struct private_swid_inventory_t private_swid_inventory_t; -#define SWID_TAG_DIRECTORY "/usr/share" - /** * Private data of a swid_inventory_t object. * @@ -179,9 +177,9 @@ end: } METHOD(swid_inventory_t, collect, bool, - private_swid_inventory_t *this) + private_swid_inventory_t *this, char *directory) { - return collect_tags(this, SWID_TAG_DIRECTORY); + return collect_tags(this, directory); } METHOD(swid_inventory_t, add, void, diff --git a/src/libpts/swid/swid_inventory.h b/src/libpts/swid/swid_inventory.h index 444ed5766..ae3a0c294 100644 --- a/src/libpts/swid/swid_inventory.h +++ b/src/libpts/swid/swid_inventory.h @@ -33,9 +33,10 @@ struct swid_inventory_t { /** * Collect the SWID tags stored on the endpoint * + * @param directory SWID directory path * @return TRUE if successful */ - bool (*collect)(swid_inventory_t *this); + bool (*collect)(swid_inventory_t *this, char *directory); /** * Collect the SWID tags stored on the endpoint