X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=ossec-hids.git;a=blobdiff_plain;f=src%2Flogcollector%2Fread_postgresql_log.c;h=ba299193d3822a59e9e158eabdedfcb5a432ad9f;hp=6fea175fd91cafe87916caded2b97302801728f7;hb=6ef2f786c6c8ead94841b5f93baf9f43421f08c8;hpb=301048b51990573e58a30dc4a5bb4ec285cad554 diff --git a/src/logcollector/read_postgresql_log.c b/src/logcollector/read_postgresql_log.c index 6fea175..ba29919 100755 --- a/src/logcollector/read_postgresql_log.c +++ b/src/logcollector/read_postgresql_log.c @@ -1,4 +1,5 @@ -/* @(#) $Id$ */ +/* @(#) $Id: ./src/logcollector/read_postgresql_log.c, 2011/09/08 dcid Exp $ + */ /* Copyright (C) 2009 Trend Micro Inc. * All rights reserved. @@ -20,7 +21,7 @@ -/* Send pgsql message and check the return code. +/* Send pgsql message and check the return code. */ void __send_pgsql_msg(int pos, int drop_it, char *buffer) { @@ -52,7 +53,7 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) /* Zeroing buffer and str */ buffer[0] = '\0'; - buffer[OS_MAXSTR] = '\0'; + buffer[OS_MAXSTR] = '\0'; str[OS_MAXSTR]= '\0'; *rc = 0; @@ -60,20 +61,20 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) /* Getting new entry */ while(fgets(str, OS_MAXSTR - OS_LOG_HEADER, logff[pos].fp) != NULL) { - + /* Getting buffer size */ str_len = strlen(str); - + /* Checking str_len size. Very useless, but just to make sure.. */ if(str_len >= sizeof(buffer) -2) { str_len = sizeof(buffer) -10; } - + /* Getting the last occurence of \n */ - if ((p = strrchr(str, '\n')) != NULL) + if ((p = strrchr(str, '\n')) != NULL) { *p = '\0'; @@ -88,8 +89,8 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) { need_clear = 1; } - - + + #ifdef WIN32 if ((p = strrchr(str, '\r')) != NULL) { @@ -111,22 +112,22 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) } #endif - + /* PostgreSQL messages have the following format: * [2007-08-31 19:17:32.186 ADT] 192.168.2.99:db_name */ if((str_len > 32) && - (str[0] == '[') && - (str[5] == '-') && - (str[8] == '-') && - (str[11] == ' ') && - (str[14] == ':') && - (str[17] == ':') && + (str[0] == '[') && + (str[5] == '-') && + (str[8] == '-') && + (str[11] == ' ') && + (str[14] == ':') && + (str[17] == ':') && isdigit((int)str[1]) && isdigit((int)str[12])) { - + /* If the saved message is empty, set it and continue. */ if(buffer[0] == '\0') { @@ -144,8 +145,8 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) strncpy(buffer, str, str_len + 2); } } - - + + /* Query logs can be in multiple lines. * They always start with a tab in the additional ones. */ @@ -154,16 +155,16 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) { /* Size of the buffer */ int buffer_len = strlen(buffer); - + p = str +1; - + /* Removing extra spaces and tabs */ while(*p == ' ' || *p == '\t') { p++; } - - + + /* Adding additional message to the saved buffer. */ if(sizeof(buffer) - buffer_len > str_len +256) { @@ -176,7 +177,7 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) strncat(buffer, str, str_len +3); } } - + continue; } @@ -186,8 +187,8 @@ void *read_postgresql_log(int pos, int *rc, int drop_it) { __send_pgsql_msg(pos, drop_it, buffer); } - - return(NULL); + + return(NULL); } /* EOF */