summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Synacek <jsynacek@redhat.com>2014-04-25 09:05:47 +0200
committerJan Synacek <jsynacek@redhat.com>2014-04-28 08:52:12 +0200
commitf97b815a2f8ab34e61a38af416d9f876f61b42bd (patch)
treede1683504e00ed1cfd1034c9ccce0ff138dbdba9 /src
parent97932ae912ed2018a283451d2ae4e3002f9ce4ec (diff)
downloadopenlmi-providers-f97b815a2f8ab34e61a38af416d9f876f61b42bd.tar.gz
openlmi-providers-f97b815a2f8ab34e61a38af416d9f876f61b42bd.tar.xz
openlmi-providers-f97b815a2f8ab34e61a38af416d9f876f61b42bd.zip
logicalfile: respect configuration when creating symlinks
Diffstat (limited to 'src')
-rw-r--r--src/logicalfile/LMI_SymbolicLinkProvider.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/logicalfile/LMI_SymbolicLinkProvider.c b/src/logicalfile/LMI_SymbolicLinkProvider.c
index 8060307..e200316 100644
--- a/src/logicalfile/LMI_SymbolicLinkProvider.c
+++ b/src/logicalfile/LMI_SymbolicLinkProvider.c
@@ -92,7 +92,9 @@ static CMPIStatus LMI_SymbolicLinkCreateInstance(
const char *path = get_string_property_from_instance(ci, "Name");
const char *target = get_string_property_from_instance(ci, "TargetFile");
- if (symlink(target, path) < 0) {
+ bool allow = lmi_read_config_boolean("LMI_SymbolicLink", "AllowSymlink");
+
+ if (allow && symlink(target, path) < 0) {
char errmsg[BUFLEN];
char strerr[BUFLEN];
snprintf(errmsg, BUFLEN, "Can't create symlink: %s pointing to %s (%s)",
@@ -100,6 +102,10 @@ static CMPIStatus LMI_SymbolicLinkCreateInstance(
strerror_r(errno, strerr, BUFLEN));
CMReturnWithChars(_cb, CMPI_RC_ERR_FAILED, errmsg);
}
+ if (allow == false) {
+ CMReturnWithChars(_cb, CMPI_RC_ERR_FAILED,
+ "Can't create symlink: disabled by provider configuration");
+ }
return CMReturnObjectPath(cr, iop);
}