mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +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
(cherry picked from commit 3cc2a9e0d4
)
This commit is contained in:
parent
8ceb0feae3
commit
ca9180ad63
2
cfg.mk
2
cfg.mk
@ -1172,7 +1172,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…
Reference in New Issue
Block a user