aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2023-01-12 22:05:58 +0100
committerMattias Andrée <maandree@kth.se>2023-01-12 22:05:58 +0100
commitb9d627b9602137eb1bb98ebb6801c97b0ad33e43 (patch)
tree3df7dc3c2bcacc50f1288133eaf6d9381bd8e24e
parentm + add libfonts_parse_dir_line (diff)
downloadlibfonts-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>
-rw-r--r--libfonts_parse_dir_line.c17
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;