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;  | 
