Perhaps that'll keep the Windows compiler from thinking that you can't
ever overflow a size_t by adding 12 to it, or whatever the heck it
thinks.
* Make sure that the reply length won't overflow 32 bits if we add the
* specified amount to it. If it won't, add that amount to it.
*/
* Make sure that the reply length won't overflow 32 bits if we add the
* specified amount to it. If it won't, add that amount to it.
*/
-#define CHECK_AND_INCREASE_REPLY_LEN(itemlen) \
- if (replylen + (itemlen) < replylen) { \
+#define CHECK_AND_INCREASE_REPLY_LEN(itemlen) { \
+ size_t replylen_before = replylen; \
+\
+ replylen += (uint32)(itemlen); \
+ if (replylen < replylen_before) { \
pcap_strlcpy(errmsgbuf, "Reply length doesn't fit in 32 bits", \
sizeof (errmsgbuf)); \
goto error; \
} \
pcap_strlcpy(errmsgbuf, "Reply length doesn't fit in 32 bits", \
sizeof (errmsgbuf)); \
goto error; \
} \
- replylen += (uint32)itemlen;
static int
daemon_msg_findallif_req(uint8 ver, struct daemon_slpars *pars, uint32 plen)
static int
daemon_msg_findallif_req(uint8 ver, struct daemon_slpars *pars, uint32 plen)