diff options
Diffstat (limited to 'src/logicalfile/LMI_SymbolicLinkProvider.c')
-rw-r--r-- | src/logicalfile/LMI_SymbolicLinkProvider.c | 8 |
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); } |