[Openvpn-devel,v2,3/5] Windows: fix wrong printf format in x_check_status

Message ID 20230207134333.52221-1-frank@lichtenheld.com
State Accepted
Headers show
Series None | expand

Commit Message

Frank Lichtenheld Feb. 7, 2023, 1:43 p.m. UTC
Relevant defines/typedefs:
typedef UINT_PTR        SOCKET;
if defined(_WIN64)
 typedef unsigned __int64 UINT_PTR;
else
 typedef unsigned int UINT_PTR;
endif
ifdef _WIN64
 define PRIuPTR  PRIu64
else
 define PRIuPTR  PRIu32
endif

Remove duplicated include of inttypes.h

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
---
 src/openvpn/error.c   | 4 ++--
 src/openvpn/syshead.h | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

v2:
 - use PRIuPTR as discussed on IRC (added relevant defines to
   commit message)
 - remove redundant include for inttypes.h from syshead.h

Comments

Lev Stipakov Feb. 7, 2023, 3:10 p.m. UTC | #1
Looks good, looked at the code test-compiled in MSVC.

Acked-by: Lev Stipakov <lstipakov@gmail.com>

ti 7. helmik. 2023 klo 15.44 Frank Lichtenheld (frank@lichtenheld.com)
kirjoitti:
>
> Relevant defines/typedefs:
> typedef UINT_PTR        SOCKET;
> if defined(_WIN64)
>  typedef unsigned __int64 UINT_PTR;
> else
>  typedef unsigned int UINT_PTR;
> endif
> ifdef _WIN64
>  define PRIuPTR  PRIu64
> else
>  define PRIuPTR  PRIu32
> endif
>
> Remove duplicated include of inttypes.h
>
> Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
> ---
>  src/openvpn/error.c   | 4 ++--
>  src/openvpn/syshead.h | 3 ++-
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> v2:
>  - use PRIuPTR as discussed on IRC (added relevant defines to
>    commit message)
>  - remove redundant include for inttypes.h from syshead.h
>
> diff --git a/src/openvpn/error.c b/src/openvpn/error.c
> index 89a08cec..a2c9aa4c 100644
> --- a/src/openvpn/error.c
> +++ b/src/openvpn/error.c
> @@ -695,14 +695,14 @@ x_check_status(int status,
>          {
>              if (extended_msg)
>              {
> -                msg(x_cs_info_level, "%s %s [%s]: %s (fd=%d,code=%d)", description,
> +                msg(x_cs_info_level, "%s %s [%s]: %s (fd=" SOCKET_PRINTF ",code=%d)", description,
>                      sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
>                      extended_msg, openvpn_strerror(my_errno, crt_error, &gc),
>                      sock ? sock->sd : -1, my_errno);
>              }
>              else
>              {
> -                msg(x_cs_info_level, "%s %s: %s (fd=%d,code=%d)", description,
> +                msg(x_cs_info_level, "%s %s: %s (fd=" SOCKET_PRINTF ",code=%d)", description,
>                      sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
>                      openvpn_strerror(my_errno, crt_error, &gc),
>                      sock ? sock->sd : -1, my_errno);
> diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h
> index fe91bc11..12ccf2f4 100644
> --- a/src/openvpn/syshead.h
> +++ b/src/openvpn/syshead.h
> @@ -48,7 +48,6 @@
>  #ifdef _MSC_VER /* Visual Studio */
>  #define __func__ __FUNCTION__
>  #define __attribute__(x)
> -#include <inttypes.h>
>  #endif
>
>  #if defined(__APPLE__)
> @@ -442,9 +441,11 @@ typedef unsigned short sa_family_t;
>   */
>  #ifdef _WIN32
>  #define SOCKET_UNDEFINED (INVALID_SOCKET)
> +#define SOCKET_PRINTF "%" PRIuPTR
>  typedef SOCKET socket_descriptor_t;
>  #else
>  #define SOCKET_UNDEFINED (-1)
> +#define SOCKET_PRINTF "%d"
>  typedef int socket_descriptor_t;
>  #endif
>
> --
> 2.34.1
>
>
>
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
Gert Doering Feb. 7, 2023, 4:54 p.m. UTC | #2
Test built on MinGW and Linux.  Haven't actually tried to trigger an error
message which would contain a fd=nnn output, but for "non windows" this
is a no-op change, and "for windows" it looks correct.

Your patch has been applied to the master and release/2.6 branch.

commit a95705be85cb1d3a5868efaeb960ec5d625d2f11 (master)
commit 37e23c9816754ceeb67d5365b639f0b37f804591 (release/2.6)
Author: Frank Lichtenheld
Date:   Tue Feb 7 14:43:33 2023 +0100

     Windows: fix wrong printf format in x_check_status

     Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
     Acked-by: Lev Stipakov <lstipakov@gmail.com>
     Message-Id: <20230207134333.52221-1-frank@lichtenheld.com>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26166.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering
Selva Nair Feb. 9, 2023, 10:24 p.m. UTC | #3
CC: list

---------- Forwarded message ---------
From: Selva Nair <selva.nair@gmail.com>
Date: Tue, Feb 7, 2023 at 11:57 AM
Subject: Re: [Openvpn-devel] [PATCH v2 3/5] Windows: fix wrong printf
format in x_check_status
To: Frank Lichtenheld <frank@lichtenheld.com>


Nitpicking:


>  - use PRIuPTR as discussed on IRC (added relevant defines to
>    commit message)
>

The most interesting value to log for SOCKET on Windows is  INVALID_SOCKET
= ~0 (i.e, -1). It will print with PRIuPTR as 18446744073709551615. PRIdPTR
which will give -1 or PRIxPTR (ffff....ffff) may be better in this case?
Though socket is a handle on Windows, I think it never gets too large to be
-ve except for this special value.

I'm fine with this too as unsigned decimals for -1 in both 32 bit and 64
bit are not hard to spot.

Selva

Patch

diff --git a/src/openvpn/error.c b/src/openvpn/error.c
index 89a08cec..a2c9aa4c 100644
--- a/src/openvpn/error.c
+++ b/src/openvpn/error.c
@@ -695,14 +695,14 @@  x_check_status(int status,
         {
             if (extended_msg)
             {
-                msg(x_cs_info_level, "%s %s [%s]: %s (fd=%d,code=%d)", description,
+                msg(x_cs_info_level, "%s %s [%s]: %s (fd=" SOCKET_PRINTF ",code=%d)", description,
                     sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
                     extended_msg, openvpn_strerror(my_errno, crt_error, &gc),
                     sock ? sock->sd : -1, my_errno);
             }
             else
             {
-                msg(x_cs_info_level, "%s %s: %s (fd=%d,code=%d)", description,
+                msg(x_cs_info_level, "%s %s: %s (fd=" SOCKET_PRINTF ",code=%d)", description,
                     sock ? proto2ascii(sock->info.proto, sock->info.af, true) : "",
                     openvpn_strerror(my_errno, crt_error, &gc),
                     sock ? sock->sd : -1, my_errno);
diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h
index fe91bc11..12ccf2f4 100644
--- a/src/openvpn/syshead.h
+++ b/src/openvpn/syshead.h
@@ -48,7 +48,6 @@ 
 #ifdef _MSC_VER /* Visual Studio */
 #define __func__ __FUNCTION__
 #define __attribute__(x)
-#include <inttypes.h>
 #endif
 
 #if defined(__APPLE__)
@@ -442,9 +441,11 @@  typedef unsigned short sa_family_t;
  */
 #ifdef _WIN32
 #define SOCKET_UNDEFINED (INVALID_SOCKET)
+#define SOCKET_PRINTF "%" PRIuPTR
 typedef SOCKET socket_descriptor_t;
 #else
 #define SOCKET_UNDEFINED (-1)
+#define SOCKET_PRINTF "%d"
 typedef int socket_descriptor_t;
 #endif