diff --git a/ipmi.cpp b/ipmi.cpp
index 976dbd2..f1f034c 100644
--- a/ipmi.cpp
+++ b/ipmi.cpp
@@ -113,7 +113,7 @@
      * reply buffer size. */
     reply->crc = 0;
     /* Explicilty copies the NUL-terminator. */
-    std::memcpy(&reply->blobId, blobId.c_str(), blobId.length() + 1);
+    std::memcpy(reply + 1, blobId.c_str(), blobId.length() + 1);
 
     (*dataLen) = sizeof(reply->crc) + blobId.length() + 1;
 
@@ -128,8 +128,9 @@
     uint16_t session;
     (*dataLen) = 0;
 
-    std::string path = stringFromBuffer(
-        request->blobId, (requestLen - sizeof(struct BmcBlobOpenTx)));
+    std::string path =
+        stringFromBuffer(reinterpret_cast<const char*>(request + 1),
+                         requestLen - sizeof(*request));
     if (path.empty())
     {
         return IPMI_CC_REQ_DATA_LEN_INVALID;
@@ -174,8 +175,9 @@
     auto request = reinterpret_cast<const struct BmcBlobDeleteTx*>(reqBuf);
     (*dataLen) = 0;
 
-    std::string path = stringFromBuffer(
-        request->blobId, (requestLen - sizeof(struct BmcBlobDeleteTx)));
+    std::string path =
+        stringFromBuffer(reinterpret_cast<const char*>(request + 1),
+                         requestLen - sizeof(*request));
     if (path.empty())
     {
         return IPMI_CC_REQ_DATA_LEN_INVALID;
@@ -219,8 +221,9 @@
     auto request = reinterpret_cast<const struct BmcBlobStatTx*>(reqBuf);
     (*dataLen) = 0;
 
-    std::string path = stringFromBuffer(
-        request->blobId, (requestLen - sizeof(struct BmcBlobStatTx)));
+    std::string path =
+        stringFromBuffer(reinterpret_cast<const char*>(request + 1),
+                         requestLen - sizeof(*request));
     if (path.empty())
     {
         return IPMI_CC_REQ_DATA_LEN_INVALID;
@@ -268,7 +271,7 @@
     }
 
     std::vector<uint8_t> data(request->commitDataLen);
-    std::memcpy(data.data(), request->commitData, request->commitDataLen);
+    std::memcpy(data.data(), request + 1, request->commitDataLen);
 
     if (!mgr->commit(request->sessionId, data))
     {
@@ -317,7 +320,7 @@
     uint32_t size = requestLen - sizeof(struct BmcBlobWriteTx);
     std::vector<uint8_t> data(size);
 
-    std::memcpy(data.data(), request->data, size);
+    std::memcpy(data.data(), request + 1, size);
 
     /* Attempt to write the bytes. */
     if (!mgr->write(request->sessionId, request->offset, data))
diff --git a/ipmi.hpp b/ipmi.hpp
index b79b1ee..318498b 100644
--- a/ipmi.hpp
+++ b/ipmi.hpp
@@ -33,7 +33,6 @@
 struct BmcBlobEnumerateRx
 {
     uint16_t crc;
-    char blobId[];
 } __attribute__((packed));
 
 /* Used by bmcBlobOpen */
@@ -42,7 +41,6 @@
     uint8_t cmd; /* bmcBlobOpen */
     uint16_t crc;
     uint16_t flags;
-    char blobId[]; /* Must correspond to a valid blob. */
 } __attribute__((packed));
 
 struct BmcBlobOpenRx
@@ -64,7 +62,6 @@
 {
     uint8_t cmd; /* bmcBlobDelete */
     uint16_t crc;
-    char blobId[];
 } __attribute__((packed));
 
 /* Used by bmcBlobStat */
@@ -72,7 +69,6 @@
 {
     uint8_t cmd; /* bmcBlobStat */
     uint16_t crc;
-    char blobId[];
 } __attribute__((packed));
 
 struct BmcBlobStatRx
@@ -81,7 +77,6 @@
     uint16_t blobState;
     uint32_t size; /* Size in bytes of the blob. */
     uint8_t metadataLen;
-    uint8_t metadata[]; /* Optional blob-specific metadata. */
 } __attribute__((packed));
 
 /* Used by bmcBlobSessionStat */
@@ -99,7 +94,6 @@
     uint16_t crc;
     uint16_t sessionId;
     uint8_t commitDataLen;
-    uint8_t commitData[]; /* Optional blob-specific commit data. */
 } __attribute__((packed));
 
 /* Used by bmcBlobRead */
@@ -115,7 +109,6 @@
 struct BmcBlobReadRx
 {
     uint16_t crc;
-    uint8_t data[];
 } __attribute__((packed));
 
 /* Used by bmcBlobWrite */
@@ -125,7 +118,6 @@
     uint16_t crc;
     uint16_t sessionId;
     uint32_t offset; /* The byte sequence start, 0-based. */
-    uint8_t data[];
 } __attribute__((packed));
 
 /* Used by bmcBlobWriteMeta */
@@ -135,7 +127,6 @@
     uint16_t crc;
     uint16_t sessionId; /* Returned from BmcBlobOpen. */
     uint32_t offset;    /* The byte sequence start, 0-based. */
