]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Improve comments and defensive programming for 3045
authorNick Mathewson <nickm@torproject.org>
Mon, 30 May 2011 19:15:10 +0000 (15:15 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 30 May 2011 19:15:10 +0000 (15:15 -0400)
The comment fixes are trivial.  The defensive programming trick is to
tolerate receiving NULL inputs on the describe functions. That should
never actually happen, but it seems like the likeliest mistake for us
to make in the future.

src/or/router.c
src/or/router.h

index a11d3a59234a9f0304723a95fed6cd6c9e3d3719..0bd4c55026b3d9f0240ec37e8be05dd213046470 100644 (file)
@@ -2223,8 +2223,7 @@ is_legal_hexdigest(const char *s)
  * and address <b>addr</b> or <b>addr32h</b>.
  *
  * The <b>nickname</b> and <b>addr</b> fields are optional and may be set to
- * NULL.  The <b>addr32h</b> field is optional and may be set to
- * <b>addr32h</b>.
+ * NULL.  The <b>addr32h</b> field is optional and may be set to 0.
  *
  * Return a pointer to the front of <b>buf</b>.
  */
@@ -2237,6 +2236,10 @@ format_node_description(char *buf,
                         uint32_t addr32h)
 {
   char *cp;
+
+  if (!buf)
+    return "<NULL BUFFER>";
+
   buf[0] = '$';
   base16_encode(buf+1, HEX_DIGEST_LEN+1, id_digest, DIGEST_LEN);
   cp = buf+1+HEX_DIGEST_LEN;
@@ -2268,6 +2271,8 @@ format_node_description(char *buf,
 const char *
 router_get_description(char *buf, const routerinfo_t *ri)
 {
+  if (!ri)
+    return "<null>";
   return format_node_description(buf,
                                  ri->cache_info.identity_digest,
                                  ri->is_named,
@@ -2284,6 +2289,8 @@ router_get_description(char *buf, const routerinfo_t *ri)
 const char *
 routerstatus_get_description(char *buf, const routerstatus_t *rs)
 {
+  if (!rs)
+    return "<null>";
   return format_node_description(buf,
                                  rs->identity_digest,
                                  rs->is_named,
@@ -2300,6 +2307,8 @@ routerstatus_get_description(char *buf, const routerstatus_t *rs)
 const char *
 extend_info_get_description(char *buf, const extend_info_t *ei)
 {
+  if (!ei)
+    return "<null>";
   return format_node_description(buf,
                                  ei->identity_digest,
                                  0,
index 6cabfd56e8c28f79653e02495ef783d2cf1d7bfb..a285a3e7734a9a1bbba7ebe9deb4e0e85382934b 100644 (file)
@@ -86,6 +86,13 @@ int is_legal_nickname(const char *s);
 int is_legal_nickname_or_hexdigest(const char *s);
 int is_legal_hexdigest(const char *s);
 
+/**
+ * Longest allowed output of format_node_description, plus 1 character for
+ * NUL.  This allows space for:
+ * "$FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF~xxxxxxxxxxxxxxxxxxx at"
+ * " [ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255]"
+ * plus a terminating NUL.
+ */
 #define NODE_DESC_BUF_LEN (MAX_VERBOSE_NICKNAME_LEN+4+TOR_ADDR_BUF_LEN)
 const char *format_node_description(char *buf,
                                     const char *id_digest,