mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
fileio: introduce warn_file_is_world_accessible()
This commit is contained in:
parent
15f8f026cf
commit
7a309a8c63
@ -843,3 +843,28 @@ int safe_fgetc(FILE *f, char *ret) {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line) {
|
||||
struct stat _st;
|
||||
|
||||
if (!filename)
|
||||
return 0;
|
||||
|
||||
if (!st) {
|
||||
if (stat(filename, &_st) < 0)
|
||||
return -errno;
|
||||
st = &_st;
|
||||
}
|
||||
|
||||
if ((st->st_mode & S_IRWXO) == 0)
|
||||
return 0;
|
||||
|
||||
if (unit)
|
||||
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||
"%s has %04o mode that is too permissive, please adjust the access mode.",
|
||||
filename, st->st_mode & 07777);
|
||||
else
|
||||
log_warning("%s has %04o mode that is too permissive, please adjust the access mode.",
|
||||
filename, st->st_mode & 07777);
|
||||
return 0;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "macro.h"
|
||||
@ -86,3 +87,5 @@ static inline int read_nul_string(FILE *f, size_t limit, char **ret) {
|
||||
}
|
||||
|
||||
int safe_fgetc(FILE *f, char *ret);
|
||||
|
||||
int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line);
|
||||
|
Loading…
Reference in New Issue
Block a user