diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.inf b/OvmfPkg/XenBusDxe/XenBusDxe.inf index f0c5db98b1..5ff1cd0484 100644 --- a/OvmfPkg/XenBusDxe/XenBusDxe.inf +++ b/OvmfPkg/XenBusDxe/XenBusDxe.inf @@ -56,6 +56,7 @@ DebugLib XenHypercallLib SynchronizationLib + PrintLib [Protocols] gEfiDriverBindingProtocolGuid diff --git a/OvmfPkg/XenBusDxe/XenStore.c b/OvmfPkg/XenBusDxe/XenStore.c index aa3ff7d301..b7ae1d0486 100644 --- a/OvmfPkg/XenBusDxe/XenStore.c +++ b/OvmfPkg/XenBusDxe/XenStore.c @@ -303,14 +303,17 @@ XenStoreJoin ( ) { CHAR8 *Buf; + UINTN BufSize; /* +1 for '/' and +1 for '\0' */ - Buf = AllocateZeroPool ( - AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2); - AsciiStrCat (Buf, DirectoryPath); - if (Node[0] != '\0') { - AsciiStrCat (Buf, "/"); - AsciiStrCat (Buf, Node); + BufSize = AsciiStrLen (DirectoryPath) + AsciiStrLen (Node) + 2; + Buf = AllocatePool (BufSize); + ASSERT (Buf != NULL); + + if (Node[0] == '\0') { + AsciiSPrint (Buf, BufSize, "%a", DirectoryPath); + } else { + AsciiSPrint (Buf, BufSize, "%a/%a", DirectoryPath, Node); } return Buf;