mirror of
https://github.com/netblue30/firejail.git
synced 2026-05-15 14:16:14 -06:00
merges; more on cleaning up esc chars
This commit is contained in:
parent
31d0c32be5
commit
b4ffaa2074
5 changed files with 31 additions and 18 deletions
1
README
1
README
|
|
@ -685,6 +685,7 @@ LaurentGH (https://github.com/LaurentGH)
|
|||
- allow private-bin parameters to be absolute paths
|
||||
layderv (https://github.com/layderv)
|
||||
- prevent sandbox name from containing only digits
|
||||
- clean escape control characters from the command line
|
||||
lecso7 (https://github.com/lecso7)
|
||||
- added goldendict profile
|
||||
- allow evince to read .cbz file format
|
||||
|
|
|
|||
|
|
@ -525,6 +525,7 @@ int macro_id(const char *name);
|
|||
|
||||
|
||||
// util.c
|
||||
int invalid_name(const char *name);
|
||||
void errLogExit(char* fmt, ...) __attribute__((noreturn));
|
||||
void fwarning(char* fmt, ...);
|
||||
void fmessage(char* fmt, ...);
|
||||
|
|
|
|||
|
|
@ -2182,16 +2182,8 @@ int main(int argc, char **argv, char **envp) {
|
|||
fprintf(stderr, "Error: please provide a name for sandbox\n");
|
||||
return 1;
|
||||
}
|
||||
const char *c = cfg.name;
|
||||
while (*c) {
|
||||
if (!isdigit(*c)) {
|
||||
only_numbers = 0;
|
||||
break;
|
||||
}
|
||||
++c;
|
||||
}
|
||||
if (only_numbers) {
|
||||
fprintf(stderr, "Error: invalid sandbox name: it only contains digits\n");
|
||||
if (invalid_name(cfg.name)) {
|
||||
fprintf(stderr, "Error: invalid sandbox name\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -2201,6 +2193,10 @@ int main(int argc, char **argv, char **envp) {
|
|||
fprintf(stderr, "Error: please provide a hostname for sandbox\n");
|
||||
return 1;
|
||||
}
|
||||
if (invalid_name(cfg.hostname)) {
|
||||
fprintf(stderr, "Error: invalid hostname\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i], "--nogroups") == 0)
|
||||
arg_nogroups = 1;
|
||||
|
|
|
|||
|
|
@ -1448,6 +1448,29 @@ static int has_link(const char *dir) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// allow strict ASCII letters and numbers; names with only numbers are rejected; spaces are rejected
|
||||
int invalid_name(const char *name) {
|
||||
const char *c = name;
|
||||
|
||||
int only_numbers = 1;
|
||||
while (*c) {
|
||||
if (!isalnum(*c))
|
||||
return 1;
|
||||
if (!isdigit(*c))
|
||||
only_numbers = 0;
|
||||
++c;
|
||||
}
|
||||
if (only_numbers)
|
||||
return 1;
|
||||
|
||||
// restrict name to 64 chars max
|
||||
if (strlen(name) > 64)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void check_homedir(const char *dir) {
|
||||
assert(dir);
|
||||
if (dir[0] != '/') {
|
||||
|
|
|
|||
|
|
@ -230,14 +230,6 @@ static void print_elem(unsigned index, int nowrap) {
|
|||
}
|
||||
free(fname);
|
||||
|
||||
char *sandbox_name_escaped = escape_cntrl_chars(sandbox_name);
|
||||
if (sandbox_name_escaped) {
|
||||
if (sandbox_name_allocated)
|
||||
free(sandbox_name_allocated);
|
||||
sandbox_name = sandbox_name_escaped;
|
||||
sandbox_name_allocated = sandbox_name;
|
||||
}
|
||||
|
||||
if (user == NULL)
|
||||
user = "";
|
||||
if (cmd) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue