mirror of https://gerrit.osmocom.org/libosmocore
logging/vty: fix vty_read_file(): do not write warnings to stdin
Setting vty->fd to 0 is a bad idea, which may cause the process to write() warnings to its own _stdin_ (yes, it's possible). For example, when a configuration file contains deprecated logging commands. Let's use stderr by default. Change-Id: Icdeaea67a06da3a2f07b252e455629559ecc1829
This commit is contained in:
parent
4abda9ea26
commit
b639b4d4f7
|
@ -1468,11 +1468,15 @@ vty_read_file(FILE *confp, void *priv)
|
|||
struct vty *vty;
|
||||
|
||||
vty = vty_new();
|
||||
vty->fd = 0;
|
||||
vty->type = VTY_FILE;
|
||||
vty->node = CONFIG_NODE;
|
||||
vty->priv = priv;
|
||||
|
||||
/* By default, write to stderr. Otherwise, during parsing of the logging
|
||||
* configuration, all invocations to vty_out() would make the process
|
||||
* write() to its own stdin (fd=0)! */
|
||||
vty->fd = fileno(stderr);
|
||||
|
||||
ret = config_from_file(vty, confp);
|
||||
|
||||
if (ret != CMD_SUCCESS) {
|
||||
|
|
|
@ -199,10 +199,7 @@ AT_SETUP([vty])
|
|||
AT_KEYWORDS([vty])
|
||||
cat $abs_srcdir/vty/vty_test.ok > expout
|
||||
cp $abs_srcdir/vty/*.cfg .
|
||||
# FIXME: calling vty_out() during initialization of the VTY interface would cause
|
||||
# the process write to its own *stdin*! This breaks the output of 'make check'.
|
||||
# Let's work this around untill the bug in libosmovty is fixed.
|
||||
AT_CHECK([$abs_top_builddir/tests/vty/vty_test 0>/dev/null], [0], [expout], [ignore])
|
||||
AT_CHECK([$abs_top_builddir/tests/vty/vty_test], [0], [expout], [ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([gprs-bssgp])
|
||||
|
|
Loading…
Reference in New Issue