]> xenbits.xensource.com Git - pvdrivers/win/xenvif.git/commitdiff
Make sure fixed size CHAR arrays can fit MAX_ULONGs
authorOwen Smith <owen.smith@citrix.com>
Mon, 27 Apr 2020 10:38:47 +0000 (11:38 +0100)
committerPaul Durrant <pdurrant@amazon.com>
Mon, 27 Apr 2020 11:35:27 +0000 (12:35 +0100)
When formatting strings with %u, make sure the target buffer is large
enough to contain MAX_ULONG.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xenvif/fdo.c
src/xenvif/frontend.c
src/xenvif/mac.c

index 00e0c8a579adf8868eb54994ad414454e1d09fd9..896107cfec32ab7db074484aae3021d2dae7497c 100644 (file)
@@ -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,
index 0ed68dfa5e2989c33b0abd79fa02cb5fbde1cea5..ffd611120adf3375bdef5b6f9e41519293bf3065 100644 (file)
@@ -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,
index 19666fe8af682dde158904152127a0512d700470..3301ef96e45fb08c5c05a44b68b5fd330add610b 100644 (file)
@@ -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,