[Openvpn-devel,v1] Fix PASS_BY_VALUE issue in options_postprocess_mutate_le()

Message ID 20250124130000.20067-1-gert@greenie.muc.de
State Accepted
Headers show
Series [Openvpn-devel,v1] Fix PASS_BY_VALUE issue in options_postprocess_mutate_le() | expand

Commit Message

Gert Doering Jan. 24, 2025, 1 p.m. UTC
From: Gianmarco De Gregori <gianmarco@mandelbit.com>

Fix issue reported by Coverity:
CID 1641424: Performance inefficiencies (PASS_BY_VALUE)
    Passing parameter ce of type "struct connection_entry"
    (size 208 bytes) by value, which exceeds the low
    threshold of 128 bytes.

Commit 8466c2ca unintentionally introduced a performance
penalty due to passing struct connection_entry 'ce'
by value to options_postprocess_mutate_le().
fix this by passing 'ce' by address.

Change-Id: I0542df021ae0ba9c982335fed7bbd10ed326dd0f
Signed-off-by: Gianmarco De Gregori <gianmarco@mandelbit.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
---

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

Acked-by according to Gerrit (reflected above):
Gert Doering <gert@greenie.muc.de>

Comments

Gert Doering Jan. 24, 2025, 2 p.m. UTC | #1
So much of a commit message for such a small patch :-) - but of course
it makes sense.

Your patch has been applied to the master branch.

commit 8a0f297e068b6701acceafc5af92eddd18a4151b
Author: Gianmarco De Gregori
Date:   Fri Jan 24 14:00:00 2025 +0100

     Fix PASS_BY_VALUE issue in options_postprocess_mutate_le()

     Signed-off-by: Gianmarco De Gregori <gianmarco@mandelbit.com>
     Acked-by: Gert Doering <gert@greenie.muc.de>
     Message-Id: <20250124130000.20067-1-gert@greenie.muc.de>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg30566.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/src/openvpn/options.c b/src/openvpn/options.c
index c938999..bd5c056 100644
--- a/src/openvpn/options.c
+++ b/src/openvpn/options.c
@@ -3323,12 +3323,12 @@ 
 }
 
 static void
-options_postprocess_mutate_le(struct connection_entry ce, struct local_entry *le)
+options_postprocess_mutate_le(struct connection_entry *ce, struct local_entry *le)
 {
     /* use the global port if none is specified */
     if (!le->port)
     {
-        le->port = ce.local_port;
+        le->port = ce->local_port;
     }
 }
 
@@ -3777,7 +3777,7 @@ 
     {
         for (i = 0; i < o->ce.local_list->len; i++)
         {
-            options_postprocess_mutate_le(o->ce, o->ce.local_list->array[i]);
+            options_postprocess_mutate_le(&o->ce, o->ce.local_list->array[i]);
         }
     }
     else