BUILD.gn 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. import("//testing/libfuzzer/fuzzer_test.gni")
  2. import("//third_party/protobuf/proto_library.gni")
  3. config("maldoca_flags") {
  4. cflags = [
  5. "-Wno-c++98-compat-pedantic",
  6. "-Wno-comment",
  7. "-Wno-error=unreachable-code",
  8. "-Wno-ignored-qualifiers",
  9. "-Wno-shadow",
  10. "-Wno-sign-compare",
  11. "-Wno-unused-const-variable",
  12. "-Wno-unused-private-field",
  13. "-Wno-unused-result",
  14. ]
  15. defines = [ "MALDOCA_CHROME=1" ]
  16. }
  17. config("maldoca_chromium_config") {
  18. defines = [ "MALDOCA_IN_CHROMIUM" ]
  19. }
  20. static_library("zlibwrapper") {
  21. sources = [
  22. "src/third_party/zlibwrapper/gzipheader.cc",
  23. "src/third_party/zlibwrapper/gzipheader.h",
  24. "src/third_party/zlibwrapper/zlibwrapper.cc",
  25. "src/third_party/zlibwrapper/zlibwrapper.h",
  26. ]
  27. include_dirs = [
  28. "//third_party/maldoca/src/",
  29. "//third_party/maldoca/src/third_party/",
  30. ]
  31. deps = [
  32. ":maldoca-base",
  33. "//base",
  34. "//third_party/zlib:zlib",
  35. ]
  36. configs += [
  37. ":maldoca_chromium_config",
  38. ":maldoca_flags",
  39. ]
  40. }
  41. proto_library("feature_proto") {
  42. proto_in_dir = "//third_party/maldoca/src/third_party/tensorflow_protos"
  43. sources = [ "${proto_in_dir}/tensorflow/core/example/feature.proto" ]
  44. }
  45. proto_library("example_proto") {
  46. proto_in_dir = "//third_party/maldoca/src/third_party/tensorflow_protos"
  47. sources = [ "${proto_in_dir}/tensorflow/core/example/example.proto" ]
  48. link_deps = [ ":feature_proto" ]
  49. }
  50. proto_library("maldoca-pdf_parser-protos") {
  51. proto_in_dir = "src"
  52. sources = [
  53. "${proto_in_dir}/maldoca/pdf_parser/proto/adobe_js.proto",
  54. "${proto_in_dir}/maldoca/pdf_parser/proto/exporting_packet.proto",
  55. "${proto_in_dir}/maldoca/pdf_parser/proto/features_packet.proto",
  56. "${proto_in_dir}/maldoca/pdf_parser/proto/parser_packet.proto",
  57. "${proto_in_dir}/maldoca/pdf_parser/proto/pdf_assets.proto",
  58. "${proto_in_dir}/maldoca/pdf_parser/proto/pdf_feature.proto",
  59. "${proto_in_dir}/maldoca/pdf_parser/proto/pdfium_result.proto",
  60. ]
  61. import_dirs = [ "//third_party/tflite/src/" ]
  62. link_deps = [ ":example_proto" ]
  63. }
  64. proto_library("maldoca-antivirus-protos") {
  65. proto_in_dir = "src"
  66. sources = [ "${proto_in_dir}/maldoca/vba/antivirus/vba_feature.proto" ]
  67. }
  68. proto_library("maldoca-ole-protos") {
  69. proto_in_dir = "src"
  70. sources = [
  71. "${proto_in_dir}/maldoca/ole/proto/extract_vba_settings.proto",
  72. "${proto_in_dir}/maldoca/ole/proto/office.proto",
  73. "${proto_in_dir}/maldoca/ole/proto/ole.proto",
  74. "${proto_in_dir}/maldoca/ole/proto/ole_to_proto_settings.proto",
  75. "${proto_in_dir}/maldoca/ole/proto/ooxml.proto",
  76. "${proto_in_dir}/maldoca/ole/proto/ooxml_to_proto_settings.proto",
  77. "${proto_in_dir}/maldoca/ole/proto/vba_extraction.proto",
  78. ]
  79. }
  80. proto_library("maldoca-base-protos") {
  81. proto_in_dir = "src"
  82. sources = [ "${proto_in_dir}/maldoca/base/status_proto.proto" ]
  83. }
  84. proto_library("maldoca-service-protos") {
  85. proto_in_dir = "src"
  86. sources = [
  87. "${proto_in_dir}/maldoca/service/proto/doc_type.proto",
  88. "${proto_in_dir}/maldoca/service/proto/document_features.proto",
  89. "${proto_in_dir}/maldoca/service/proto/exported_features.proto",
  90. "${proto_in_dir}/maldoca/service/proto/maldoca_service.proto",
  91. "${proto_in_dir}/maldoca/service/proto/parsed_document.proto",
  92. "${proto_in_dir}/maldoca/service/proto/processing_config.proto",
  93. ]
  94. import_dirs = [ "//third_party/tflite/src/" ]
  95. link_deps = [
  96. ":example_proto",
  97. ":maldoca-antivirus-protos",
  98. ":maldoca-base-protos",
  99. ":maldoca-ole-protos",
  100. ":maldoca-pdf_parser-protos",
  101. ]
  102. }
  103. static_library("maldoca-base") {
  104. sources = [
  105. "src/maldoca/base/cleanup.h",
  106. "src/maldoca/base/digest.h",
  107. "src/maldoca/base/encoding_error.h",
  108. "src/maldoca/base/endian.h",
  109. "src/maldoca/base/enum_utils.h",
  110. "src/maldoca/base/file.cc",
  111. "src/maldoca/base/file.h",
  112. "src/maldoca/base/get_runfiles_dir.cc",
  113. "src/maldoca/base/get_runfiles_dir.h",
  114. "src/maldoca/base/logging.h",
  115. "src/maldoca/base/map_util.h",
  116. "src/maldoca/base/ret_check.h",
  117. "src/maldoca/base/source_location.h",
  118. "src/maldoca/base/status.h",
  119. "src/maldoca/base/status_builder.h",
  120. "src/maldoca/base/status_macros.h",
  121. "src/maldoca/base/status_payload.h",
  122. "src/maldoca/base/statusor.h",
  123. "src/maldoca/base/utf8/unicodetext.h",
  124. ]
  125. include_dirs = [ "//third_party/maldoca/src/" ]
  126. public_deps = [
  127. ":maldoca-base-protos",
  128. "//base",
  129. ]
  130. deps = [
  131. "//third_party/abseil-cpp:absl",
  132. "//third_party/boringssl",
  133. "//third_party/protobuf:protobuf_lite",
  134. "//third_party/re2",
  135. ]
  136. configs += [
  137. ":maldoca_chromium_config",
  138. ":maldoca_flags",
  139. ]
  140. }
  141. source_set("maldoca-ole") {
  142. sources = [
  143. "src/maldoca/ole/archive_handler.cc",
  144. "src/maldoca/ole/archive_handler.h",
  145. "src/maldoca/ole/data_structures.cc",
  146. "src/maldoca/ole/data_structures.h",
  147. "src/maldoca/ole/dir.cc",
  148. "src/maldoca/ole/dir.h",
  149. "src/maldoca/ole/endian_reader.cc",
  150. "src/maldoca/ole/endian_reader.h",
  151. "src/maldoca/ole/fat.cc",
  152. "src/maldoca/ole/fat.h",
  153. "src/maldoca/ole/header.cc",
  154. "src/maldoca/ole/header.h",
  155. "src/maldoca/ole/mso.cc",
  156. "src/maldoca/ole/mso.h",
  157. "src/maldoca/ole/ole_helper.cc",
  158. "src/maldoca/ole/ole_helper.h",
  159. "src/maldoca/ole/ole_to_proto.cc",
  160. "src/maldoca/ole/ole_to_proto.h",
  161. # Should only be used for debugging
  162. # "src/maldoca/ole/ole_to_proto_cli.cc",
  163. "src/maldoca/ole/ooxml_properties_extract.cc",
  164. "src/maldoca/ole/ooxml_properties_extract.h",
  165. "src/maldoca/ole/ooxml_to_proto.cc",
  166. "src/maldoca/ole/ooxml_to_proto.h",
  167. # Should only be used for debugging
  168. # "src/maldoca/ole/ooxml_to_proto_cli.cc",
  169. "src/maldoca/ole/oss_utils.cc",
  170. "src/maldoca/ole/oss_utils.h",
  171. "src/maldoca/ole/ppt.cc",
  172. "src/maldoca/ole/ppt.h",
  173. "src/maldoca/ole/property_set_stream.cc",
  174. "src/maldoca/ole/property_set_stream.h",
  175. "src/maldoca/ole/stream.cc",
  176. "src/maldoca/ole/stream.h",
  177. "src/maldoca/ole/strings_extract.cc",
  178. "src/maldoca/ole/strings_extract.h",
  179. "src/maldoca/ole/vba.cc",
  180. "src/maldoca/ole/vba.h",
  181. "src/maldoca/ole/vba_extract.cc",
  182. "src/maldoca/ole/vba_extract.h",
  183. # Should only be used for debugging
  184. # "src/maldoca/ole/vba_extractor.cc",
  185. ]
  186. include_dirs = [
  187. "//third_party/maldoca/src/",
  188. "//third_party/maldoca/src/third_party/",
  189. #"//third_party/libxml/src/include/"
  190. ]
  191. public_deps = [
  192. ":example_proto",
  193. ":maldoca-base",
  194. ":maldoca-ole-protos",
  195. ":maldoca-public-headers",
  196. "//base",
  197. "//third_party/abseil-cpp:absl",
  198. ]
  199. deps = [
  200. ":zlibwrapper",
  201. "//base",
  202. "//third_party/libxml",
  203. "//third_party/protobuf:protobuf_lite",
  204. "//third_party/re2",
  205. "//third_party/zlib:zlib",
  206. "//third_party/zlib/google:zip",
  207. ]
  208. public_configs = [
  209. ":maldoca_chromium_config",
  210. ":maldoca_flags",
  211. ]
  212. }
  213. source_set("maldoca-public-headers") {
  214. public = [
  215. "src/maldoca/service/common/office_processing_component.h",
  216. "src/maldoca/service/common/process_doc.h",
  217. "src/maldoca/service/common/process_doc_wrapper.h",
  218. "src/maldoca/service/common/processing_component.h",
  219. "src/maldoca/service/common/processing_component_factory.h",
  220. "src/maldoca/service/common/processing_pipeline.h",
  221. "src/maldoca/service/common/utils.h",
  222. ]
  223. public_deps = [
  224. ":example_proto",
  225. ":maldoca-base",
  226. ":maldoca-ole-protos",
  227. ":maldoca-service-protos",
  228. ]
  229. deps = [
  230. "//third_party/abseil-cpp:absl",
  231. "//third_party/libxml",
  232. "//third_party/protobuf:protobuf_lite",
  233. "//third_party/re2",
  234. "//third_party/zlib",
  235. ]
  236. configs += [
  237. ":maldoca_chromium_config",
  238. ":maldoca_flags",
  239. ]
  240. }
  241. static_library("maldoca") {
  242. sources = [
  243. "src/maldoca/service/common/office_processing_component.cc",
  244. "src/maldoca/service/common/process_doc.cc",
  245. "src/maldoca/service/common/process_doc_wrapper.cc",
  246. "src/maldoca/service/common/processing_component.cc",
  247. "src/maldoca/service/common/processing_component_factory.cc",
  248. "src/maldoca/service/common/processing_pipeline.cc",
  249. "src/maldoca/service/common/utils.cc",
  250. ]
  251. deps = [
  252. "//third_party/abseil-cpp:absl",
  253. "//third_party/boringssl",
  254. "//third_party/libxml",
  255. "//third_party/protobuf:protobuf_lite",
  256. "//third_party/re2",
  257. ]
  258. public_deps = [
  259. ":maldoca-base",
  260. ":maldoca-ole",
  261. ":maldoca-public-headers",
  262. ":maldoca-service-protos",
  263. ]
  264. include_dirs = [ "//third_party/maldoca/src/" ]
  265. public_configs = [
  266. ":maldoca_chromium_config",
  267. ":maldoca_flags",
  268. ]
  269. }
  270. fuzzer_test("process_doc_fuzzer") {
  271. sources =
  272. [ "//third_party/maldoca/src/maldoca/service/common/fuzz_process_doc.cc" ]
  273. include_dirs = [ "//third_party/maldoca/src/" ]
  274. deps = [
  275. ":maldoca",
  276. "//third_party/abseil-cpp:absl",
  277. ]
  278. additional_configs = [
  279. ":maldoca_flags",
  280. ":maldoca_chromium_config",
  281. ]
  282. }