[libvirt] [PATCH] split out logfile opening

Guido Günther agx at sigxcpu.org
Sun Jan 11 11:24:14 UTC 2009


On Sun, Jan 11, 2009 at 08:50:59AM +0100, Jim Meyering wrote:
> Guido Günther <agx at sigxcpu.org> wrote:
> >> Does the attached patch look ok? I'll apply this together with
> >> 0001-split-out-opening-of-the-domain-logfile.patch then.
> >>  -- Guido
> > Rereading your mail you also suggest using sizeof() instead of PATH_MAX.
> > Updated patch attached.
> >  -- Guido
> >
> >>From 6ca6494be05e4834b9469ec1c8a108cefe3ed44f Mon Sep 17 00:00:00 2001
> > From: =?utf-8?q?Guido=20G=C3=BCnther?= <agx at sigxcpu.org>
> > Date: Sat, 10 Jan 2009 20:13:39 +0100
> > Subject: [PATCH] use snprintf
> >
> > ---
> >  src/qemu_driver.c |   19 ++++++++-----------
> >  1 files changed, 8 insertions(+), 11 deletions(-)
> >
> > diff --git a/src/qemu_driver.c b/src/qemu_driver.c
> > index d4c56d6..fc73a12 100644
> > --- a/src/qemu_driver.c
> > +++ b/src/qemu_driver.c
> > @@ -149,24 +149,21 @@ qemudLogFD(virConnectPtr conn, const char* logDir, const char* name)
> >      char logfile[PATH_MAX];
> >      mode_t logmode;
> >      uid_t uid = geteuid();
> > -    int fd = -1;
> > +    int ret, fd = -1;
> >
> > -    if ((strlen(logDir) + /* path */
> > -         1 + /* Separator */
> > -         strlen(name) + /* basename */
> > -         4 + /* suffix .log */
> > -         1 /* NULL */) > PATH_MAX) {
> > +    if ((ret = snprintf(logfile, sizeof(logfile), "%s/%s.log", logDir, name)) < 0) {
> > +        qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> > +                         _("failed to build logfile name %s/%s.log"),
> > +                         logDir, name);
> > +        return -1;
> > +    }
> > +    if (ret >= sizeof(logfile)) {
> >          qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> >                           _("config file path too long: %s/%s.log"),
> >                           logDir, name);
> >          return -1;
> >      }
> 
> Thanks!
> That looks fine.
> However, it makes me see the 2nd diagnostic is wrong
> to mention "config file".  Should be "log file".
> Yet again, this was a preexisting error, not yours, of course.
> 
> Maybe just drop the "path too long" case (which will probably
> never happen anyway) and combine the tests, also splitting the
> line to fit in 80 columns?
> 
>     if ((ret = snprintf(logfile, sizeof(logfile), "%s/%s.log", logDir, name))
>         < 0 || ret >= sizeof(logfile)) {
>         qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
>                          _("failed to build logfile name %s/%s.log"),
>                          logDir, name);
>         return -1;
>     }
That looks even better. Applied that way.
 -- Guido




More information about the libvir-list mailing list