logswan

Fast Web log analyzer using probabilistic data structures
Log | Files | Refs | README | LICENSE

commit 8268881562372a2d856c9d4a1a80e8ec72d60314
parent 4438022f519cafe6d1e5f3852ad94b78ca5e9a74
Author: Frederic Cambus <fred@statdns.com>
Date:   Tue, 12 Jan 2016 21:14:34 +0100

Check that *lineBuffer is not NUL before attempting to parse log line

Diffstat:
Msrc/parse.c | 34++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/parse.c b/src/parse.c @@ -5,7 +5,7 @@ /* http://www.logswan.org */ /* */ /* Created: 2015-05-31 */ -/* Last Updated: 2016-01-10 */ +/* Last Updated: 2016-01-12 */ /* */ /* Logswan is released under the BSD 3-Clause license. */ /* See LICENSE file for details. */ @@ -26,27 +26,29 @@ void parseDate(struct date* parsedDate, char *date) { } void parseLine(struct logLine* parsedLine, char *lineBuffer) { - /* Remote host */ - parsedLine->remoteHost = strtok(lineBuffer, " "); + if (*lineBuffer) { + /* Remote host */ + parsedLine->remoteHost = strtok(lineBuffer, " "); - /* User-identifier */ - strtok(NULL, " "); + /* User-identifier */ + strtok(NULL, " "); - /* User ID */ - strtok(NULL, "["); + /* User ID */ + strtok(NULL, "["); - /* Date */ - parsedLine->date = strtok(NULL, "]"); + /* Date */ + parsedLine->date = strtok(NULL, "]"); - /* Requested resource */ - strtok(NULL, "\""); - parsedLine->request = strtok(NULL, "\""); + /* Requested resource */ + strtok(NULL, "\""); + parsedLine->request = strtok(NULL, "\""); - /* HTTP status codes */ - parsedLine->statusCode = strtok(NULL, " "); + /* HTTP status codes */ + parsedLine->statusCode = strtok(NULL, " "); - /* Returned object size */ - parsedLine->objectSize = strtok(NULL, " \""); + /* Returned object size */ + parsedLine->objectSize = strtok(NULL, " \""); + } } void parseRequest(struct request* parsedRequest, char *request) {