Browse Source

fix: big endian bug in V8 serialization (#44776)

Charles Kerr 5 months ago
parent
commit
4fd1b5b186
1 changed files with 7 additions and 6 deletions
  1. 7 6
      shell/common/v8_util.cc

+ 7 - 6
shell/common/v8_util.cc

@@ -4,6 +4,7 @@
 
 #include "shell/common/v8_util.h"
 
+#include <cstdint>
 #include <utility>
 #include <vector>
 
@@ -20,11 +21,11 @@
 namespace electron {
 
 namespace {
-enum SerializationTag {
-  kNativeImageTag = 'i',
-  kTrailerOffsetTag = 0xFE,
-  kVersionTag = 0xFF
-};
+
+constexpr uint8_t kNativeImageTag = 'i';
+constexpr uint8_t kTrailerOffsetTag = 0xFE;
+constexpr uint8_t kVersionTag = 0xFF;
+
 }  // namespace
 
 class V8Serializer : public v8::ValueSerializer::Delegate {
@@ -104,7 +105,7 @@ class V8Serializer : public v8::ValueSerializer::Delegate {
   }
 
  private:
-  void WriteTag(SerializationTag tag) { serializer_.WriteRawBytes(&tag, 1); }
+  void WriteTag(const uint8_t tag) { serializer_.WriteRawBytes(&tag, 1U); }
 
   void WriteBlinkEnvelope(uint32_t blink_version) {
     // Write a dummy blink version envelope for compatibility with