From: Frank Lichtenheld <[email protected]> In the first case this is about helping cppcheck remember that msg->addr_len and addr_len are the same thing, but we use them in confusing ways.
In the second case there is indeed a theoretical code path where we use an uninitialized buffer. So make the code safer. Change-Id: Ida6d4fa8c5c5ffbd7909d6afd51b1b6f32ca2d9f Signed-off-by: Frank Lichtenheld <[email protected]> Acked-by: Heiko Hund <[email protected]> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1674 --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1674 This mail reflects revision 2 of this Change. Acked-by according to Gerrit (reflected above): Heiko Hund <[email protected]> diff --git a/src/openvpnserv/interactive.c b/src/openvpnserv/interactive.c index bd310e4..781391c 100644 --- a/src/openvpnserv/interactive.c +++ b/src/openvpnserv/interactive.c @@ -1876,7 +1876,7 @@ return err; /* job done */ } - if (msg->addr_len > 0) + if (addr_len > 0) { /* prepare the comma separated address list */ /* cannot use max_addrs here as that is not considered compile @@ -2647,25 +2647,28 @@ free(wide_search_domains); } - /* Create address string list */ - CHAR addr_list[NRPT_ADDR_NUM * NRPT_ADDR_SIZE]; - PSTR pos = addr_list; - for (int i = 0; i < NRPT_ADDR_NUM && addresses[i][0]; ++i) + if (addresses[0][0]) { - if (i != 0) + /* Create address string list */ + CHAR addr_list[NRPT_ADDR_NUM * NRPT_ADDR_SIZE]; + PSTR pos = addr_list; + for (int i = 0; i < NRPT_ADDR_NUM && addresses[i][0]; ++i) { - *pos++ = ';'; + if (i != 0) + { + *pos++ = ';'; + } + strcpy(pos, addresses[i]); + pos += strlen(pos); } - strcpy(pos, addresses[i]); - pos += strlen(pos); - } - WCHAR subkey[MAX_PATH]; - swprintf(subkey, _countof(subkey), L"OpenVPNDNSRouting-%lu", ovpn_pid); - err = SetNrptRule(nrpt_key, subkey, addr_list, wide_domains, dom_size, dnssec); - if (err) - { - MsgToEventLog(M_ERR, L"%S: failed to set rule %s (%lu)", __func__, subkey, err); + WCHAR subkey[MAX_PATH]; + swprintf(subkey, _countof(subkey), L"OpenVPNDNSRouting-%lu", ovpn_pid); + err = SetNrptRule(nrpt_key, subkey, addr_list, wide_domains, dom_size, dnssec); + if (err) + { + MsgToEventLog(M_ERR, L"%S: failed to set rule %s (%lu)", __func__, subkey, err); + } } if (domains[0]) _______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
