From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jennifer Herbert Subject: Re: [PATCH V2] libxc: Prevent NULL pointer dereference in stdiostream_vmessage() Date: Tue, 7 Jul 2015 17:08:20 +0100 Message-ID: <559BF974.2050700@citrix.com> References: <1436284103-25551-1-git-send-email-Jennifer.Herbert@citrix.com> <559BF57C.1050608@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <559BF57C.1050608@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: Andrew Cooper , 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 I guess I didn't build what I thought I built. V3 coming up On 07/07/15 16:51, Andrew Cooper wrote: > 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());