Fix counters time check for different platforms

This commit is contained in:
z3APA3A 2016-04-08 14:53:15 +03:00
parent d3f9d80b65
commit 3c8c866ac1

View File

@ -405,17 +405,22 @@ static int h_counter(int argc, unsigned char **argv){
fprintf(stderr, "Not a counter file %s, line %d\n", argv[1], linenum); fprintf(stderr, "Not a counter file %s, line %d\n", argv[1], linenum);
return 2; return 2;
} }
#ifdef _MSC_VER
#ifdef _TIME64_T_DEFINED #ifdef _TIME64_T_DEFINED
#ifndef _MAX__TIME64_T #ifdef _MAX__TIME64_T
#define _MAX__TIME64_T 0x793406fffi64 #define MAX_COUNTER_TIME (_MAX__TIME64_T)
#elif defined (MAX__TIME64_T)
#define MAX_COUNTER_TIME (MAX__TIME64_T)
#else
#define MAX_COUNTER_TIME (0x793406fff)
#endif #endif
#else
#define MAX_COUNTER_TIME ((sizeof(time_t)>4)?0x793406fff:LONG_MAX)
#endif #endif
if(ch1.updated >= _MAX__TIME64_T){
if(ch1.updated < 0 || ch1.updated >= MAX_COUNTER_TIME){
fprintf(stderr, "Invalid or corrupted counter file %s. Use countersutil utility to convert from older version\n", argv[1]); fprintf(stderr, "Invalid or corrupted counter file %s. Use countersutil utility to convert from older version\n", argv[1]);
return 3; return 3;
} }
#endif
cheader.updated = ch1.updated; cheader.updated = ch1.updated;
} }
if(argc >=4) { if(argc >=4) {
@ -1209,12 +1214,10 @@ static int h_ace(int argc, unsigned char **argv){
tl->traf64 = crecord.traf64; tl->traf64 = crecord.traf64;
tl->cleared = crecord.cleared; tl->cleared = crecord.cleared;
tl->updated = crecord.updated; tl->updated = crecord.updated;
#ifdef _MAX__TIME64_T if(tl->cleared < 0 || tl->cleared >= MAX_COUNTER_TIME || tl->updated < 0 || tl->updated >= MAX_COUNTER_TIME){
if(tl->cleared >= _MAX__TIME64_T || tl->updated >= _MAX__TIME64_T){ fprintf(stderr, "Invalid, incompatible or corrupted counter file.\n");
fprintf(stderr, "Invalid or corrupted counter file. Use countersutil utility to convert from older version\n");
return(6); return(6);
} }
#endif
} }
} }
pthread_mutex_lock(&tc_mutex); pthread_mutex_lock(&tc_mutex);