mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-03 19:41:49 +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;
|
||||
}
|
||||
|
||||
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:
|
||||
* 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) {
|
||||
// we are overriding the default.
|
||||
close(lxc_log_fd);
|
||||
free(log_fname);
|
||||
lxc_log_close();
|
||||
}
|
||||
|
||||
assert(fname != NULL);
|
||||
@ -383,16 +392,6 @@ extern int lxc_log_init(const char *name, const char *file,
|
||||
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
|
||||
* happens after processing command line arguments, which override the .conf
|
||||
|
Loading…
Reference in New Issue
Block a user