mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-09 01:50:35 +00:00
log.c:__lxc_log_set_file: completely close log file when overriding
Otherwise after a shortcut on error we could end up trying to write to the closed log fd. Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
3f53c691d2
commit
d9c9b1808a
@ -253,6 +253,16 @@ static char *build_log_path(const char *name, const char *lxcpath)
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern void lxc_log_close(void)
|
||||||
|
{
|
||||||
|
if (lxc_log_fd == -1)
|
||||||
|
return;
|
||||||
|
close(lxc_log_fd);
|
||||||
|
lxc_log_fd = -1;
|
||||||
|
free(log_fname);
|
||||||
|
log_fname = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This can be called:
|
* This can be called:
|
||||||
* 1. when a program calls lxc_log_init with no logfile parameter (in which
|
* 1. when a program calls lxc_log_init with no logfile parameter (in which
|
||||||
@ -265,8 +275,7 @@ static int __lxc_log_set_file(const char *fname, int create_dirs)
|
|||||||
{
|
{
|
||||||
if (lxc_log_fd != -1) {
|
if (lxc_log_fd != -1) {
|
||||||
// we are overriding the default.
|
// we are overriding the default.
|
||||||
close(lxc_log_fd);
|
lxc_log_close();
|
||||||
free(log_fname);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(fname != NULL);
|
assert(fname != NULL);
|
||||||
@ -383,16 +392,6 @@ extern int lxc_log_init(const char *name, const char *file,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void lxc_log_close(void)
|
|
||||||
{
|
|
||||||
if (lxc_log_fd == -1)
|
|
||||||
return;
|
|
||||||
close(lxc_log_fd);
|
|
||||||
lxc_log_fd = -1;
|
|
||||||
free(log_fname);
|
|
||||||
log_fname = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is called when we read a lxc.loglevel entry in a lxc.conf file. This
|
* This is called when we read a lxc.loglevel entry in a lxc.conf file. This
|
||||||
* happens after processing command line arguments, which override the .conf
|
* happens after processing command line arguments, which override the .conf
|
||||||
|
Loading…
Reference in New Issue
Block a user