diff --git a/activation.cpp b/activation.cpp
index 8d4b202..34ff2b2 100644
--- a/activation.cpp
+++ b/activation.cpp
@@ -250,7 +250,7 @@
                 softwareServer::Activation::Activations::Failed);
         }
         else if ((rwVolumeCreated && roVolumeCreated) || // Volumes were created
-                 (ubootEnvVarsUpdated)) // Enviroment variables were updated
+                 (ubootEnvVarsUpdated)) // Environment variables were updated
         {
             Activation::activation(
                 softwareServer::Activation::Activations::Activating);
diff --git a/activation.hpp b/activation.hpp
index 6289278..51756f2 100644
--- a/activation.hpp
+++ b/activation.hpp
@@ -75,7 +75,7 @@
         bus.emit_interfaces_removed(path.c_str(), interfaces);
     }
 
-    /** @brief Overriden Priority property set function, calls freePriority
+    /** @brief Overridden Priority property set function, calls freePriority
      *         to bump the duplicated priority values.
      *
      *  @param[in] value - uint8_t
diff --git a/image_verify.cpp b/image_verify.cpp
index 99c7d2b..c8d3311 100644
--- a/image_verify.cpp
+++ b/image_verify.cpp
@@ -93,7 +93,7 @@
             return false;
         }
 
-        // image specfic publickey file name.
+        // image specific publickey file name.
         fs::path publicKeyFile(imageDirPath / PUBLICKEY_FILE_NAME);
 
         // Validate the BMC image files.
@@ -117,7 +117,7 @@
             }
         }
 
-        log<level::DEBUG>("Sucessfully completed Signature vaildation.");
+        log<level::DEBUG>("Successfully completed Signature vaildation.");
 
         return true;
     }
@@ -235,7 +235,7 @@
 
     if (result <= 0)
     {
-        log<level::ERR>("Error occured during EVP_DigestVerifyInit",
+        log<level::ERR>("Error occurred during EVP_DigestVerifyInit",
                         entry("ERRCODE=%lu", ERR_get_error()));
         elog<InternalFailure>();
     }
@@ -247,7 +247,7 @@
     result = EVP_DigestVerifyUpdate(rsaVerifyCtx.get(), dataPtr(), size);
     if (result <= 0)
     {
-        log<level::ERR>("Error occured during EVP_DigestVerifyUpdate",
+        log<level::ERR>("Error occurred during EVP_DigestVerifyUpdate",
                         entry("ERRCODE=%lu", ERR_get_error()));
         elog<InternalFailure>();
     }
@@ -263,7 +263,7 @@
     // Check the verification result.
     if (result < 0)
     {
-        log<level::ERR>("Error occured during EVP_DigestVerifyFinal",
+        log<level::ERR>("Error occurred during EVP_DigestVerifyFinal",
                         entry("ERRCODE=%lu", ERR_get_error()));
         elog<InternalFailure>();
     }
diff --git a/image_verify.hpp b/image_verify.hpp
index 5b590f4..f2387c7 100644
--- a/image_verify.hpp
+++ b/image_verify.hpp
@@ -148,7 +148,7 @@
   private:
     /**
      * @brief Function used for system level file signature validation
-     *        of image specfic publickey file and manifest file
+     *        of image specific publickey file and manifest file
      *        using the available public keys and hash functions
      *        in the system.
      *        Refer code-update documenation for more details.
