[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r9642: Make sure every error case of router_dump_router_to_string w (in tor/trunk: . src/or)
- To: or-cvs@xxxxxxxxxxxxx
- Subject: [or-cvs] r9642: Make sure every error case of router_dump_router_to_string w (in tor/trunk: . src/or)
- From: nickm@xxxxxxxx
- Date: Sat, 24 Feb 2007 14:49:37 -0500 (EST)
- Delivered-to: archiver@seul.org
- Delivered-to: or-cvs-outgoing@seul.org
- Delivered-to: or-cvs@seul.org
- Delivery-date: Sat, 24 Feb 2007 14:49:53 -0500
- Reply-to: or-talk@xxxxxxxxxxxxx
- Sender: owner-or-cvs@xxxxxxxxxxxxx
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@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;