diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-06-06 18:02:15 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-10-12 16:21:20 +0900 |
| commit | dec34d6c7bc0849a469ab517ad5f24e9c3ab9e4b (patch) | |
| tree | 9ff3543cb9abf82e7acaf06c4428d1ca95f3fe81 /src/load.c | |
| parent | 8f0ac27196ff103560222b236584d7e5ccfab99d (diff) | |
| download | mruby-dec34d6c7bc0849a469ab517ad5f24e9c3ab9e4b.tar.gz mruby-dec34d6c7bc0849a469ab517ad5f24e9c3ab9e4b.zip | |
Split `MRB_BINARY_FORMAT` to major and minor.
The minor versions should be upper compatible. So mere opcode, section
addition can be done without breaking compiled binary.
Diffstat (limited to 'src/load.c')
| -rw-r--r-- | src/load.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/load.c b/src/load.c index 0dc6e93fe..2002af3ab 100644 --- a/src/load.c +++ b/src/load.c @@ -525,7 +525,12 @@ read_binary_header(const uint8_t *bin, size_t bufsize, size_t *bin_size, uint16_ return MRB_DUMP_INVALID_FILE_HEADER; } - if (memcmp(header->binary_version, RITE_BINARY_FORMAT_VER, sizeof(header->binary_version)) != 0) { + /* if major version is different, they are incompatible */ + if (memcmp(header->major_version, RITE_BINARY_MAJOR_VER, sizeof(header->major_version)) != 0) { + return MRB_DUMP_INVALID_FILE_HEADER; + } + /* if minor version is different, we can accept the older version */ + if (memcmp(header->minor_version, RITE_BINARY_MINOR_VER, sizeof(header->minor_version)) <= 0) { return MRB_DUMP_INVALID_FILE_HEADER; } |
