diff --git a/libpldmresponder/bios_enum_attribute.cpp b/libpldmresponder/bios_enum_attribute.cpp
index 7197553..ef03749 100644
--- a/libpldmresponder/bios_enum_attribute.cpp
+++ b/libpldmresponder/bios_enum_attribute.cpp
@@ -181,8 +181,8 @@
 
     auto it = std::find_if(valMap.begin(), valMap.end(),
                            [&valueString](const auto& typePair) {
-                               return typePair.second == valueString;
-                           });
+        return typePair.second == valueString;
+    });
     if (it == valMap.end())
     {
         return;
@@ -195,8 +195,8 @@
     const BIOSStringTable& stringTable, Table& attrTable, Table& attrValueTable,
     std::optional<std::variant<int64_t, std::string>> optAttributeValue)
 {
-    auto possibleValuesHandle =
-        getPossibleValuesHandle(stringTable, possibleValues);
+    auto possibleValuesHandle = getPossibleValuesHandle(stringTable,
+                                                        possibleValues);
     std::vector<uint8_t> defaultIndices(1, 0);
     defaultIndices[0] = getValueIndex(defaultValue, possibleValues);
 
@@ -206,10 +206,10 @@
         (uint8_t)defaultIndices.size(),       defaultIndices.data(),
     };
 
-    auto attrTableEntry =
-        table::attribute::constructEnumEntry(attrTable, &info);
-    auto [attrHandle, attrType, _] =
-        table::attribute::decodeHeader(attrTableEntry);
+    auto attrTableEntry = table::attribute::constructEnumEntry(attrTable,
+                                                               &info);
+    auto [attrHandle, attrType,
+          _] = table::attribute::decodeHeader(attrTableEntry);
 
     std::vector<uint8_t> currValueIndices(1, 0);
 
