diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-09-15 22:26:56 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-09-16 09:58:37 -0500 |
commit | 4b549144d82ea0f368321d149215f577049fffa6 (patch) | |
tree | ee916708f2758a03690c6c0770cc238aa8757e91 /src/shared | |
parent | 1244d8d640a2644aa8dc8e588cd9c414b3d39163 (diff) |
Verify validity of session name when received from outside
Only ASCII letters and digits are allowed.
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/cgroup-util.c | 4 | ||||
-rw-r--r-- | src/shared/def.h | 5 | ||||
-rw-r--r-- | src/shared/env-util.c | 5 | ||||
-rw-r--r-- | src/shared/replace-var.c | 3 | ||||
-rw-r--r-- | src/shared/unit-name.c | 5 |
5 files changed, 12 insertions, 10 deletions
diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 1d545e0466..0bffebdac8 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1511,9 +1511,7 @@ char *cg_unescape(const char *p) { } #define CONTROLLER_VALID \ - "0123456789" \ - "abcdefghijklmnopqrstuvwxyz" \ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + DIGITS LETTERS \ "_" bool cg_controller_is_valid(const char *p, bool allow_named) { diff --git a/src/shared/def.h b/src/shared/def.h index 5abb544247..edd0bcf7a4 100644 --- a/src/shared/def.h +++ b/src/shared/def.h @@ -33,3 +33,8 @@ #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT #define SIGNALS_IGNORE SIGPIPE + +#define DIGITS "0123456789" +#define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz" +#define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +#define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS diff --git a/src/shared/env-util.c b/src/shared/env-util.c index 6a52fb960d..5e29629efd 100644 --- a/src/shared/env-util.c +++ b/src/shared/env-util.c @@ -27,11 +27,10 @@ #include "utf8.h" #include "util.h" #include "env-util.h" +#include "def.h" #define VALID_CHARS_ENV_NAME \ - "0123456789" \ - "abcdefghijklmnopqrstuvwxyz" \ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + DIGITS LETTERS \ "_" #ifndef ARG_MAX diff --git a/src/shared/replace-var.c b/src/shared/replace-var.c index e11c57a43d..478fc43a38 100644 --- a/src/shared/replace-var.c +++ b/src/shared/replace-var.c @@ -24,6 +24,7 @@ #include "macro.h" #include "util.h" #include "replace-var.h" +#include "def.h" /* * Generic infrastructure for replacing @FOO@ style variables in @@ -40,7 +41,7 @@ static int get_variable(const char *b, char **r) { if (*b != '@') return 0; - k = strspn(b + 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ_"); + k = strspn(b + 1, UPPERCASE_LETTERS "_"); if (k <= 0 || b[k+1] != '@') return 0; diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c index 1baa6eb7e5..8f6c28e86a 100644 --- a/src/shared/unit-name.c +++ b/src/shared/unit-name.c @@ -26,11 +26,10 @@ #include "path-util.h" #include "util.h" #include "unit-name.h" +#include "def.h" #define VALID_CHARS \ - "0123456789" \ - "abcdefghijklmnopqrstuvwxyz" \ - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + DIGITS LETTERS \ ":-_.\\" static const char* const unit_type_table[_UNIT_TYPE_MAX] = { |