Quoting Alexander Vladimirov ([email protected]): > write_config doesn't check the value sig_name function returns, > this causes write_config to produce corrupted container config when > using non-predefined signal names. > > Signed-off-by: Alexander Vladimirov <[email protected]>
Acked-by: Serge E. Hallyn <[email protected]> > --- > src/lxc/confile.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/src/lxc/confile.c b/src/lxc/confile.c > index 3462e9c..855b816 100644 > --- a/src/lxc/confile.c > +++ b/src/lxc/confile.c > @@ -1168,7 +1168,7 @@ static const char *sig_name(int signum) { > if (signum == signames[n].num) > return signames[n].name; > } > - return ""; > + return NULL; > } > > static int sig_parse(const char *signame) { > @@ -2289,6 +2289,7 @@ void write_config(FILE *fout, struct lxc_conf *c) > { > struct lxc_list *it; > int i; > + const char *signame; > > /* first write any includes */ > lxc_list_for_each(it, &c->includes) { > @@ -2336,10 +2337,22 @@ void write_config(FILE *fout, struct lxc_conf *c) > fprintf(fout, "lxc.pts = %d\n", c->pts); > if (c->ttydir) > fprintf(fout, "lxc.devttydir = %s\n", c->ttydir); > - if (c->haltsignal) > - fprintf(fout, "lxc.haltsignal = SIG%s\n", > sig_name(c->haltsignal)); > - if (c->stopsignal) > - fprintf(fout, "lxc.stopsignal = SIG%s\n", > sig_name(c->stopsignal)); > + if (c->haltsignal) { > + signame = sig_name(c->haltsignal); > + if (signame == NULL) { > + fprintf(fout, "lxc.haltsignal = %d\n", c->haltsignal); > + } else { > + fprintf(fout, "lxc.haltsignal = SIG%s\n", > sig_name(c->haltsignal)); > + } > + } > + if (c->stopsignal) { > + signame = sig_name(c->stopsignal); > + if (signame == NULL) { > + fprintf(fout, "lxc.stopsignal = %d\n", c->stopsignal); > + } else { > + fprintf(fout, "lxc.stopsignal = SIG%s\n", > sig_name(c->stopsignal)); > + } > + } > #if HAVE_SYS_PERSONALITY_H > switch(c->personality) { > case PER_LINUX32: fprintf(fout, "lxc.arch = i686\n"); break; > -- > 2.0.0 > > _______________________________________________ > lxc-devel mailing list > [email protected] > http://lists.linuxcontainers.org/listinfo/lxc-devel _______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
