Fix android-cloexec-fopen clang-tidy issues am: b4311a6730
Original change: https://android-review.googlesource.com/c/platform/art/+/2399021
Change-Id: Id2bda28201cba4e5f2d98bcd5bcea46bd177bfe1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/build/Android.bp b/build/Android.bp
index 49a4363..c3ee809 100644
--- a/build/Android.bp
+++ b/build/Android.bp
@@ -29,6 +29,7 @@
art_clang_tidy_errors = [
"android-cloexec-dup",
+ "android-cloexec-fopen",
"android-cloexec-open",
"bugprone-argument-comment",
"bugprone-lambda-function-name",
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index e6c3d3c..36771b3 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -2805,7 +2805,7 @@
template <typename T>
static bool ReadCommentedInputFromFile(
const char* input_filename, std::function<std::string(const char*)>* process, T* output) {
- auto input_file = std::unique_ptr<FILE, decltype(&fclose)>{fopen(input_filename, "r"), fclose};
+ auto input_file = std::unique_ptr<FILE, decltype(&fclose)>{fopen(input_filename, "re"), fclose};
if (!input_file) {
LOG(ERROR) << "Failed to open input file " << input_filename;
return false;
diff --git a/dexdump/dexdump_main.cc b/dexdump/dexdump_main.cc
index 3afee0d..0d46d6b 100644
--- a/dexdump/dexdump_main.cc
+++ b/dexdump/dexdump_main.cc
@@ -137,7 +137,7 @@
// Open alternative output file.
if (gOptions.outputFileName) {
- gOutFile = fopen(gOptions.outputFileName, "w");
+ gOutFile = fopen(gOptions.outputFileName, "we");
if (!gOutFile) {
PLOG(ERROR) << "Can't open " << gOptions.outputFileName;
return 1;
diff --git a/dexlayout/dexlayout_main.cc b/dexlayout/dexlayout_main.cc
index 12674f5..6c37b1d 100644
--- a/dexlayout/dexlayout_main.cc
+++ b/dexlayout/dexlayout_main.cc
@@ -180,7 +180,7 @@
// Open alternative output file.
FILE* out_file = stdout;
if (options.output_file_name_) {
- out_file = fopen(options.output_file_name_, "w");
+ out_file = fopen(options.output_file_name_, "we");
if (!out_file) {
PLOG(ERROR) << "Can't open " << options.output_file_name_;
return 1;
diff --git a/libnativebridge/tests/PreInitializeNativeBridge_test.cpp b/libnativebridge/tests/PreInitializeNativeBridge_test.cpp
index 149b05e..98ef30f 100644
--- a/libnativebridge/tests/PreInitializeNativeBridge_test.cpp
+++ b/libnativebridge/tests/PreInitializeNativeBridge_test.cpp
@@ -39,7 +39,7 @@
// Try to create our mount namespace.
if (unshare(CLONE_NEWNS) != -1) {
// Create a placeholder file.
- FILE* cpuinfo = fopen("./cpuinfo", "w");
+ FILE* cpuinfo = fopen("./cpuinfo", "we");
ASSERT_NE(nullptr, cpuinfo) << strerror(errno);
fprintf(cpuinfo, kTestData);
fclose(cpuinfo);
@@ -47,7 +47,7 @@
ASSERT_TRUE(PreInitializeNativeBridge("does not matter 1", "short 2"));
// Read /proc/cpuinfo
- FILE* proc_cpuinfo = fopen("/proc/cpuinfo", "r");
+ FILE* proc_cpuinfo = fopen("/proc/cpuinfo", "re");
ASSERT_NE(nullptr, proc_cpuinfo) << strerror(errno);
char buf[1024];
EXPECT_NE(nullptr, fgets(buf, sizeof(buf), proc_cpuinfo)) << "Error reading.";
diff --git a/libprofile/profile/profile_compilation_info_test.cc b/libprofile/profile/profile_compilation_info_test.cc
index 2ee34f2..dc78418 100644
--- a/libprofile/profile/profile_compilation_info_test.cc
+++ b/libprofile/profile/profile_compilation_info_test.cc
@@ -148,7 +148,7 @@
// Zip the profile content.
ScratchFile zip;
- FILE* file = fopen(zip.GetFile()->GetPath().c_str(), "wb");
+ FILE* file = fopen(zip.GetFile()->GetPath().c_str(), "wbe");
ZipWriter writer(file);
writer.StartEntry(zip_entry, zip_flags);
writer.WriteBytes(data.data(), data.size());
@@ -932,7 +932,7 @@
// Zip the profile content.
ScratchFile zip;
- FILE* file = fopen(zip.GetFile()->GetPath().c_str(), "wb");
+ FILE* file = fopen(zip.GetFile()->GetPath().c_str(), "wbe");
ZipWriter writer(file);
writer.StartEntry("primary.prof", ZipWriter::kAlign32);
writer.WriteBytes(data.data(), data.size());
diff --git a/perfetto_hprof/perfetto_hprof.cc b/perfetto_hprof/perfetto_hprof.cc
index 7731aaa..feee29f 100644
--- a/perfetto_hprof/perfetto_hprof.cc
+++ b/perfetto_hprof/perfetto_hprof.cc
@@ -509,7 +509,7 @@
}
void DumpSmaps(JavaHprofDataSource::TraceContext* ctx) {
- FILE* smaps = fopen("/proc/self/smaps", "r");
+ FILE* smaps = fopen("/proc/self/smaps", "re");
if (smaps != nullptr) {
auto trace_packet = ctx->NewTracePacket();
auto* smaps_packet = trace_packet->set_smaps_packet();
diff --git a/runtime/dex2oat_environment_test.h b/runtime/dex2oat_environment_test.h
index bc25231..3bfc792 100644
--- a/runtime/dex2oat_environment_test.h
+++ b/runtime/dex2oat_environment_test.h
@@ -250,7 +250,7 @@
ASSERT_TRUE(vdex_file->ReadFully(data.data(), data.size()));
// Zip the content.
- FILE* file = fopen(out_dm.c_str(), "wb");
+ FILE* file = fopen(out_dm.c_str(), "wbe");
ZipWriter writer(file);
writer.StartEntry("primary.vdex", ZipWriter::kAlign32);
writer.WriteBytes(data.data(), data.size());
diff --git a/tools/dmtracedump/createtesttrace.cc b/tools/dmtracedump/createtesttrace.cc
index d55b3e4..7bb5a7f 100644
--- a/tools/dmtracedump/createtesttrace.cc
+++ b/tools/dmtracedump/createtesttrace.cc
@@ -115,7 +115,7 @@
* 2 and increments by 2 for each line.
*/
void parseInputFile(const char* inputFileName) {
- FILE* inputFp = fopen(inputFileName, "r");
+ FILE* inputFp = fopen(inputFileName, "re");
if (inputFp == nullptr) {
perror(inputFileName);
exit(1);
@@ -396,7 +396,7 @@
}
void writeTrace(const char* traceFileName) {
- FILE* fp = fopen(traceFileName, "w");
+ FILE* fp = fopen(traceFileName, "we");
if (fp == nullptr) {
perror(traceFileName);
exit(1);
diff --git a/tools/dmtracedump/tracedump.cc b/tools/dmtracedump/tracedump.cc
index ecae6c1..3385f4a 100644
--- a/tools/dmtracedump/tracedump.cc
+++ b/tools/dmtracedump/tracedump.cc
@@ -1046,7 +1046,7 @@
for (int32_t i = 0; i < MAX_THREADS; i++)
traceData.depth[i] = 2; // adjust for return from start function
- FILE* dataFp = fopen(gOptions.traceFileName, "rb");
+ FILE* dataFp = fopen(gOptions.traceFileName, "rbe");
if (dataFp == nullptr) return;
DataKeys* pKeys = parseKeys(dataFp, 1);
@@ -1465,7 +1465,7 @@
snprintf(path, FILENAME_MAX, "dot-%d-%d.dot", (int32_t)time(nullptr), rand());
}
- FILE* file = fopen(path, "w+");
+ FILE* file = fopen(path, "we+");
fprintf(file, "digraph g {\nnode [shape = record,height=.1];\n");
@@ -2033,7 +2033,7 @@
DataKeys* parseDataKeys(TraceData* traceData, const char* traceFileName, uint64_t* threadTime) {
MethodEntry* caller;
- FILE* dataFp = fopen(traceFileName, "rb");
+ FILE* dataFp = fopen(traceFileName, "rbe");
if (dataFp == nullptr) return nullptr;
DataKeys* dataKeys = parseKeys(dataFp, 0);