diff options
author | Kay Sievers <kay.sievers@suse.de> | 2005-08-28 13:49:32 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@suse.de> | 2005-08-28 13:49:32 +0200 |
commit | 5b13ecb830cdec338b514b9ed8c2c559c2f05223 (patch) | |
tree | 1000378ec86832a9dc9cab74a966c4ace98e9e76 /udev_utils.c | |
parent | 7104c558dad47ee85860ebb891bdc8820d95154d (diff) |
add uft8 validation for safe volume label exporting
We will not support any other character encoding than plain ascii
or utf8 for volume labels. All invalid utf8 and non-ascii characters
are substituted for security reasons. No options, no fancy heuristics.
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udev_utils.c')
-rw-r--r-- | udev_utils.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/udev_utils.c b/udev_utils.c index fc1e2e1f7e..c7292d0f04 100644 --- a/udev_utils.c +++ b/udev_utils.c @@ -36,69 +36,6 @@ #include "udev_utils.h" #include "list.h" -/* compare string with pattern (supports * ? [0-9] [!A-Z]) */ -int strcmp_pattern(const char *p, const char *s) -{ - if (s[0] == '\0') { - while (p[0] == '*') - p++; - return (p[0] != '\0'); - } - switch (p[0]) { - case '[': - { - int not = 0; - p++; - if (p[0] == '!') { - not = 1; - p++; - } - while ((p[0] != '\0') && (p[0] != ']')) { - int match = 0; - if (p[1] == '-') { - if ((s[0] >= p[0]) && (s[0] <= p[2])) - match = 1; - p += 3; - } else { - match = (p[0] == s[0]); - p++; - } - if (match ^ not) { - while ((p[0] != '\0') && (p[0] != ']')) - p++; - if (p[0] == ']') - return strcmp_pattern(p+1, s+1); - } - } - } - break; - case '*': - if (strcmp_pattern(p, s+1)) - return strcmp_pattern(p+1, s); - return 0; - case '\0': - if (s[0] == '\0') { - return 0; - } - break; - default: - if ((p[0] == s[0]) || (p[0] == '?')) - return strcmp_pattern(p+1, s+1); - break; - } - return 1; -} - -int string_is_true(const char *str) -{ - if (strcasecmp(str, "true") == 0) - return 1; - if (strcasecmp(str, "yes") == 0) - return 1; - if (strcasecmp(str, "1") == 0) - return 1; - return 0; -} int log_priority(const char *priority) { @@ -143,27 +80,6 @@ int kernel_release_satisfactory(unsigned int version, unsigned int patchlevel, u return 0; } -void replace_untrusted_chars(char *string) -{ - size_t len; - - for (len = 0; string[len] != '\0'; len++) { - if (strchr(";,~\\()\'", string[len])) { - info("replace '%c' in '%s'", string[len], string); - string[len] = '_'; - } - } -} - -void remove_trailing_char(char *path, char c) -{ - size_t len; - - len = strlen(path); - while (len > 0 && path[len-1] == c) - path[--len] = '\0'; -} - int name_list_add(struct list_head *name_list, const char *name, int sort) { struct name_entry *loop_name; |