-    uint8_t data[];
 } __attribute__((packed));
 
 /**
diff --git a/test/ipmi_commit_unittest.cpp b/test/ipmi_commit_unittest.cpp
index 37ec769..d4b9c58 100644
--- a/test/ipmi_commit_unittest.cpp
+++ b/test/ipmi_commit_unittest.cpp
@@ -100,7 +100,7 @@
     req->crc = 0;
     req->sessionId = 0x54;
     req->commitDataLen = sizeof(expectedBlob);
-    std::memcpy(req->commitData, &expectedBlob[0], sizeof(expectedBlob));
+    std::memcpy(req + 1, &expectedBlob[0], sizeof(expectedBlob));
 
     dataLen = sizeof(struct BmcBlobCommitTx) + sizeof(expectedBlob);
 
diff --git a/test/ipmi_delete_unittest.cpp b/test/ipmi_delete_unittest.cpp
index afd3968..777e417 100644
--- a/test/ipmi_delete_unittest.cpp
+++ b/test/ipmi_delete_unittest.cpp
@@ -32,7 +32,7 @@
     req->cmd = static_cast<std::uint8_t>(BlobOEMCommands::bmcBlobDelete);
     req->crc = 0;
     // length() doesn't include the nul-terminator.
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobDeleteTx) + blobId.length();
 
@@ -55,7 +55,7 @@
     req->crc = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobDeleteTx) + blobId.length() + 1;
 
@@ -80,7 +80,7 @@
     req->crc = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobDeleteTx) + blobId.length() + 1;
 
diff --git a/test/ipmi_enumerate_unittest.cpp b/test/ipmi_enumerate_unittest.cpp
index 1474384..edea82b 100644
--- a/test/ipmi_enumerate_unittest.cpp
+++ b/test/ipmi_enumerate_unittest.cpp
@@ -61,6 +61,6 @@
     EXPECT_EQ(blobId.length() + 1 + sizeof(uint16_t), dataLen);
 
     rep = reinterpret_cast<struct BmcBlobEnumerateRx*>(reply);
-    EXPECT_EQ(0, std::memcmp(rep->blobId, blobId.c_str(), blobId.length() + 1));
+    EXPECT_EQ(0, std::memcmp(rep + 1, blobId.c_str(), blobId.length() + 1));
 }
 } // namespace blobs
diff --git a/test/ipmi_open_unittest.cpp b/test/ipmi_open_unittest.cpp
index 8232340..5b18631 100644
--- a/test/ipmi_open_unittest.cpp
+++ b/test/ipmi_open_unittest.cpp
@@ -35,7 +35,7 @@
     req->crc = 0;
     req->flags = 0;
     // length() doesn't include the nul-terminator.
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobOpenTx) + blobId.length();
 
@@ -59,7 +59,7 @@
     req->flags = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobOpenTx) + blobId.length() + 1;
 
@@ -87,7 +87,7 @@
     req->flags = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobOpenTx) + blobId.length() + 1;
     uint16_t returnedSession = 0x54;
diff --git a/test/ipmi_stat_unittest.cpp b/test/ipmi_stat_unittest.cpp
index 083a980..6d4d7b2 100644
--- a/test/ipmi_stat_unittest.cpp
+++ b/test/ipmi_stat_unittest.cpp
@@ -35,7 +35,7 @@
     req->cmd = static_cast<std::uint8_t>(BlobOEMCommands::bmcBlobStat);
     req->crc = 0;
     // length() doesn't include the nul-terminator.
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobStatTx) + blobId.length();
 
@@ -58,7 +58,7 @@
     req->crc = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobStatTx) + blobId.length() + 1;
 
@@ -85,7 +85,7 @@
     req->crc = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobStatTx) + blobId.length() + 1;
 
@@ -127,7 +127,7 @@
     req->crc = 0;
     // length() doesn't include the nul-terminator, request buff is initialized
     // to 0s
-    std::memcpy(req->blobId, blobId.c_str(), blobId.length());
+    std::memcpy(req + 1, blobId.c_str(), blobId.length());
 
     dataLen = sizeof(struct BmcBlobStatTx) + blobId.length() + 1;
 
diff --git a/test/ipmi_write_unittest.cpp b/test/ipmi_write_unittest.cpp
index b249ccc..229ebd3 100644
--- a/test/ipmi_write_unittest.cpp
+++ b/test/ipmi_write_unittest.cpp
@@ -31,7 +31,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteTx) + sizeof(expectedBytes);
 
@@ -60,7 +60,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteTx) + sizeof(expectedBytes);
 
diff --git a/test/ipmi_writemeta_unittest.cpp b/test/ipmi_writemeta_unittest.cpp
index d137880..dd9e742 100644
--- a/test/ipmi_writemeta_unittest.cpp
+++ b/test/ipmi_writemeta_unittest.cpp
@@ -30,7 +30,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteMetaTx) + sizeof(expectedBytes);
 
@@ -59,7 +59,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteMetaTx) + sizeof(expectedBytes);
 
diff --git a/test/process_unittest.cpp b/test/process_unittest.cpp
index 8c133e5..47359cc 100644
--- a/test/process_unittest.cpp
+++ b/test/process_unittest.cpp
@@ -132,7 +132,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteTx) + sizeof(expectedBytes);
 
@@ -161,7 +161,7 @@
     req->offset = 0x100;
 
     uint8_t expectedBytes[2] = {0x66, 0x67};
-    std::memcpy(req->data, &expectedBytes[0], sizeof(expectedBytes));
+    std::memcpy(req + 1, &expectedBytes[0], sizeof(expectedBytes));
 
     dataLen = sizeof(struct BmcBlobWriteTx) + sizeof(expectedBytes);
 
