[EFR32] Fix Storage audit - Allow storing null pointer of size 0 (#20290)

* Fix Storage audit - Allow storing null pointer of size 0

* Clarify comment
diff --git a/src/platform/EFR32/EFR32Config.cpp b/src/platform/EFR32/EFR32Config.cpp
index 74308f1..9c156ac 100644
--- a/src/platform/EFR32/EFR32Config.cpp
+++ b/src/platform/EFR32/EFR32Config.cpp
@@ -236,7 +236,6 @@
     // Get nvm3 object info.
     err = MapNvm3Error(nvm3_getObjectInfo(nvm3_defaultHandle, key, &objectType, &dataLen));
     SuccessOrExit(err);
-    VerifyOrExit(dataLen > 0, err = CHIP_ERROR_INVALID_STRING_LENGTH);
 
     if (buf != NULL)
     {
@@ -325,7 +324,7 @@
 
 CHIP_ERROR EFR32Config::WriteConfigValueStr(Key key, const char * str, size_t strLen)
 {
-    CHIP_ERROR err;
+    CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
 
     VerifyOrExit(ValidConfigKey(key), err = CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND); // Verify key id.
 
@@ -336,10 +335,6 @@
         err = MapNvm3Error(nvm3_writeData(nvm3_defaultHandle, key, str, (strLen > 0) ? strLen : 1));
         SuccessOrExit(err);
     }
-    else
-    {
-        nvm3_deleteObject(nvm3_defaultHandle, key); // no error checking here.
-    }
 
 exit:
     return err;
@@ -347,22 +342,16 @@
 
 CHIP_ERROR EFR32Config::WriteConfigValueBin(Key key, const uint8_t * data, size_t dataLen)
 {
-    CHIP_ERROR err;
+    CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
 
     VerifyOrExit(ValidConfigKey(key), err = CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND); // Verify key id.
 
-    if (data != NULL)
+    // Only write NULL pointer if the given size is 0, since in that case, nothing is read at the pointer
+    if ((data != NULL) || (dataLen == 0))
     {
-        if (dataLen > 0)
-        {
-            // Write the binary data to nvm3.
-            err = MapNvm3Error(nvm3_writeData(nvm3_defaultHandle, key, data, dataLen));
-            SuccessOrExit(err);
-        }
-    }
-    else
-    {
-        nvm3_deleteObject(nvm3_defaultHandle, key); // no error checking here.
+        // Write the binary data to nvm3.
+        err = MapNvm3Error(nvm3_writeData(nvm3_defaultHandle, key, data, dataLen));
+        SuccessOrExit(err);
     }
 
 exit: