diff --git a/tools/lpc.cpp b/tools/lpc.cpp
index 7a5faa2..3d6bc4b 100644
--- a/tools/lpc.cpp
+++ b/tools/lpc.cpp
@@ -28,8 +28,8 @@
     LpcRegion host_lpc_buf;
 
     /* TODO: Remove hard-coded configuration used with test machine. */
-    host_lpc_buf.address = 0xfedc1000;
-    host_lpc_buf.length = 0x1000;
+    host_lpc_buf.address = address;
+    host_lpc_buf.length = length;
 
     std::vector<std::uint8_t> payload(sizeof(host_lpc_buf));
     std::memcpy(payload.data(), &host_lpc_buf, sizeof(host_lpc_buf));
diff --git a/tools/lpc.hpp b/tools/lpc.hpp
index 7343648..32e1d8c 100644
--- a/tools/lpc.hpp
+++ b/tools/lpc.hpp
@@ -22,7 +22,7 @@
 {
   public:
     LpcDataHandler(ipmiblob::BlobInterface* blob, HostIoInterface* io,
-                   long address, long length,
+                   std::uint32_t address, std::uint32_t length,
                    const internal::Sys* sys = &internal::sys_impl) :
         blob(blob),
         io(io), address(address), length(length), sys(sys){};
@@ -36,8 +36,8 @@
   private:
     ipmiblob::BlobInterface* blob;
     HostIoInterface* io;
-    long address;
-    long length;
+    std::uint32_t address;
+    std::uint32_t length;
     const internal::Sys* sys;
 };
 
diff --git a/tools/main.cpp b/tools/main.cpp
index ff00dd4..c944899 100644
--- a/tools/main.cpp
+++ b/tools/main.cpp
@@ -33,6 +33,7 @@
 #include <ipmiblob/blob_handler.hpp>
 #include <ipmiblob/ipmi_handler.hpp>
 #include <iterator>
+#include <limits>
 #include <memory>
 #include <string>
 #include <vector>
@@ -78,6 +79,8 @@
     char* valueEnd = nullptr;
     long address = 0;
     long length = 0;
+    std::uint32_t hostAddress = 0;
+    std::uint32_t hostLength = 0;
 
     while (1)
     {
@@ -133,6 +136,13 @@
                     usage(argv[0]);
                     exit(EXIT_FAILURE);
                 }
+                if (address > std::numeric_limits<std::uint32_t>::max())
+                {
+                    std::fprintf(stderr, "Address beyond 32-bit limit.\n");
+                    usage(argv[0]);
+                    exit(EXIT_FAILURE);
+                }
+                hostAddress = static_cast<std::uint32_t>(address);
                 break;
             case 'l':
                 length = std::strtol(&optarg[0], &valueEnd, 0);
@@ -141,6 +151,13 @@
                     usage(argv[0]);
                     exit(EXIT_FAILURE);
                 }
+                if (length > std::numeric_limits<std::uint32_t>::max())
+                {
+                    std::fprintf(stderr, "Length beyond 32-bit limit.\n");
+                    usage(argv[0]);
+                    exit(EXIT_FAILURE);
+                }
+                hostLength = static_cast<std::uint32_t>(length);
                 break;
             default:
                 usage(argv[0]);
@@ -177,13 +194,13 @@
         }
         else if (interface == IPMILPC)
         {
-            if (address == 0 || length == 0)
+            if (hostAddress == 0 || hostLength == 0)
             {
                 std::fprintf(stderr, "Address or Length were 0\n");
                 exit(EXIT_FAILURE);
             }
             handler = std::make_unique<host_tool::LpcDataHandler>(
-                &blob, &devmem, address, length);
+                &blob, &devmem, hostAddress, hostLength);
         }
         else if (interface == IPMIPCI)
         {
diff --git a/tools/test/tools_lpc_unittest.cpp b/tools/test/tools_lpc_unittest.cpp
index 4a18273..ef8e93e 100644
--- a/tools/test/tools_lpc_unittest.cpp
+++ b/tools/test/tools_lpc_unittest.cpp
@@ -18,7 +18,7 @@
     ipmiblob::BlobInterfaceMock blobMock;
     HostIoInterfaceMock ioMock;
 
-    LpcDataHandler handler(&blobMock, &ioMock, 0, 0, &sysMock);
+    LpcDataHandler handler(&blobMock, &ioMock, 0xfedc1000, 0x1000, &sysMock);
     std::uint16_t session = 0xbeef;
     std::string filePath = "/asdf";
 
