hs: Fix issues found by coverity

They've been mostly already fixed except on in the branch attached to this ticket.

However, that one is a mystery to me, in test_hs_descriptor.c:

206               char *addr1 = tor_addr_to_str_dup(&ls1->u.ap.addr),
207                    *addr2 = tor_addr_to_str_dup(&ls2->u.ap.addr);
>>>     CID 1375997:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "addr1" going out of scope leaks the storage it points to.
208               tt_str_op(addr1, OP_EQ, addr2);
209               tor_free(addr1);
210               tor_free(addr2);

(Same goes for addr2)

Is this about the fact that if tt_str_op() is triggered, we go to the done: label and then it leaks? I would be surprised as we often do that in test that is we assert and then we free.