Problem is, localtime_r() returns a pointer to converted time or
NULL in case of an error. But checking the glibc sources, error
will occur iff a NULL has been passed as an either of arguments
the function takes. But GCC fails to see that:
../../tools/virsh-network.c: In function 'cmdNetworkDHCPLeases':
../../tools/virsh-network.c:1370:12: error: potential null pointer dereference
[-Werror=null-dereference]
ts = *localtime_r(&expirytime_tmp, &ts);
~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
tools/virsh-network.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 22ea016..5abcda3 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -1367,7 +1367,7 @@ cmdNetworkDHCPLeases(vshControl *ctl, const vshCmd *cmd)
time_t expirytime_tmp = lease->expirytime;
struct tm ts;
char expirytime[32];
- ts = *localtime_r(&expirytime_tmp, &ts);
+ localtime_r(&expirytime_tmp, &ts);
strftime(expirytime, sizeof(expirytime), "%Y-%m-%d %H:%M:%S",
&ts);
if (lease->type == VIR_IP_ADDR_TYPE_IPV4)
--
2.8.3