1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/services/file_util/safe_archive_analyzer.h"
6
7 #include "base/macros.h"
8 #include "build/build_config.h"
9 #include "chrome/common/safe_browsing/archive_analyzer_results.h"
10 #include "chrome/common/safe_browsing/rar_analyzer.h"
11 #include "chrome/common/safe_browsing/zip_analyzer.h"
12
13 #if defined(OS_MAC)
14 #include "chrome/utility/safe_browsing/mac/dmg_analyzer.h"
15 #endif
16
17 SafeArchiveAnalyzer::SafeArchiveAnalyzer() = default;
18
19 SafeArchiveAnalyzer::~SafeArchiveAnalyzer() = default;
20
AnalyzeZipFile(base::File zip_file,base::File temporary_file,AnalyzeZipFileCallback callback)21 void SafeArchiveAnalyzer::AnalyzeZipFile(base::File zip_file,
22 base::File temporary_file,
23 AnalyzeZipFileCallback callback) {
24 DCHECK(temporary_file.IsValid());
25 DCHECK(zip_file.IsValid());
26
27 safe_browsing::ArchiveAnalyzerResults results;
28 safe_browsing::zip_analyzer::AnalyzeZipFile(
29 std::move(zip_file), std::move(temporary_file), &results);
30 std::move(callback).Run(results);
31 }
32
AnalyzeDmgFile(base::File dmg_file,AnalyzeDmgFileCallback callback)33 void SafeArchiveAnalyzer::AnalyzeDmgFile(base::File dmg_file,
34 AnalyzeDmgFileCallback callback) {
35 #if defined(OS_MAC)
36 DCHECK(dmg_file.IsValid());
37 safe_browsing::ArchiveAnalyzerResults results;
38 safe_browsing::dmg::AnalyzeDMGFile(std::move(dmg_file), &results);
39 std::move(callback).Run(results);
40 #else
41 NOTREACHED();
42 #endif
43 }
44
AnalyzeRarFile(base::File rar_file,base::File temporary_file,AnalyzeRarFileCallback callback)45 void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
46 base::File temporary_file,
47 AnalyzeRarFileCallback callback) {
48 DCHECK(rar_file.IsValid());
49
50 safe_browsing::ArchiveAnalyzerResults results;
51 safe_browsing::rar_analyzer::AnalyzeRarFile(
52 std::move(rar_file), std::move(temporary_file), &results);
53 std::move(callback).Run(results);
54 }
55