diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-04-25 15:26:20 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-04-25 15:26:24 +0000 |
commit | b9dbee430dda735b8a92d150349381a9e147c682 (patch) | |
tree | 0f8494e80a3b0cb0a755b35895a410541ed23a3c /tools/aapt2/cmd/Compile.cpp | |
parent | 7beb895d75232262d45696c43e5135a8fabb51b8 (diff) | |
parent | 776aa959c7122f23f3c58443ea1b673127ed01f2 (diff) |
Merge "AAPT2: Add better error message when processing invalid files" into oc-dev
Diffstat (limited to 'tools/aapt2/cmd/Compile.cpp')
-rw-r--r-- | tools/aapt2/cmd/Compile.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/tools/aapt2/cmd/Compile.cpp b/tools/aapt2/cmd/Compile.cpp index 423e79069eac..b93c6ecea274 100644 --- a/tools/aapt2/cmd/Compile.cpp +++ b/tools/aapt2/cmd/Compile.cpp @@ -365,6 +365,21 @@ static bool FlattenXmlToOutStream(IAaptContext* context, const StringPiece& outp return true; } +static bool IsValidFile(IAaptContext* context, const StringPiece& input_path) { + const file::FileType file_type = file::GetFileType(input_path); + if (file_type != file::FileType::kRegular && file_type != file::FileType::kSymlink) { + if (file_type == file::FileType::kDirectory) { + context->GetDiagnostics()->Error(DiagMessage(input_path) + << "resource file cannot be a directory"); + } else { + context->GetDiagnostics()->Error(DiagMessage(input_path) + << "not a valid resource file"); + } + return false; + } + return true; +} + static bool CompileXml(IAaptContext* context, const CompileOptions& options, const ResourcePathData& path_data, IArchiveWriter* writer, const std::string& output_path) { @@ -569,7 +584,8 @@ static bool CompileFile(IAaptContext* context, const CompileOptions& options, std::string error_str; Maybe<android::FileMap> f = file::MmapPath(path_data.source.path, &error_str); if (!f) { - context->GetDiagnostics()->Error(DiagMessage(path_data.source) << error_str); + context->GetDiagnostics()->Error(DiagMessage(path_data.source) << "failed to mmap file: " + << error_str); return false; } @@ -697,6 +713,11 @@ int Compile(const std::vector<StringPiece>& args) { context.GetDiagnostics()->Note(DiagMessage(path_data.source) << "processing"); } + if (!IsValidFile(&context, path_data.source.path)) { + error = true; + continue; + } + if (path_data.resource_dir == "values") { // Overwrite the extension. path_data.extension = "arsc"; |