diff --git a/apphandler.cpp b/apphandler.cpp
index ab5c604..cbbd5f4 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -325,7 +325,7 @@
 
             rev.minor = (rev.minor > 99 ? 99 : rev.minor);
             dev_id.fw[1] = rev.minor % 10 + (rev.minor / 10) * 16;
-            memcpy(&dev_id.aux, rev.d, 4);
+            std::memcpy(&dev_id.aux, rev.d, 4);
         }
 
         // IPMI Spec version 2.0
@@ -374,7 +374,7 @@
     }
 
     // Pack the actual response
-    memcpy(response, &dev_id, *data_len);
+    std::memcpy(response, &dev_id, *data_len);
 
     return rc;
 }
@@ -415,7 +415,7 @@
     selftestresults[0] = 0x56;
     selftestresults[1] = 0;
 
-    memcpy(response, selftestresults, *data_len);
+    std::memcpy(response, selftestresults, *data_len);
 
     return rc;
 }
@@ -503,7 +503,7 @@
 
             int resp_byte = strtoul(tmp_array, NULL, 16); // Convert to hex byte
             // Copy end to first
-            memcpy((void*)&resp_uuid[resp_loc], &resp_byte, 1);
+            std::memcpy((void*)&resp_uuid[resp_loc], &resp_byte, 1);
             resp_loc--;
             id_octet += 2; // Finished with the 2 chars, advance
         }
@@ -514,7 +514,7 @@
     *data_len = resp_size;
 
     // Pack the actual response
-    memcpy(response, &resp_uuid, *data_len);
+    std::memcpy(response, &resp_uuid, *data_len);
 
 finish:
     sd_bus_error_free(&error);
@@ -543,7 +543,7 @@
     *data_len = sizeof(str);
 
     // Pack the actual response
-    memcpy(response, &str, *data_len);
+    std::memcpy(response, &str, *data_len);
 
     return rc;
 }
@@ -560,7 +560,7 @@
     *data_len = strlen("THIS IS WILDCARD");
 
     // Now pack actual response
-    memcpy(response, "THIS IS WILDCARD", *data_len);
+    std::memcpy(response, "THIS IS WILDCARD", *data_len);
 
     return rc;
 }
@@ -619,7 +619,7 @@
         }
 
         *data_len = bmc_guid_len;
-        memcpy(response, &respGuid, bmc_guid_len);
+        std::memcpy(response, &respGuid, bmc_guid_len);
     }
     catch (const InternalFailure& e)
     {
