fixed 64 bit issue with print time
authorAndreas Steffen <andreas.steffen@strongswan.org>
Sat, 20 Jan 2007 15:13:05 +0000 (15:13 -0000)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Sat, 20 Jan 2007 15:13:05 +0000 (15:13 -0000)
src/libstrongswan/crypto/crl.c
src/libstrongswan/crypto/x509.c
src/libstrongswan/library.c
src/libstrongswan/printf_hook.c
src/libstrongswan/printf_hook.h

index b79c474..2daf224 100755 (executable)
@@ -440,22 +440,22 @@ static int print(FILE *stream, const struct printf_info *info,
        
        now = time(NULL);
        
-       written += fprintf(stream, "%#T, revoked certs: %d\n", this->installed, utc,
+       written += fprintf(stream, "%#T, revoked certs: %d\n", &this->installed, utc,
                                           this->revokedCertificates->get_count(this->revokedCertificates));
        written += fprintf(stream, "    issuer:    '%D'\n", this->issuer);
-       written += fprintf(stream, "    updates:    this %#T\n", this->thisUpdate, utc);
-       written += fprintf(stream, "                next %#T ",  this->nextUpdate, utc);
+       written += fprintf(stream, "    updates:    this %#T\n", &this->thisUpdate, utc);
+       written += fprintf(stream, "                next %#T ",  &this->nextUpdate, utc);
        if (this->nextUpdate == UNDEFINED_TIME)
        {
                written += fprintf(stream, "ok (expires never)");
        }
        else if (now > this->nextUpdate)
        {
-               written += fprintf(stream, "expired (since %V)", now, this->nextUpdate);
+               written += fprintf(stream, "expired (since %V)", &now, &this->nextUpdate);
        }
        else if (now > this->nextUpdate - CRL_WARNING_INTERVAL * 60 * 60 * 24)
        {
-               written += fprintf(stream, "ok (expires in %V)", now, this->nextUpdate);
+               written += fprintf(stream, "ok (expires in %V)", &now, &this->nextUpdate);
        }
        else
        {
index 8ed79eb..e457a1b 100755 (executable)
@@ -1068,7 +1068,7 @@ static int print(FILE *stream, const struct printf_info *info,
        /* determine the current time */
        time_t now = time(NULL);
 
-       written += fprintf(stream, "%#T\n", this->installed, utc);
+       written += fprintf(stream, "%#T\n", &this->installed, utc);
 
        if (this->subjectAltNames->get_count(this->subjectAltNames))
        {
@@ -1095,27 +1095,27 @@ static int print(FILE *stream, const struct printf_info *info,
        written += fprintf(stream, "    subject:   '%D'\n", this->subject);
        written += fprintf(stream, "    issuer:    '%D'\n", this->issuer);
        written += fprintf(stream, "    serial:     %#B\n", &this->serialNumber);
-       written += fprintf(stream, "    validity:   not before %#T, ", this->notBefore, utc);
+       written += fprintf(stream, "    validity:   not before %#T, ", &this->notBefore, utc);
        if (now < this->notBefore)
        {
-               written += fprintf(stream, "not valid yet (valid in %V)\n", now, this->notBefore);
+               written += fprintf(stream, "not valid yet (valid in %V)\n", &now, &this->notBefore);
        }
        else
        {
                written += fprintf(stream, "ok\n");
        }
        
-       written += fprintf(stream, "                not after  %#T, ", this->notAfter, utc);
+       written += fprintf(stream, "                not after  %#T, ", &this->notAfter, utc);
        if (now > this->notAfter)
        {
-               written += fprintf(stream, "expired (since %V)\n", now, this->notAfter);
+               written += fprintf(stream, "expired (since %V)\n", &now, &this->notAfter);
        }
        else
        {
                written += fprintf(stream, "ok");
                if (now > this->notAfter - CERT_WARNING_INTERVAL * 60 * 60 * 24)
                {
-                       written += fprintf(stream, " (expires in %V)", now, this->notAfter);
+                       written += fprintf(stream, " (expires in %V)", &now, &this->notAfter);
                }
                written += fprintf(stream, " \n");
        }
@@ -1146,10 +1146,10 @@ static int print(FILE *stream, const struct printf_info *info,
        switch (this->status)
        {
                case CERT_GOOD:
-                       written += fprintf(stream, " until %#T", this->until, utc);
+                       written += fprintf(stream, " until %#T", &this->until, utc);
                        break;
                case CERT_REVOKED:
-                       written += fprintf(stream, " on %#T", this->until, utc);
+                       written += fprintf(stream, " on %#T", &this->until, utc);
                        break;
                case CERT_UNKNOWN:
                case CERT_UNDEFINED:
index cd40b64..ce3f827 100644 (file)
@@ -105,7 +105,7 @@ static int print_time(FILE *stream, const struct printf_info *info,
                "Jan", "Feb", "Mar", "Apr", "May", "Jun",
                "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
        };
-       time_t time = *((time_t*)(args[0]));
+       time_t *time = *((time_t**)(args[0]));
        bool utc = TRUE;
        struct tm t;
        
@@ -120,11 +120,11 @@ static int print_time(FILE *stream, const struct printf_info *info,
        }
        if (utc)
        {
-               gmtime_r(&time, &t);
+               gmtime_r(time, &t);
        }
        else
        {
-               localtime_r(&time, &t);
+               localtime_r(time, &t);
        }
        return fprintf(stream, "%s %02d %02d:%02d:%02d%s%04d",
                                   months[t.tm_mon], t.tm_mday, t.tm_hour, t.tm_min,
@@ -137,11 +137,12 @@ static int print_time(FILE *stream, const struct printf_info *info,
 static int print_time_delta(FILE *stream, const struct printf_info *info,
                                                        const void *const *args)
 {
-       time_t start = *((time_t*)(args[0]));
-       time_t end = *((time_t*)(args[1]));
-       u_int delta = abs(end - start);
+       time_t *start = *((time_t**)(args[0]));
+       time_t *end   = *((time_t**)(args[1]));
+       u_int delta   = abs(*end - *start);
+
        char* unit = "second";
-       
+
        if (delta > 2 * 60 * 60 * 24)
        {
                delta /= 60 * 60 * 24;
@@ -165,6 +166,6 @@ static int print_time_delta(FILE *stream, const struct printf_info *info,
  */
 static void __attribute__ ((constructor))print_register()
 {
-       register_printf_function(PRINTF_TIME, print_time, arginfo_int_alt_int_int);
-       register_printf_function(PRINTF_TIME_DELTA, print_time_delta, arginfo_int_int);
+       register_printf_function(PRINTF_TIME, print_time, arginfo_ptr_alt_ptr_int);
+       register_printf_function(PRINTF_TIME_DELTA, print_time_delta, arginfo_ptr_ptr);
 }
index e4089c4..0407e8c 100644 (file)
@@ -35,6 +35,19 @@ int arginfo_ptr(const struct printf_info *info, size_t n, int *argtypes)
 }
 
 /**
+ * arginfo handler for two prt arguments
+ */
+int arginfo_ptr_ptr(const struct printf_info *info, size_t n, int *argtypes)
+{
+       if (n > 1)
+       {
+               argtypes[0] = PA_POINTER;
+               argtypes[1] = PA_POINTER;
+       }
+       return 2;
+}
+
+/**
  * arginfo handler for one ptr, one int
  */
 int arginfo_ptr_int(const struct printf_info *info, size_t n, int *argtypes)
index 14931bd..3e47ef8 100644 (file)
@@ -36,9 +36,9 @@
 #define PRINTF_CHUNK                   'B'
 /** 2 arguments: u_char *buffer, int size */
 #define PRINTF_BYTES                   'b'
-/** 1 argument: int time; with #-modifier 2 arguments: int time, bool utc */
+/** 1 argument: time_t *time; with #-modifier 2 arguments: time_t *time, bool utc */
 #define PRINTF_TIME                            'T'
-/** 2 arguments: integer begin, int end */
+/** 2 arguments: time_t *begin, time_t *end */
 #define PRINTF_TIME_DELTA              'V'
 /** 1 argument: x509_t *cert; with #-modifier 2 arguments: x509_t *cert, bool utc */
 #define PRINTF_X509                            'Q'
@@ -63,6 +63,7 @@
  * Generic arginfo handlers for printf() hooks
  */
 int arginfo_ptr(const struct printf_info *info, size_t n, int *argtypes);
+int arginfo_ptr_ptr(const struct printf_info *info, size_t n, int *argtypes);
 int arginfo_ptr_int(const struct printf_info *info, size_t n, int *argtypes);
 int arginfo_int_int(const struct printf_info *info, size_t n, int *argtypes);
 int arginfo_ptr_alt_ptr_int(const struct printf_info *info, size_t n, int *argtypes);