]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[iphone] Add missing va_start()/va_end() around reused argument list
authorMichael Brown <mcb30@ipxe.org>
Tue, 24 Oct 2023 10:43:56 +0000 (11:43 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 24 Oct 2023 10:43:56 +0000 (11:43 +0100)
The ipair_tx() function uses a va_list twice (first to calculate the
formatted string length before allocation, then to construct the
string in the allocated buffer) but is missing the va_start() and
va_end() around the second usage.  This is undefined behaviour that
happens to work on some build platforms.

Fix by adding the missing va_start() and va_end() around the second
usage of the variadic argument list.

Reported-by: Andreas Hammarskjöld <andreas@2PintSoftware.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/net/iphone.c

index 7d0eb4b646498031957b4c77e341ce96b0b2d3f4..bbac527bdd538ad234dfd9887424f84088788682 100644 (file)
@@ -1304,7 +1304,9 @@ ipair_tx ( struct ipair *ipair, const char *fmt, ... ) {
        memset ( hdr, 0, sizeof ( *hdr ) );
        hdr->len = htonl ( len );
        msg = iob_put ( iobuf, len );
+       va_start ( args, fmt );
        vsnprintf ( msg, len, fmt, args );
+       va_end ( args );
        DBGC2 ( ipair, "IPAIR %p transmitting:\n%s\n", ipair, msg );
 
        /* Transmit message */