aboutsummaryrefslogtreecommitdiff
path: root/src/common/util.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2003-04-16 23:22:05 +0000
committerRoger Dingledine <arma@torproject.org>2003-04-16 23:22:05 +0000
commitfe1aba7f15405193e2359e4364b221c157f11a43 (patch)
tree0b4ff616170c703075174d9230e833c2722138a9 /src/common/util.c
parentf39ca8a3aa6f40562f359ebb9413b0fe8d15a44b (diff)
downloadtor-fe1aba7f15405193e2359e4364b221c157f11a43.tar.gz
tor-fe1aba7f15405193e2359e4364b221c157f11a43.zip
more cleanup
svn:r242
Diffstat (limited to 'src/common/util.c')
-rw-r--r--src/common/util.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/common/util.c b/src/common/util.c
index c448fbe894..743df0bbb1 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -3,6 +3,7 @@
/* $Id$ */
#include <stdlib.h>
+#include <limits.h>
#include "util.h"
#include "log.h"
@@ -21,6 +22,7 @@ my_gettimeofday(struct timeval *timeval)
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.");
@@ -30,7 +32,12 @@ tv_udiff(struct timeval *start, struct timeval *end)
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) {