mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-18 10:35:20 +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)$$)
|
||||
|
||||
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)
|
||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||
|
@ -765,7 +765,7 @@ virConfReadFile(const char *filename, unsigned int flags)
|
||||
{
|
||||
char *content;
|
||||
int len;
|
||||
virConfPtr conf;
|
||||
virConfPtr conf = NULL;
|
||||
|
||||
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)
|
||||
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);
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(content);
|
||||
|
||||
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