if (crypto_cipher_evp_cipher(env->type, 1)) {
RETURN_SSL_OUTCOME(EVP_EncryptInit((EVP_CIPHER_CTX *)env->aux,
- crypto_cipher_evp_cipher(env->type, 1),
- env->key, env->iv));
+ crypto_cipher_evp_cipher(env->type, 1),
+ env->key, env->iv));
} else {
return -1;
}
if (crypto_cipher_evp_cipher(env->type, 0)) {
RETURN_SSL_OUTCOME(EVP_EncryptInit((EVP_CIPHER_CTX *)env->aux,
- crypto_cipher_evp_cipher(env->type, 0),
- env->key, env->iv));
+ crypto_cipher_evp_cipher(env->type, 0),
+ env->key, env->iv));
} else {
return -1;
}
/* $Id$ */
#include <stdlib.h>
+#include <limits.h>
#include "util.h"
#include "log.h"
long
tv_udiff(struct timeval *start, struct timeval *end)
{
+ long udiff;
long secdiff = end->tv_sec - start->tv_sec;
if (secdiff+1 > LONG_MAX/1000000) {
log(LOG_NOTICE, "tv_udiff(): comparing times too far apart.");
end->tv_sec--;
end->tv_usec += 1000000L;
}
- return secdiff*1000000L + (end->tv_usec - start->tv_usec);
+ udiff = secdiff*1000000L + (end->tv_usec - start->tv_usec);
+ if(udiff < 0) {
+ log(LOG_NOTICE, "tv_udiff(): start is after end. Returning 0.");
+ return 0;
+ }
+ return udiff;
}
int tv_cmp(struct timeval *a, struct timeval *b) {