Detect tor_addr_to_str failure in tor_dup_addr.

This avoids a possible strdup of an uninitialized buffer.

Fixes 4529; fix on 0.2.1.3-alpha; reported by troll_un.
This commit is contained in:
Nick Mathewson 2011-11-23 23:04:10 -05:00
parent fbf1c5ee79
commit 3ebe960f3f
2 changed files with 10 additions and 2 deletions

5
changes/bug4529 Normal file
View File

@ -0,0 +1,5 @@
o Minor bufixes:
- If we had ever tried to call tor_addr_to_str on an address of
unknown type, we would have done a strdup on an uninitialized
buffer. Now we won't. Fixes bug 4529; bugfix on 0.2.1.3-alpha.
Reported by "troll_un".

View File

@ -945,8 +945,11 @@ char *
tor_dup_addr(const tor_addr_t *addr) tor_dup_addr(const tor_addr_t *addr)
{ {
char buf[TOR_ADDR_BUF_LEN]; char buf[TOR_ADDR_BUF_LEN];
tor_addr_to_str(buf, addr, sizeof(buf), 0); if (tor_addr_to_str(buf, addr, sizeof(buf), 0)) {
return tor_strdup(buf); return tor_strdup(buf);
} else {
return tor_strdup("<unknown address type>");
}
} }
/** Return a string representing the address <b>addr</b>. This string is /** Return a string representing the address <b>addr</b>. This string is