mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-15 16:04:37 +00:00
BUG/MINOR: server: check return value of fgets() in apply_server_state()
fgets() can return NULL on error or when EOF occurs. This patch adds a check of fgets() return value and displays a warning if the first line of the server state file can not be read. Additionally, we make sure to close the previously opened file descriptor.
This commit is contained in:
parent
e9544935e8
commit
cf4fb036a4
@ -2330,12 +2330,16 @@ void apply_server_state(void)
|
|||||||
version = 0;
|
version = 0;
|
||||||
|
|
||||||
/* first character of first line of the file must contain the version of the export */
|
/* first character of first line of the file must contain the version of the export */
|
||||||
fgets(mybuf, SRV_STATE_LINE_MAXLEN, f);
|
if (fgets(mybuf, SRV_STATE_LINE_MAXLEN, f) == NULL) {
|
||||||
|
Warning("Can't read first line of the server state file '%s'\n", filepath);
|
||||||
|
goto fileclose;
|
||||||
|
}
|
||||||
|
|
||||||
cur = mybuf;
|
cur = mybuf;
|
||||||
version = atoi(cur);
|
version = atoi(cur);
|
||||||
if ((version < SRV_STATE_FILE_VERSION_MIN) ||
|
if ((version < SRV_STATE_FILE_VERSION_MIN) ||
|
||||||
(version > SRV_STATE_FILE_VERSION_MAX))
|
(version > SRV_STATE_FILE_VERSION_MAX))
|
||||||
continue;
|
goto fileclose;
|
||||||
|
|
||||||
while (fgets(mybuf, SRV_STATE_LINE_MAXLEN, f)) {
|
while (fgets(mybuf, SRV_STATE_LINE_MAXLEN, f)) {
|
||||||
int bk_f_forced_id = 0;
|
int bk_f_forced_id = 0;
|
||||||
@ -2462,6 +2466,7 @@ void apply_server_state(void)
|
|||||||
/* now we can proceed with server's state update */
|
/* now we can proceed with server's state update */
|
||||||
srv_update_state(srv, version, srv_params);
|
srv_update_state(srv, version, srv_params);
|
||||||
}
|
}
|
||||||
|
fileclose:
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user