#include <dpl/errno_string.h>
#include "security-manager.h"
+#include "service_impl_utils.h"
#include "smack-labels.h"
#include "utils.h"
const int authorId)
{
std::string label;
- bool label_executables, label_transmute;
+ bool label_executables, label_transmute, follow_symlink = false;
switch (pathType) {
case SECURITY_MANAGER_PATH_RW:
label = generatePathSharedROLabel();
label_executables = false;
label_transmute = true;
+ follow_symlink = true;
break;
case SECURITY_MANAGER_PATH_TRUSTED_RW:
if (authorId < 0)
LogError("Path type not known.");
Throw(SmackException::InvalidPathType);
}
+ if (follow_symlink) {
+ labelDir(realPath(path), label, label_transmute, label_executables);
+ }
return labelDir(path, label, label_transmute, label_executables);
}
${PROJECT_SOURCE_DIR}/src/common/db-config.cpp
${PROJECT_SOURCE_DIR}/src/common/file-lock.cpp
${PROJECT_SOURCE_DIR}/src/common/privilege_db.cpp
+ ${PROJECT_SOURCE_DIR}/src/common/service_impl_utils.cpp
${PROJECT_SOURCE_DIR}/src/common/smack-check.cpp
${PROJECT_SOURCE_DIR}/src/common/smack-labels.cpp
${PROJECT_SOURCE_DIR}/src/common/smack-rules.cpp