[or-cvs] r13799: We were sometimes miscounting the number of bytes read from (in tor/branches/tor-0_2_0-patches: . src/or)

arma at seul.org arma at seul.org
Sun Mar 2 07:11:09 UTC 2008


Author: arma
Date: 2008-03-02 02:11:09 -0500 (Sun, 02 Mar 2008)
New Revision: 13799

Modified:
   tor/branches/tor-0_2_0-patches/ChangeLog
   tor/branches/tor-0_2_0-patches/src/or/buffers.c
Log:
We were sometimes miscounting the number of bytes read from the
network, causing our rate limiting to not be followed exactly. 
Bugfix on 0.2.0.16-alpha. Reported by lodger.


Modified: tor/branches/tor-0_2_0-patches/ChangeLog
===================================================================
--- tor/branches/tor-0_2_0-patches/ChangeLog	2008-03-02 05:22:23 UTC (rev 13798)
+++ tor/branches/tor-0_2_0-patches/ChangeLog	2008-03-02 07:11:09 UTC (rev 13799)
@@ -1,11 +1,16 @@
 Changes in version 0.2.0.21-rc - 2008-0?-??
-  o Bugfixes:
+  o Major bugfixes:
     - The control port should declare that it requires password auth
       when HashedControlSessionPassword is set too. Patch from Matt Edman;
       bugfix on 0.2.0.20-rc. Fixes bug 615.
     - Downgrade assert in connection_buckets_decrement() to a log message.
       This may help us solve bug 614, and in any case will make its
       symptoms less severe. Bugfix on 0.2.0.20-rc.
+    - We were sometimes miscounting the number of bytes read from the
+      network, causing our rate limiting to not be followed exactly.
+      Bugfix on 0.2.0.16-alpha. Reported by lodger.
+
+  o Minor bugfixes:
     - Fix compilation with OpenSSL 0.9.8 and 0.9.8a.  All other supported
       OpenSSL versions should have been working fine.  Diagnosis and patch
       from lodger, Karsten Loesing and Sebastian Hahn.  Fixes bug 616.

Modified: tor/branches/tor-0_2_0-patches/src/or/buffers.c
===================================================================
--- tor/branches/tor-0_2_0-patches/src/or/buffers.c	2008-03-02 05:22:23 UTC (rev 13798)
+++ tor/branches/tor-0_2_0-patches/src/or/buffers.c	2008-03-02 07:11:09 UTC (rev 13799)
@@ -635,13 +635,13 @@
     check();
     if (r < 0)
       return r; /* Error */
-    else if ((size_t)r < readlen) { /* eof, block, or no more to read. */
-      tor_assert(r+total_read < INT_MAX);
-      return (int)(r + total_read);
+    tor_assert(total_read+r < INT_MAX);
+    total_read += r;
+    if ((size_t)r < readlen) { /* eof, block, or no more to read. */
+      break;
     }
-    total_read += r;
   }
-  return r;
+  return (int)total_read;
 }
 
 /** As read_to_buf, but reads from a TLS connection, and returns a TLS
@@ -689,11 +689,12 @@
     check();
     if (r < 0)
       return r; /* Error */
-    else if ((size_t)r < readlen) /* eof, block, or no more to read. */
-      return r;
+    tor_assert(total_read+r < INT_MAX);
     total_read += r;
+    if ((size_t)r < readlen) /* eof, block, or no more to read. */
+      break;
   }
-  return r;
+  return (int)total_read;
 }
 
 /** Helper for flush_buf(): try to write <b>sz</b> bytes from chunk



More information about the tor-commits mailing list