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:
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) {