Fixed struct sockaddr memory issues

Test: fixed docker yang repo copy
Test: disable restconf-callhome for fcgi
This commit is contained in:
Olof hagsand 2022-07-31 10:11:51 +02:00
parent 7d8ddf7697
commit 3a9b276deb
9 changed files with 36 additions and 48 deletions

View file

@ -841,7 +841,8 @@ restconf_socket_init(const char *netns0,
int *ss)
{
int retval = -1;
struct sockaddr sa = {0,};
struct sockaddr_in6 sin6 = {0,}; // because its larger than sin and sa
struct sockaddr *sa = (struct sockaddr *)&sin6;
size_t sa_len;
const char *netns;
@ -851,9 +852,9 @@ restconf_socket_init(const char *netns0,
netns = NULL;
else
netns = netns0;
if (clixon_inet2sin(addrtype, addrstr, port, &sa, &sa_len) < 0)
if (clixon_inet2sin(addrtype, addrstr, port, sa, &sa_len) < 0)
goto done;
if (clixon_netns_socket(netns, &sa, sa_len, backlog, flags, addrstr, ss) < 0)
if (clixon_netns_socket(netns, sa, sa_len, backlog, flags, addrstr, ss) < 0)
goto done;
clicon_debug(1, "%s ss=%d", __FUNCTION__, *ss);
retval = 0;

View file

@ -1060,7 +1060,8 @@ restconf_callhome_timer(int fd,
struct timeval t;
struct timeval t1 = {1, 0}; // XXX once every second
restconf_socket *rs;
struct sockaddr sa = {0,};
struct sockaddr_in6 sin6 = {0,}; // because its larger than sin and sa
struct sockaddr *sa = (struct sockaddr *)&sin6;
size_t sa_len;
int s;
@ -1071,14 +1072,14 @@ restconf_callhome_timer(int fd,
goto done;
}
h = rs->rs_h;
if (clixon_inet2sin(rs->rs_addrtype, rs->rs_addrstr, rs->rs_port, &sa, &sa_len) < 0)
if (clixon_inet2sin(rs->rs_addrtype, rs->rs_addrstr, rs->rs_port, sa, &sa_len) < 0)
goto done;
if ((s = socket(sa.sa_family, SOCK_STREAM, 0)) < 0) {
if ((s = socket(sa->sa_family, SOCK_STREAM, 0)) < 0) {
clicon_err(OE_UNIX, errno, "socket");
goto done;
}
clicon_debug(1, "%s connect", __FUNCTION__);
if (connect(s, &sa, sa_len) < 0){
if (connect(s, sa, sa_len) < 0){
close(s);
/* Fail: Initiate new timer */
timeradd(&now, &t1, &t);