openvpnserv: Address some uninitVariable warnings from cppcheck

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 <frank@lichtenheld.com>
Acked-by: Heiko Hund <heiko@openvpn.net>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1674
Message-Id: <20260513150902.27447-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg36908.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
(cherry picked from commit 50bcb9206b)
This commit is contained in:
Frank Lichtenheld 2026-05-13 17:08:57 +02:00 committed by Gert Doering
parent 815a3bd87d
commit d3eb09b559

View file

@ -1868,7 +1868,7 @@ HandleDNSConfigMessage(const dns_cfg_message_t *msg, undo_lists_t *lists)
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
@ -2639,25 +2639,28 @@ SetNrptRules(HKEY nrpt_key, const nrpt_address_t *addresses, const char *domains
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])