Skip to content

Commit

Permalink
Remove nondeterminism in pck_packer
Browse files Browse the repository at this point in the history
PCK files (like other build products) should be deterministic based on their inputs. Removed calls to Math::rand() that are being used to generate padding.

Looks like these were introduced as part of adding encryption support, but the padding being random does not have any cryptographic significance. This can be trivially inferred since file blocks that happen to be aligned don't get padding anyway.

If there's a desire to indroduce something that functions as a nonce it should probably be added explicitly and only if encryption is enabled.
remove Math::rand() calls in editor_export_platform.cpp

follow up to make consistent with pck_packer
  • Loading branch information
ogapo committed Sep 3, 2023
1 parent fa3428f commit 067807c
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions core/io/pck_packer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ Error PCKPacker::flush(bool p_verbose) {

int header_padding = _get_pad(alignment, file->get_position());
for (int i = 0; i < header_padding; i++) {
file->store_8(Math::rand() % 256);
file->store_8(0);
}

int64_t file_base = file->get_position();
Expand Down Expand Up @@ -244,7 +244,7 @@ Error PCKPacker::flush(bool p_verbose) {

int pad = _get_pad(alignment, file->get_position());
for (int j = 0; j < pad; j++) {
file->store_8(Math::rand() % 256);
file->store_8(0);
}

count += 1;
Expand Down
4 changes: 2 additions & 2 deletions editor/export/editor_export_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ Error EditorExportPlatform::_save_pack_file(void *p_userdata, const String &p_pa

int pad = _get_pad(PCK_PADDING, pd->f->get_position());
for (int i = 0; i < pad; i++) {
pd->f->store_8(Math::rand() % 256);
pd->f->store_8(0);
}

// Store MD5 of original file.
Expand Down Expand Up @@ -1659,7 +1659,7 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b

int header_padding = _get_pad(PCK_PADDING, f->get_position());
for (int i = 0; i < header_padding; i++) {
f->store_8(Math::rand() % 256);
f->store_8(0);
}

uint64_t file_base = f->get_position();
Expand Down

0 comments on commit 067807c

Please sign in to comment.