libselinux: support specifying file_contexts.bin file path
At present, the label_file backend expects to be provided the path to the text file_contexts file and always appends the .bin suffix when checking for the binary file_contexts.bin file. If one attempts to directly specify the path to a file_contexts.bin file to selabel_open(), it will fail as the code will append a second .bin suffix to it. Check to see if the file path already has a .bin suffix and do not append it in that case. Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
This commit is contained in:
parent
0454b7ac2c
commit
09ea624d12
1 changed files with 10 additions and 3 deletions
|
@ -111,9 +111,16 @@ static int load_mmap(struct selabel_handle *rec, const char *path,
|
|||
uint32_t i, magic, version;
|
||||
uint32_t entry_len, stem_map_len, regex_array_len;
|
||||
|
||||
rc = snprintf(mmap_path, sizeof(mmap_path), "%s.bin", path);
|
||||
if (rc >= (int)sizeof(mmap_path))
|
||||
return -1;
|
||||
len = strlen(path);
|
||||
if (len > 4 && !strcmp(&path[len-4], ".bin")) {
|
||||
if (len >= sizeof(mmap_path))
|
||||
return -1;
|
||||
strcpy(mmap_path, path);
|
||||
} else {
|
||||
rc = snprintf(mmap_path, sizeof(mmap_path), "%s.bin", path);
|
||||
if (rc >= (int)sizeof(mmap_path))
|
||||
return -1;
|
||||
}
|
||||
|
||||
mmapfd = open(mmap_path, O_RDONLY | O_CLOEXEC);
|
||||
if (mmapfd < 0)
|
||||
|
|
Loading…
Reference in a new issue