Skip to content

Commit 94605b1

Browse files
tniessenjuanarbol
authored andcommitted
src: replace unreachable code with static_assert
This function base64-decodes a given JavaScript string to obtain the secret key, whose length must not exceed INT_MAX. However, because JavaScript strings are limited to v8::String::kMaxLength chars and because base64 decoding never yields more bytes than input chars, the size of the decoded key must be strictly less than v8::String::kMaxLength bytes. Therefore, it is sufficient to statically assert that String::kMaxLength <= INT_MAX (which is always true because String::kMaxLength itself is an int). Aside from being unreachable, Coverity considers the current code "suspicious" because it indicates that buffers larger than INT_MAX might actually be allocated. PR-URL: #46209 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Minwoo Jung <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Filip Skokan <[email protected]>
1 parent 3e70b7d commit 94605b1

File tree

1 file changed

+1
-5
lines changed

1 file changed

+1
-5
lines changed

src/crypto/crypto_keys.cc

+1-5
Original file line numberDiff line numberDiff line change
@@ -479,12 +479,8 @@ std::shared_ptr<KeyObjectData> ImportJWKSecretKey(
479479
return std::shared_ptr<KeyObjectData>();
480480
}
481481

482+
static_assert(String::kMaxLength <= INT_MAX);
482483
ByteSource key_data = ByteSource::FromEncodedString(env, key.As<String>());
483-
if (key_data.size() > INT_MAX) {
484-
THROW_ERR_CRYPTO_INVALID_KEYLEN(env);
485-
return std::shared_ptr<KeyObjectData>();
486-
}
487-
488484
return KeyObjectData::CreateSecret(std::move(key_data));
489485
}
490486

0 commit comments

Comments
 (0)