[Openvpn-devel,v1] dco-win: fix broken ASSERT in dco_new_key

Message ID 20250929152841.177424-1-frank@lichtenheld.com
State New
Headers show
Series [Openvpn-devel,v1] dco-win: fix broken ASSERT in dco_new_key | expand

Commit Message

Frank Lichtenheld Sept. 29, 2025, 3:28 p.m. UTC
From: Lev Stipakov <lev@openvpn.net>

Commit

  e77c343 ("dco_win: In dco_new_key, document size assumptions for the integer casts")

has added an ASSERT on key-id, but didn't take into account that
key-id 0 is a perfectly valid value and is the first key-id. This
essentially broke dco-win.

Fix by adjusting ASSERT to >= 0.

Change-Id: I3b1243461ec9b6e85897f452f78dc4b05f7e126d
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1223
---

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/+/1223
This mail reflects revision 1 of this Change.

Acked-by according to Gerrit (reflected above):
Frank Lichtenheld <frank@lichtenheld.com>

Comments

Gert Doering Sept. 29, 2025, 6:50 p.m. UTC | #1
The moment you notice that you have a CI infrastructure that actually
caught the issue - and the notification went "somewhere"...

Your patch has been applied to the master branch.

commit 290a14cd9edf95f07940f63993c290dc045c2a44
Author: Lev Stipakov
Date:   Mon Sep 29 17:28:41 2025 +0200

     dco-win: fix broken ASSERT in dco_new_key

     Signed-off-by: Lev Stipakov <lev@openvpn.net>
     Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
     Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1223
     Message-Id: <20250929152841.177424-1-frank@lichtenheld.com>
     URL: https://sourceforge.net/p/openvpn/mailman/message/59240115/
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c
index 4dd307f..30307de 100644
--- a/src/openvpn/dco_win.c
+++ b/src/openvpn/dco_win.c
@@ -541,7 +541,7 @@ 
     ZeroMemory(&crypto_data, sizeof(crypto_data));
 
     crypto_data.CipherAlg = dco_get_cipher(ciphername);
-    ASSERT(keyid > 0 && keyid <= UCHAR_MAX);
+    ASSERT(keyid >= 0 && keyid <= UCHAR_MAX);
     crypto_data.KeyId = (unsigned char)keyid;
     crypto_data.PeerId = peerid;
     crypto_data.KeySlot = slot;