]> git.ipfire.org Git - thirdparty/sarg.git/blobdiff - readlog_extlog.c
Don't segfault if date_time_by is empty
[thirdparty/sarg.git] / readlog_extlog.c
index 75fb96efbd02d425815df28af3a14199b2faedb5..fbf0dfaf212ec1914a8a7cb408989c48ebee89fa 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "include/conf.h"
 #include "include/defs.h"
+#include "include/readlog.h"
 
 /*!
 Maximum number of columns accepted in an extended log format.
@@ -118,10 +119,12 @@ static bool ExtLog_Fields(const char *columns)
                                }
                        }
                }
+               (void)prefix;//compiler pacifier
                if (i<0) len=0;
                for ( ; (unsigned char)columns[len]>' ' ; len++) {//skip a word and accept any separator (tab or space)
                        if (header_start>=0 && columns[len]==')') header_end=len;
                }
+               (void)header_end;//compiler pacifier
                col_sep=columns[len];
                ExtColSep[col]=col_sep;
 
@@ -380,7 +383,9 @@ static enum ReadLogReturnCodeEnum ExtLog_ReadEntry(char *Line,struct ReadLogStru
 {
        int col;
        enum ext_col_id col_id;
+       char *Ip=NULL;
        char *IpEnd;
+       char *User=NULL;
        char *UserEnd;
        char *UrlEnd;
        char *HttpCodeEnd;
@@ -403,12 +408,12 @@ static enum ReadLogReturnCodeEnum ExtLog_ReadEntry(char *Line,struct ReadLogStru
                switch (col_id)
                {
                        case EXTCOL_Ip:
-                               Entry->Ip=Line;
+                               Entry->Ip=Ip=Line;
                                Line=ExtLog_GetString(Line,col,&IpEnd);
                                if (!Line) return(RLRC_Unknown);
                                break;
                        case EXTCOL_UserName:
-                               Entry->User=Line;
+                               Entry->User=User=Line;
                                Line=ExtLog_GetString(Line,col,&UserEnd);
                                if (!Line) return(RLRC_Unknown);
                                break;
@@ -458,8 +463,8 @@ static enum ReadLogReturnCodeEnum ExtLog_ReadEntry(char *Line,struct ReadLogStru
                return(RLRC_InternalError);
        }
 
-       ExtLog_FixString(Entry->Ip,IpEnd);
-       ExtLog_FixString(Entry->User,UserEnd);
+       ExtLog_FixString(Ip,IpEnd);
+       ExtLog_FixString(User,UserEnd);
        ExtLog_FixString(Entry->Url,UrlEnd);
        ExtLog_FixString(Entry->HttpCode,HttpCodeEnd);