I've noticed this while trying to compile libvirt on my arm box.
CC rpc/libvirt_net_rpc_server_la-virnetserverclient.lo
rpc/virnetserverclient.c: In function 'virNetServerClientNewPostExecRestart':
rpc/virnetserverclient.c:516:45: error: cast increases required alignment of target type
[-Werror=cast-align]
(long long *) ×tamp) < 0) {
^
cc1: all warnings being treated as errors
Problem is, @timestap is defined as time_t which is 32 bits long,
and we are typecasting it to long long which is 64bits long.
Solution is to make @timestamp type of long long. But that could
overflow when passing the variable to
virNetServerClientNewInternal(). Well, we can do this and hope to
find a better solution for this till 19 January 2038 (yes, time_t
on my arm box is signed long int).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/rpc/virnetserverclient.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c
index d3a3a18..271930f 100644
--- a/src/rpc/virnetserverclient.c
+++ b/src/rpc/virnetserverclient.c
@@ -472,7 +472,7 @@ virNetServerClientPtr
virNetServerClientNewPostExecRestart(virJSONValuePtr objec
bool readonly;
unsigned int nrequests_max;
unsigned long long id;
- time_t timestamp;
+ long long timestamp;
if (virJSONValueObjectGetNumberInt(object, "auth", &auth) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -511,8 +511,7 @@ virNetServerClientPtr
virNetServerClientNewPostExecRestart(virJSONValuePtr objec
if (!virJSONValueObjectHasKey(object, "conn_time")) {
timestamp = 0;
} else {
- if (virJSONValueObjectGetNumberLong(object, "conn_time",
- (long long *) ×tamp) < 0) {
+ if (virJSONValueObjectGetNumberLong(object, "conn_time",
×tamp) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Malformed conn_time field in JSON "
"state document"));
--
2.8.1