aboutsummaryrefslogtreecommitdiffstats
path: root/main/acl.c
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-14 22:32:29 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-14 22:32:29 +0000
commited3f5d37739a662cb08285e2230a7822ecc9173d (patch)
treef8f902d38011e82daa5eb6696813e6e08940de0d /main/acl.c
parent851016296bfff6fbd44631b4464d5e888105ffb2 (diff)
Fix errors where incorrect address information was printed.
ast_sockaddr_stringiy_fmt (which is call by all ast_sockaddr_stringify* functions) uses thread-local storage for storing the string that it creates. In cases where ast_sockaddr_stringify_fmt was being called twice within the same statement, the result of one call would be overwritten by the result of the other call. This usually was happening in printf-like statements and was resulting in the same stringified addressed being printed twice instead of two separate addresses. I have fixed this by using ast_strdupa on the result of stringify functions if they are used twice within the same statement. As far as I could tell, there were no instances where a pointer to the result of such a call were saved anywhere, so this is the only situation I could see where this error could occur. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@276570 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/acl.c')
-rw-r--r--main/acl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/main/acl.c b/main/acl.c
index 082048a16..663c0b225 100644
--- a/main/acl.c
+++ b/main/acl.c
@@ -529,8 +529,8 @@ int ast_ouraddrfor(const struct ast_sockaddr *them, struct ast_sockaddr *us)
}
close(s);
ast_debug(3, "For destination '%s', our source address is '%s'.\n",
- ast_sockaddr_stringify_addr(them),
- ast_sockaddr_stringify_addr(us));
+ ast_strdupa(ast_sockaddr_stringify_addr(them)),
+ ast_strdupa(ast_sockaddr_stringify_addr(us)));
ast_sockaddr_set_port(us, port);