diff options
author | Mattias Andrée <maandree@kth.se> | 2023-01-12 22:05:58 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2023-01-12 22:05:58 +0100 |
commit | b9d627b9602137eb1bb98ebb6801c97b0ad33e43 (patch) | |
tree | 3df7dc3c2bcacc50f1288133eaf6d9381bd8e24e | |
parent | m + add libfonts_parse_dir_line (diff) | |
download | libfonts-b9d627b9602137eb1bb98ebb6801c97b0ad33e43.tar.gz libfonts-b9d627b9602137eb1bb98ebb6801c97b0ad33e43.tar.bz2 libfonts-b9d627b9602137eb1bb98ebb6801c97b0ad33e43.tar.xz |
libfonts_parse_dir_line: do not allow / in file name
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r-- | libfonts_parse_dir_line.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libfonts_parse_dir_line.c b/libfonts_parse_dir_line.c index a339ce3..de14ea9 100644 --- a/libfonts_parse_dir_line.c +++ b/libfonts_parse_dir_line.c @@ -4,22 +4,25 @@ static int -read_field(char **valuep, int allow_blank, const char *s, const char **endp) +read_field(char **valuep, int fieldno, const char *s, const char **endp) { - char endc; + char endc, slash; size_t esc = 0; size_t len; const char *start; const char *end; char *v; + if (fieldno == 0) { + endc = ' '; + slash = '/'; + } else { + endc = '\n'; + slash = '\0'; + } if (*s == '"') { endc = '"'; s++; - } else if (allow_blank) { - endc = '\n'; - } else { - endc = ' '; } start = s; @@ -32,6 +35,8 @@ read_field(char **valuep, int allow_blank, const char *s, const char **endp) if (!*s || *s == '\n') goto badline; } + if (*s == slash) + goto badline; s++; } end = s; |