[pmg-devel] [PATCH pmg-log-tracker 3/8] fix csum calculation

Dominik Csapak d.csapak at proxmox.com
Wed Feb 20 14:10:08 CET 2019


it was intended to be a rol instead of a simple left shift

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 pmg-log-tracker.c | 39 ++++++++++++++++++++++++++-------------
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git a/pmg-log-tracker.c b/pmg-log-tracker.c
index e0f03f9..29fa66d 100644
--- a/pmg-log-tracker.c
+++ b/pmg-log-tracker.c
@@ -34,6 +34,7 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/types.h>
+#include <stdint.h>
 #include <zlib.h>
 #include <fnmatch.h>
 
@@ -290,6 +291,18 @@ void      parser_free (LParser *parser);
 
 // Implementations
 
+// Checksum Macros
+#define PROXPROX		0xE0E4DEF0
+#define PMG_SMTP_FILTER		0x0A85A6B7
+#define POSTFIX_POSTSCREEN	0xD17E2019
+#define POSTFIX_QMGR		0x48465316
+#define POSTFIX_SMTP		0x4A466014
+#define POSTFIX_LMTP		0x43466014
+#define POSTFIX_LOCAL		0x484F05AF
+#define POSTFIX_ERROR		0x4B5E13AE
+#define POSTFIX_SMTPD		0x466014AE
+#define POSTFIX_CLEANUP		0x05A8BAC1
+
 //#define LOGPATH "./log/"
 #define LOGPATH "/var/log/"
 //#define LOGPATH "/root/testlog/"
@@ -1773,7 +1786,7 @@ main (int argc, char * const argv[])
   const char *idx2;
   const char *cpos;
   int found = 0;
-  int csum_prog;
+  uint32_t csum_prog;
   unsigned long lines = 0;
   unsigned long rel_line_nr = 0;
   char qidbuf[30];
@@ -2037,7 +2050,7 @@ main (int argc, char * const argv[])
 
       csum_prog = 0;
       found = 0; while (*cpos && (*cpos != ':') && (*cpos != '[')) { 
-	csum_prog = (csum_prog <<8) + *cpos;
+	csum_prog = ((csum_prog << 8)|(csum_prog >> 24)) + *cpos;
 	cpos++; 
 	found++; 
       }
@@ -2081,8 +2094,8 @@ main (int argc, char * const argv[])
 	strmatch = 1;
       }
 
-      if ((csum_prog == 0x70726F78) ||// proxprox
-	  (csum_prog == 0x6C746572)) { // pmg-smtp-filter
+      if ((csum_prog == PROXPROX) ||
+	  (csum_prog == PMG_SMTP_FILTER)) {
 
 	if ((idx1 = parse_qid (&cpos, qidbuf, ':', 25))) {
 
@@ -2171,7 +2184,7 @@ main (int argc, char * const argv[])
 
 	}
 
-      } else if (csum_prog == 0x7265656E) { // postfix/postscreen
+      } else if (csum_prog == POSTFIX_POSTSCREEN) {
 
 	      SEntry *se;
 
@@ -2228,7 +2241,7 @@ main (int argc, char * const argv[])
 		      sentry_free (parser, se);
 	      }
 	      
-      } else if (csum_prog == 0x716D6772) { // postfix/qmgr
+      } else if (csum_prog == POSTFIX_QMGR) {
 
 	if ((idx2 = text) && (idx1 = parse_qid (&idx2, qidbuf, ':', 15))) {
 
@@ -2275,12 +2288,12 @@ main (int argc, char * const argv[])
 	  }
 	}
 
-      } else if ((csum_prog == 0x736D7470) || //postfix/smtp
-		 (csum_prog == 0x6C6D7470) || //postfix/lmtp
-		 (csum_prog == 0x6F63616C) || //postfix/local
-		 (csum_prog == 0x72726F72)) { //postfix/error
+      } else if ((csum_prog == POSTFIX_SMTP) || //postfix/smtp
+		 (csum_prog == POSTFIX_LMTP) || //postfix/lmtp
+		 (csum_prog == POSTFIX_LOCAL) || //postfix/local
+		 (csum_prog == POSTFIX_ERROR)) { //postfix/error
 
-	int lmtp = (csum_prog == 0x6C6D7470);
+	int lmtp = (csum_prog == POSTFIX_LMTP);
 
 	if ((cpos = text) && (idx1 = parse_qid (&cpos, qidbuf, ':', 15))) {
 
@@ -2362,7 +2375,7 @@ main (int argc, char * const argv[])
 	  }
 	}
 
-      } else if (csum_prog == 0x6D747064) { // postfix/smtpd
+      } else if (csum_prog == POSTFIX_SMTPD) { // postfix/smtpd
 	SEntry *se;
 
 	if (!pid) {
@@ -2469,7 +2482,7 @@ main (int argc, char * const argv[])
 
 	}
  
-      } else if (csum_prog == 0x616E7570) { // postfix/cleanup
+      } else if (csum_prog == POSTFIX_CLEANUP) { // postfix/cleanup
 
 	QEntry *qe;
 
-- 
2.11.0




More information about the pmg-devel mailing list