Validate injected errors are not NoError

HandleError assumes that the error is not NoError. InjectError is
an untrusted wire command and needs to validate that NoError is not
passed.

Bug: chromium:1010703, chromium:1004368
Change-Id: Id48a877ded327a6e3a54fedb2be2c54eeca5cd3c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11780
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index 0c76a57..2a6b915 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -102,7 +102,11 @@
         if (ConsumedError(ValidateErrorType(type))) {
             return;
         }
-        mCurrentErrorScope->HandleError(type, message);
+        if (DAWN_UNLIKELY(type == dawn::ErrorType::NoError)) {
+            HandleError(dawn::ErrorType::Validation, "Invalid injected error NoError");
+            return;
+        }
+        HandleError(type, message);
     }
 
     void DeviceBase::ConsumeError(ErrorData* error) {