summaryrefslogtreecommitdiffstats
path: root/src/logicalfile/LMI_SymbolicLinkProvider.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logicalfile/LMI_SymbolicLinkProvider.c')
-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);
}