mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
virconf: Handle conf file without ending newline
$ echo -n 'log_level=1' > ~/.config/libvirt/libvirtd.conf $ libvirtd --timeout=10 2014-10-10 10:30:56.394+0000: 6626: info : libvirt version: 1.1.3.6, package: 1.fc20 (Fedora Project, 2014-09-08-17:50:42, buildvm-05.phx2.fedoraproject.org) 2014-10-10 10:30:56.394+0000: 6626: error : main:1261 : Can't load config file: configuration file syntax error: /home/rjones/.config/libvirt/libvirtd.conf:1: expecting a value: /home/rjones/.config/libvirt/libvirtd.conf Rather than try to fix this in the depths of the parser, just catch the case when a config file doesn't end in a newline, and manually append a newline to the content before parsing https://bugzilla.redhat.com/show_bug.cgi?id=1151409
This commit is contained in:
parent
81f3839f87
commit
3cc2a9e0d4
2
cfg.mk
2
cfg.mk
@ -1179,7 +1179,7 @@ exclude_file_name_regexp--sc_prohibit_close = \
|
|||||||
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c)$$)
|
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c)$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||||
(^tests/(qemuhelp|nodeinfo|virpcitest)data/|\.diff$$)
|
(^tests/(qemuhelp|nodeinfo|virpcitest)data/|\.diff|tests/confdata/no-newline\.conf$$)
|
||||||
|
|
||||||
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon)
|
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon)
|
||||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||||
|
@ -765,7 +765,7 @@ virConfReadFile(const char *filename, unsigned int flags)
|
|||||||
{
|
{
|
||||||
char *content;
|
char *content;
|
||||||
int len;
|
int len;
|
||||||
virConfPtr conf;
|
virConfPtr conf = NULL;
|
||||||
|
|
||||||
VIR_DEBUG("filename=%s", NULLSTR(filename));
|
VIR_DEBUG("filename=%s", NULLSTR(filename));
|
||||||
|
|
||||||
@ -777,8 +777,17 @@ virConfReadFile(const char *filename, unsigned int flags)
|
|||||||
if ((len = virFileReadAll(filename, MAX_CONFIG_FILE_SIZE, &content)) < 0)
|
if ((len = virFileReadAll(filename, MAX_CONFIG_FILE_SIZE, &content)) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (len && len < MAX_CONFIG_FILE_SIZE && content[len - 1] != '\n') {
|
||||||
|
VIR_DEBUG("appending newline to busted config file %s", filename);
|
||||||
|
if (VIR_REALLOC_N(content, len + 1) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
content[len++] = '\n';
|
||||||
|
content[len] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
conf = virConfParse(filename, content, len, flags);
|
conf = virConfParse(filename, content, len, flags);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
VIR_FREE(content);
|
VIR_FREE(content);
|
||||||
|
|
||||||
return conf;
|
return conf;
|
||||||
|
1
tests/confdata/no-newline.conf
Normal file
1
tests/confdata/no-newline.conf
Normal file
@ -0,0 +1 @@
|
|||||||
|
log_level=1
|
1
tests/confdata/no-newline.out
Normal file
1
tests/confdata/no-newline.out
Normal file
@ -0,0 +1 @@
|
|||||||
|
log_level = 1
|
Loading…
x
Reference in New Issue
Block a user