From 9a2270d2c89f58fbed72d1811dfbe308fdf495ac Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 31 Jul 2009 03:58:05 +0200 Subject: bug fixes in kerneloops scanner CKerneloopsScanner::Run - scan syslog file first, then dmesg (was other way around) CKerneloopsScanner::SaveOopsToDebug - cast time_t and size_t to long when we feed them to snprintf CKerneloopsScanner::ScanSysLogFile - do not seek to negative offsets, POSIX does not allow that CSysLog::QueueOops - plug memory leak Also used some abrtlib functions where appropriate, use open instead of fopen where appropriate, do not check error in time() - it never fails, move around bits of code in CKerneloopsScanner to make it easier in future to create a tool for parsing arbitrary files for oopses. Signed-off-by: Denys Vlasenko --- lib/Plugins/KerneloopsSysLog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/Plugins/KerneloopsSysLog.cpp') diff --git a/lib/Plugins/KerneloopsSysLog.cpp b/lib/Plugins/KerneloopsSysLog.cpp index 008d0717..a30fc69d 100644 --- a/lib/Plugins/KerneloopsSysLog.cpp +++ b/lib/Plugins/KerneloopsSysLog.cpp @@ -77,8 +77,8 @@ void CSysLog::QueueOops(char *data, char *version) if (m_nFoundOopses > MAX_OOPS) return; - m_NewOops.m_sData = xstrdup(data); - m_NewOops.m_sVersion = xstrdup(version); + m_NewOops.m_sData = data; + m_NewOops.m_sVersion = version; m_OopsQueue.push_back(m_NewOops); m_nFoundOopses++; @@ -357,10 +357,10 @@ int CSysLog::ExtractOops(char *buffer, size_t buflen, int remove_syslog) len = 2; for (q = oopsstart; q <= oopsend; q++) - len += strlen(lines_info[q].ptr)+1; + len += strlen(lines_info[q].ptr) + 1; - oops = (char*)calloc(len, 1); - version = (char*)calloc(len, 1); + oops = (char*)xzalloc(len); + version = (char*)xzalloc(len); is_version = 0; for (q = oopsstart; q <= oopsend; q++) { -- cgit