Browse Source

Handle unexpected whitespace better in malformed descriptors. Bug
found using Benedikt Boss's new Tor fuzzer! Bugfix on 0.2.0.x.


svn:r11229

Roger Dingledine 17 years ago
parent
commit
05f12bffe9
2 changed files with 8 additions and 4 deletions
  1. 4 0
      ChangeLog
  2. 4 4
      src/common/util.c

+ 4 - 0
ChangeLog

@@ -1,4 +1,8 @@
 Changes in version 0.2.0.6-alpha - 2007-??-??
+  o Major bugfixes:
+    - Handle unexpected whitespace better in malformed descriptors. Bug
+      found using Benedikt Boss's new Tor fuzzer! Bugfix on 0.2.0.x.
+
   o Minor bugfixes (bridges):
     - Do not intermix bridge routers with controller-added routers. (Bugfix
       on 0.2.0.x)

+ 4 - 4
src/common/util.c

@@ -534,12 +534,12 @@ eat_whitespace_eos(const char *s, const char *eos)
   return s;
 }
 
-/** Return a pointer to the first char of s that is not a space or a tab,
- * or to the terminating NUL if no such character exists. */
+/** Return a pointer to the first char of s that is not a space or a tab
+ * or a \\r, or to the terminating NUL if no such character exists. */
 const char *
 eat_whitespace_no_nl(const char *s)
 {
-  while (*s == ' ' || *s == '\t')
+  while (*s == ' ' || *s == '\t' || *s == '\r')
     ++s;
   return s;
 }
@@ -549,7 +549,7 @@ eat_whitespace_no_nl(const char *s)
 const char *
 eat_whitespace_eos_no_nl(const char *s, const char *eos)
 {
-  while (s < eos && (*s == ' ' || *s == '\t'))
+  while (s < eos && (*s == ' ' || *s == '\t' || *s == '\r'))
     ++s;
   return s;
 }