diff --git a/third_party/ijar/ijar.cc b/third_party/ijar/ijar.cc index 1e51291d3e13d3..cb46d2c0fe2d3a 100644 --- a/third_party/ijar/ijar.cc +++ b/third_party/ijar/ijar.cc @@ -54,6 +54,8 @@ const char *TARGET_LABEL_KEY = "Target-Label: "; const size_t TARGET_LABEL_KEY_LENGTH = strlen(TARGET_LABEL_KEY); const char *INJECTING_RULE_KIND_KEY = "Injecting-Rule-Kind: "; const size_t INJECTING_RULE_KIND_KEY_LENGTH = strlen(INJECTING_RULE_KIND_KEY); +const char *DUMMY_FILE = "dummy"; +const size_t DUMMY_PATH_LENGTH = strlen(DUMMY_FILE); class JarExtractorProcessor : public ZipExtractorProcessor { public: @@ -369,7 +371,7 @@ static void OpenFilesAndProcessJar(const char *file_out, const char *file_in, abort(); } u8 output_length = - in->CalculateOutputLength() + + std::max(in->CalculateOutputLength(), 103ull + DUMMY_PATH_LENGTH) + EstimateManifestOutputSize(target_label, injecting_rule_kind); std::unique_ptr out(ZipBuilder::Create(file_out, output_length)); if (out == NULL) { @@ -388,7 +390,7 @@ static void OpenFilesAndProcessJar(const char *file_out, const char *file_in, // Add dummy file, since javac doesn't like truly empty jars. if (out->GetNumberFiles() == 0) { - out->WriteEmptyFile("dummy"); + out->WriteEmptyFile(DUMMY_FILE); } // Finish writing the output file if (out->Finish() < 0) {