From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH V2] libxc: Prevent NULL pointer dereference in stdiostream_vmessage() Date: Tue, 7 Jul 2015 16:51:24 +0100 Message-ID: <559BF57C.1050608@citrix.com> References: <1436284103-25551-1-git-send-email-Jennifer.Herbert@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1436284103-25551-1-git-send-email-Jennifer.Herbert@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jennifer Herbert , xen-devel@lists.xen.org Cc: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 07/07/15 16:48, Jennifer Herbert wrote: > Unlikely that it may seem localtime_r could fail, which would result in a > null pointer dereference. In this case, it shoud log the errno, (instead of > the date/time), and and continue its logging, as this is still useful. > > Signed-off-by: Jennifer Herbert > --- > tools/libxc/xtl_logger_stdio.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/tools/libxc/xtl_logger_stdio.c b/tools/libxc/xtl_logger_stdio.c > index d8646e0..5569c50 100644 > --- a/tools/libxc/xtl_logger_stdio.c > +++ b/tools/libxc/xtl_logger_stdio.c > @@ -61,10 +61,13 @@ static void stdiostream_vmessage(xentoollog_logger *logger_in, > struct tm lt_buf; > time_t now = time(0); > struct tm *lt= localtime_r(&now, <_buf); > - fprintf(lg->f, "%04d-%02d-%02d %02d:%02d:%02d %s ", > - lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, > - lt->tm_hour, lt->tm_min, lt->tm_sec, > - tzname[!!lt->tm_isdst]); > + if (lt != NULL) > + fprintf(lg->f, "%04d-%02d-%02d %02d:%02d:%02d %s ", > + lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, > + lt->tm_hour, lt->tm_min, lt->tm_sec, > + tzname[!!lt->tm_isdst]); > + else > + fprintf(lg-f, "[localtime_r failed: %d] ", errno); lg->f ? ~Andrew > } > if (lg->flags & XTL_STDIOSTREAM_SHOW_PID) > fprintf(lg->f, "[%lu] ", (unsigned long)getpid());