[Openvpn-devel,v2] Add missing check for nl_socket_alloc failure

Message ID 20230329124644.1956530-1-arne@rfc2549.org
State Superseded
Headers show
Series [Openvpn-devel,v2] Add missing check for nl_socket_alloc failure | expand

Commit Message

Arne Schwabe March 29, 2023, 12:46 p.m. UTC
This can happen if the memory alloc fails.

Patch V2: add goto error

Change-Id: Iee66caa794d267ac5f8bee584633352893047171
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
---
 src/openvpn/dco_linux.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Antonio Quartulli March 29, 2023, 1:01 p.m. UTC | #1
On 29/03/2023 14:46, Arne Schwabe wrote:
> This can happen if the memory alloc fails.
> 
> Patch V2: add goto error
> 
> Change-Id: Iee66caa794d267ac5f8bee584633352893047171
> Signed-off-by: Arne Schwabe <arne@rfc2549.org>
> ---
>   src/openvpn/dco_linux.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c
> index 41540c0f8..95fe94848 100644
> --- a/src/openvpn/dco_linux.c
> +++ b/src/openvpn/dco_linux.c
> @@ -83,6 +83,13 @@ resolve_ovpn_netlink_id(int msglevel)
>       int ret;
>       struct nl_sock *nl_sock = nl_socket_alloc();
>   
> +    if (!nl_sock)
> +    {
> +        msg(msglevel, "Allocating net link socket failed");
> +        ret = -1;

Please use -ENOMEM here - it is always better to return an actual reason 
rather than just "failed".

> +        goto err_sock;

There is no need to jump to cleanup.
You can just return -1 here and save one line.
(this is what we do in other functions of this file)

Cheers,

Patch

diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c
index 41540c0f8..95fe94848 100644
--- a/src/openvpn/dco_linux.c
+++ b/src/openvpn/dco_linux.c
@@ -83,6 +83,13 @@  resolve_ovpn_netlink_id(int msglevel)
     int ret;
     struct nl_sock *nl_sock = nl_socket_alloc();
 
+    if (!nl_sock)
+    {
+        msg(msglevel, "Allocating net link socket failed");
+        ret = -1;
+        goto err_sock;
+    }
+
     ret = genl_connect(nl_sock);
     if (ret)
     {