}
bool send_ans_key(node_t *to) {
- char *key;
-
// Set key parameters
to->incipher = myself->incipher;
to->inkeylength = myself->inkeylength;
memset(to->late, 0, sizeof(to->late));
// Convert to hexadecimal and send
- key = alloca(2 * to->inkeylength + 1);
+ char key[2 * to->inkeylength + 1];
bin2hex(to->inkey, key, to->inkeylength);
key[to->inkeylength * 2] = '\0';
return true;
}
- if(!*address) {
+ if(!*address && from->address.sa.sa_family != AF_UNSPEC) {
char *address, *port;
ifdebug(PROTOCOL) logger(LOG_DEBUG, "Appending reflexive UDP address to ANS_KEY from %s to %s", from->name, to->name);
sockaddr2str(&from->address, &address, &port);