mirror of
https://git.zx2c4.com/cgit
synced 2024-11-23 08:58:41 +00:00
configfile: fix EOF handling
Currently we can end up passing EOF to isspace(), which is in fact libgit's sane_isspace which does: ((sane_ctype[(unsigned char)(x)] & (GIT_SPACE)) != 0) It is very unlikely that EOF cast to "unsigned char" will end up in a character that has the GIT_SPACE bit set, but the standard only requires that EOF be a negative integer, so it could access any value in the sane_ctype array. If it does end up returning true for isspace() then this loop will never terminate, so handle EOF as a special value in the same way as the other loops in this function. Signed-off-by: John Keeping <john@keeping.me.uk>
This commit is contained in:
parent
11695a58fd
commit
35df710a1f
@ -39,7 +39,9 @@ static int read_config_line(FILE *f, struct strbuf *name, struct strbuf *value)
|
||||
|
||||
/* Skip comments and preceding spaces. */
|
||||
for(;;) {
|
||||
if (c == '#' || c == ';')
|
||||
if (c == EOF)
|
||||
return 0;
|
||||
else if (c == '#' || c == ';')
|
||||
skip_line(f);
|
||||
else if (!isspace(c))
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user