diff --git a/ipmi.cpp b/ipmi.cpp
index e2e0fef..92955f9 100644
--- a/ipmi.cpp
+++ b/ipmi.cpp
@@ -99,6 +99,7 @@
     /* Verify datalen is >= sizeof(request) */
     struct BmcBlobEnumerateTx request;
     auto reply = reinterpret_cast<struct BmcBlobEnumerateRx*>(replyCmdBuf);
+    (*dataLen) = 0;
 
     std::memcpy(&request, reqBuf, sizeof(request));
 
@@ -125,6 +126,7 @@
     size_t requestLen = (*dataLen);
     auto request = reinterpret_cast<const struct BmcBlobOpenTx*>(reqBuf);
     uint16_t session;
+    (*dataLen) = 0;
 
     std::string path = stringFromBuffer(
         request->blobId, (requestLen - sizeof(struct BmcBlobOpenTx)));
@@ -154,6 +156,7 @@
 {
     struct BmcBlobCloseTx request;
     std::memcpy(&request, reqBuf, sizeof(request));
+    (*dataLen) = 0;
 
     /* Attempt to close. */
     if (!mgr->close(request.sessionId))
@@ -161,7 +164,6 @@
         return IPMI_CC_UNSPECIFIED_ERROR;
     }
 
-    (*dataLen) = 0;
     return IPMI_CC_OK;
 }
 
@@ -170,6 +172,7 @@
 {
     size_t requestLen = (*dataLen);
     auto request = reinterpret_cast<const struct BmcBlobDeleteTx*>(reqBuf);
+    (*dataLen) = 0;
 
     std::string path = stringFromBuffer(
         request->blobId, (requestLen - sizeof(struct BmcBlobDeleteTx)));
@@ -184,7 +187,6 @@
         return IPMI_CC_UNSPECIFIED_ERROR;
     }
 
-    (*dataLen) = 0;
     return IPMI_CC_OK;
 }
 
@@ -215,6 +217,7 @@
 {
     size_t requestLen = (*dataLen);
     auto request = reinterpret_cast<const struct BmcBlobStatTx*>(reqBuf);
+    (*dataLen) = 0;
 
     std::string path = stringFromBuffer(
         request->blobId, (requestLen - sizeof(struct BmcBlobStatTx)));
@@ -238,6 +241,7 @@
 {
     struct BmcBlobSessionStatTx request;
     std::memcpy(&request, reqBuf, sizeof(request));
+    (*dataLen) = 0;
 
     /* Attempt to stat. */
     struct BlobMeta meta;
@@ -255,6 +259,7 @@
 {
     size_t requestLen = (*dataLen);
     auto request = reinterpret_cast<const struct BmcBlobCommitTx*>(reqBuf);
+    (*dataLen) = 0;
 
     /* Sanity check the commitDataLen */
     if (request->commitDataLen > (requestLen - sizeof(struct BmcBlobCommitTx)))
@@ -270,7 +275,6 @@
         return IPMI_CC_UNSPECIFIED_ERROR;
     }
 
-    (*dataLen) = 0;
     return IPMI_CC_OK;
 }
 
@@ -308,6 +312,7 @@
 {
     size_t requestLen = (*dataLen);
     auto request = reinterpret_cast<const struct BmcBlobWriteTx*>(reqBuf);
+    (*dataLen) = 0;
 
     uint32_t size = requestLen - sizeof(struct BmcBlobWriteTx);
     std::vector<uint8_t> data(size);
@@ -328,6 +333,7 @@
 {
     size_t requestLen = (*dataLen);
     struct BmcBlobWriteMetaTx request;
+    (*dataLen) = 0;
 
     /* Copy over the request. */
     std::memcpy(&request, reqBuf, sizeof(request));
diff --git a/main.cpp b/main.cpp
index 7bbae28..bc93ddd 100644
--- a/main.cpp
+++ b/main.cpp
@@ -53,6 +53,7 @@
         validateBlobCommand(&crc, reqBuf, replyCmdBuf, dataLen, &rc);
     if (command == nullptr)
     {
+        (*dataLen) = 0;
         return rc;
     }
 
