parsecfg: do not continue past a zero termination
When a config file line ends without newline, the parsing function could continue reading beyond that point in memory. Reported-by: Hanno Böck
This commit is contained in:
parent
05e4137d31
commit
691a07dac6
@ -187,6 +187,8 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
|
|||||||
param = line; /* parameter starts here */
|
param = line; /* parameter starts here */
|
||||||
while(*line && !ISSPACE(*line))
|
while(*line && !ISSPACE(*line))
|
||||||
line++;
|
line++;
|
||||||
|
|
||||||
|
if(*line) {
|
||||||
*line = '\0'; /* zero terminate */
|
*line = '\0'; /* zero terminate */
|
||||||
|
|
||||||
/* to detect mistakes better, see if there's data following */
|
/* to detect mistakes better, see if there's data following */
|
||||||
@ -202,11 +204,12 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
|
|||||||
case '#': /* comment */
|
case '#': /* comment */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
warnf(operation->global, "%s:%d: warning: '%s' uses unquoted white "
|
warnf(operation->global, "%s:%d: warning: '%s' uses unquoted "
|
||||||
"space in the line that may cause side-effects!\n",
|
"white space in the line that may cause side-effects!\n",
|
||||||
filename, lineno, option);
|
filename, lineno, option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!*param) {
|
if(!*param) {
|
||||||
/* do this so getparameter can check for required parameters.
|
/* do this so getparameter can check for required parameters.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user