summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OvmfPkg/XenBusDxe/XenBusDxe.inf1
-rw-r--r--OvmfPkg/XenBusDxe/XenStore.c15
2 files changed, 10 insertions, 6 deletions
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;