[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] kdd: remove zero-length arrays
At 15:22 +0200 on 09 Jun (1591716153), Olaf Hering wrote: > Am Tue, 9 Jun 2020 13:15:49 +0100 > schrieb Tim Deegan <tim@xxxxxxx>: > > > Olaf, can you try dropping the 'payload' field from the header and > > replacing the payload[0] in pkt with payload[] ? > > In file included from kdd.c:53: > kdd.h:325:17: error: flexible array member in union > 325 | uint8_t payload[]; How tedious. Well, the only place we actually allocate one of these we already leave enough space for a max-size packet, so how about this? kdd: stop using [0] arrays to access packet contents. GCC 10 is unhappy about this, and we already use 64k buffers in the only places where packets are allocated, so move the 64k size into the packet definition. Reported-by: Olaf Hering <olaf@xxxxxxxxx> Signed-off-by: Tim Deegan <tim@xxxxxxx> --- tools/debugger/kdd/kdd.c | 4 ++-- tools/debugger/kdd/kdd.h | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git tools/debugger/kdd/kdd.c tools/debugger/kdd/kdd.c index 3ebda9b12c..a7d0976ea4 100644 --- tools/debugger/kdd/kdd.c +++ tools/debugger/kdd/kdd.c @@ -79,11 +79,11 @@ typedef struct { /* State of the debugger stub */ typedef struct { union { - uint8_t txb[sizeof (kdd_hdr) + 65536]; /* Marshalling area for tx */ + uint8_t txb[sizeof (kdd_pkt)]; /* Marshalling area for tx */ kdd_pkt txp; /* Also readable as a packet structure */ }; union { - uint8_t rxb[sizeof (kdd_hdr) + 65536]; /* Marshalling area for rx */ + uint8_t rxb[sizeof (kdd_pkt)]; /* Marshalling area for rx */ kdd_pkt rxp; /* Also readable as a packet structure */ }; unsigned int cur; /* Offset into rx where we'll put the next byte */ diff --git tools/debugger/kdd/kdd.h tools/debugger/kdd/kdd.h index bfb00ba5c5..b9a17440df 100644 --- tools/debugger/kdd/kdd.h +++ tools/debugger/kdd/kdd.h @@ -68,7 +68,6 @@ typedef struct { uint16_t len; /* Payload length, excl. header and trailing byte */ uint32_t id; /* Echoed in responses */ uint32_t sum; /* Unsigned sum of all payload bytes */ - uint8_t payload[0]; } PACKED kdd_hdr; #define KDD_PKT_CMD 0x0002 /* Debugger commands (and replies to them) */ @@ -323,7 +322,7 @@ typedef struct { kdd_msg msg; kdd_reg reg; kdd_stc stc; - uint8_t payload[0]; + uint8_t payload[65536]; }; } PACKED kdd_pkt; -- 2.26.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |