[or-cvs] r9642: Make sure every error case of router_dump_router_to_string w (in tor/trunk: . src/or)

nickm at seul.org nickm at seul.org
Sat Feb 24 19:49:37 UTC 2007


Author: nickm
Date: 2007-02-24 14:49:35 -0500 (Sat, 24 Feb 2007)
New Revision: 9642

Modified:
   tor/trunk/
   tor/trunk/src/or/router.c
Log:
 r11927 at catbus:  nickm | 2007-02-24 14:49:31 -0500
 Make sure every error case of router_dump_router_to_string warns about what actually went wrong.



Property changes on: tor/trunk
___________________________________________________________________
 svk:merge ticket from /tor/trunk [r11927] on 8246c3cf-6607-4228-993b-4d95d33730f1

Modified: tor/trunk/src/or/router.c
===================================================================
--- tor/trunk/src/or/router.c	2007-02-24 19:39:18 UTC (rev 9641)
+++ tor/trunk/src/or/router.c	2007-02-24 19:49:35 UTC (rev 9642)
@@ -1242,16 +1242,20 @@
   tor_free(identity_pkey);
   tor_free(bandwidth_usage);
 
-  if (result < 0)
+  if (result < 0) {
+    log_warn(LD_BUG,"descriptor snprintf #1 ran out of room!");
     return -1;
+  }
   /* From now on, we use 'written' to remember the current length of 's'. */
   written = result;
 
   if (options->ContactInfo && strlen(options->ContactInfo)) {
     result = tor_snprintf(s+written,maxlen-written, "contact %s\n",
                           options->ContactInfo);
-    if (result<0)
+    if (result<0) {
+      log_warn(LD_BUG,"descriptor snprintf #2 ran out of room!");
       return -1;
+    }
     written += result;
   }
 
@@ -1265,24 +1269,31 @@
   }
   for ( ; tmpe; tmpe=tmpe->next) {
     result = policy_write_item(s+written, maxlen-written, tmpe);
-    if (result < 0)
+    if (result < 0) {
+      log_warn(LD_BUG,"descriptor policy_write_item ran out of room!");
       return -1;
+    }
     tor_assert(result == (int)strlen(s+written));
     written += result;
-    if (written+2 > maxlen)
+    if (written+2 > maxlen) {
+      log_warn(LD_BUG,"descriptor policy_write_item ran out of room (2)!");
       return -1;
+    }
     s[written++] = '\n';
   }
 
-  if (written+256 > maxlen) /* Not enough room for signature. */
+  if (written+256 > maxlen) { /* Not enough room for signature. */
+    log_warn(LD_BUG,"not enough room left in descriptor for signature!");
     return -1;
+  }
 
   /* Sign the directory */
   strlcpy(s+written, "router-signature\n", maxlen-written);
   written += strlen(s+written);
   s[written] = '\0';
-  if (router_get_router_hash(s, digest) < 0)
+  if (router_get_router_hash(s, digest) < 0) {
     return -1;
+  }
 
   note_crypto_pk_op(SIGN_RTR);
   if (router_append_dirobj_signature(s+written,maxlen-written,
@@ -1292,8 +1303,10 @@
   }
   written += strlen(s+written);
 
-  if (written+2 > maxlen)
+  if (written+2 > maxlen) {
+    log_warn(LD_BUG,"Not enough room to finish descriptor.");
     return -1;
+  }
   /* include a last '\n' */
   s[written] = '\n';
   s[written+1] = 0;



More information about the tor-commits mailing list