|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH] Make sure fixed size CHAR arrays can fit MAX_ULONGs
> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of
> Owen Smith
> Sent: 27 April 2020 11:39
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [PATCH] Make sure fixed size CHAR arrays can fit MAX_ULONGs
>
> When formatting strings with %u, make sure the target buffer is large
> enough to contain MAX_ULONG.
>
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
Acked-by: Paul Durrant <paul@xxxxxxx>
> ---
> src/xenvif/fdo.c | 4 +++-
> src/xenvif/frontend.c | 8 ++++++--
> src/xenvif/mac.c | 4 +++-
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/src/xenvif/fdo.c b/src/xenvif/fdo.c
> index 00e0c8a..896107c 100644
> --- a/src/xenvif/fdo.c
> +++ b/src/xenvif/fdo.c
> @@ -801,7 +801,7 @@ __FdoEnumerate(
>
> if (Device->Length != 0) {
> ULONG Number;
> - CHAR Prefix[sizeof ("device/vif/XX")];
> + CHAR Prefix[sizeof ("device/vif/XXXXXXXXXX")];
> PCHAR Address;
>
> Number = strtol(Device->Buffer, NULL, 10);
> @@ -811,6 +811,8 @@ __FdoEnumerate(
> "device/vif/%u",
> Number);
> ASSERT(NT_SUCCESS(status));
> + if (!NT_SUCCESS(status))
> + continue;
>
> status = XENBUS_STORE(Read,
> &Fdo->StoreInterface,
> diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
> index 0ed68df..ffd6111 100644
> --- a/src/xenvif/frontend.c
> +++ b/src/xenvif/frontend.c
> @@ -706,7 +706,7 @@ FrontendDumpAddressTable(
> switch (Frontend->AddressTable[Index].si_family) {
> case AF_INET: {
> IPV4_ADDRESS Address;
> - CHAR Node[sizeof ("ipv4/XXXXXXXX")];
> + CHAR Node[sizeof ("ipv4/XXXXXXXXXX")];
>
> RtlCopyMemory(Address.Byte,
>
> &Frontend->AddressTable[Index].Ipv4.sin_addr.s_addr,
> @@ -717,6 +717,8 @@ FrontendDumpAddressTable(
> "ipv4/%u",
> IpVersion4Count);
> ASSERT(NT_SUCCESS(status));
> + if (!NT_SUCCESS(status))
> + continue;
>
> status = XENBUS_STORE(Printf,
> &Frontend->StoreInterface,
> @@ -736,7 +738,7 @@ FrontendDumpAddressTable(
> }
> case AF_INET6: {
> IPV6_ADDRESS Address;
> - CHAR Node[sizeof ("ipv6/XXXXXXXX")];
> + CHAR Node[sizeof ("ipv6/XXXXXXXXXX")];
>
> RtlCopyMemory(Address.Byte,
>
> &Frontend->AddressTable[Index].Ipv6.sin6_addr.s6_addr,
> @@ -747,6 +749,8 @@ FrontendDumpAddressTable(
> "ipv6/%u",
> IpVersion6Count);
> ASSERT(NT_SUCCESS(status));
> + if (!NT_SUCCESS(status))
> + continue;
>
> status = XENBUS_STORE(Printf,
> &Frontend->StoreInterface,
> diff --git a/src/xenvif/mac.c b/src/xenvif/mac.c
> index 19666fe..3301ef9 100644
> --- a/src/xenvif/mac.c
> +++ b/src/xenvif/mac.c
> @@ -357,13 +357,15 @@ MacDumpAddressTable(
> "mac");
>
> for (Index = 0; Index < Count; Index++) {
> - CHAR Node[sizeof ("mac/XX")];
> + CHAR Node[sizeof ("mac/XXXXXXXXXX")];
>
> status = RtlStringCbPrintfA(Node,
> sizeof (Node),
> "mac/%u",
> Index);
> ASSERT(NT_SUCCESS(status));
> + if (!NT_SUCCESS(status))
> + continue;
>
> (VOID) XENBUS_STORE(Printf,
> &Mac->StoreInterface,
> --
> 2.16.2.windows.1
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |