From 274819fc94f4e437d892e7dd2074d603fceaece5 Mon Sep 17 00:00:00 2001 From: Adam Shih Date: Thu, 29 Sep 2022 15:19:27 +0800 Subject: [PATCH] move ramdump relate dumpstate to gs-common Bug: 248428203 Test: adb bugreport Change-Id: I19ffce8e883b3ab88eae1ff7373b35c0ed517aa9 --- ramdump/Android.bp | 12 ++++++++ ramdump/dump_ramdump.cpp | 53 ++++++++++++++++++++++++++++++++ ramdump/ramdump.mk | 3 ++ ramdump/sepolicy/dump_ramdump.te | 10 ++++++ ramdump/sepolicy/file_contexts | 2 ++ 5 files changed, 80 insertions(+) create mode 100644 ramdump/Android.bp create mode 100644 ramdump/dump_ramdump.cpp create mode 100644 ramdump/ramdump.mk create mode 100644 ramdump/sepolicy/dump_ramdump.te create mode 100644 ramdump/sepolicy/file_contexts diff --git a/ramdump/Android.bp b/ramdump/Android.bp new file mode 100644 index 0000000..4fd8dbb --- /dev/null +++ b/ramdump/Android.bp @@ -0,0 +1,12 @@ +cc_binary { + name: "dump_ramdump", + srcs: ["dump_ramdump.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: ["libbase"], + vendor: true, + relative_install_path: "dump", +} diff --git a/ramdump/dump_ramdump.cpp b/ramdump/dump_ramdump.cpp new file mode 100644 index 0000000..4be0c0c --- /dev/null +++ b/ramdump/dump_ramdump.cpp @@ -0,0 +1,53 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include +#include +#include +#include + +struct abl_log_header { + uint64_t i; + uint64_t size; + char buf[]; +} __attribute__((packed)); + +// Gzip binary data and dump in base64 format. Cmd to decode is also attached. +void dumpGzippedFileInBase64(const char* title, const char* file_path) { + auto cmd = android::base::StringPrintf("gzip < %s | base64", file_path); + printf("------ %s, %s\n", title, cmd.c_str()); + printf("base64 -d <i, header->size, std::string(header->buf, header->i).c_str()); + } else { + printf("*** Ramdump misc file: abl.log: File not found\n"); + } + + dumpGzippedFileInBase64("Ramdump misc file: acpm.lst (gzipped in base64)", "/mnt/vendor/ramdump/acpm.lst"); + dumpGzippedFileInBase64("Ramdump misc file: s2d.lst (gzipped in base64)", "/mnt/vendor/ramdump/s2d.lst"); + return 0; +} diff --git a/ramdump/ramdump.mk b/ramdump/ramdump.mk new file mode 100644 index 0000000..5b34a67 --- /dev/null +++ b/ramdump/ramdump.mk @@ -0,0 +1,3 @@ +PRODUCT_PACKAGES_DEBUG += dump_ramdump + +BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/ramdump/sepolicy diff --git a/ramdump/sepolicy/dump_ramdump.te b/ramdump/sepolicy/dump_ramdump.te new file mode 100644 index 0000000..8bf6ccc --- /dev/null +++ b/ramdump/sepolicy/dump_ramdump.te @@ -0,0 +1,10 @@ +pixel_bugreport(dump_ramdump) + +userdebug_or_eng(` + allow dump_ramdump mnt_vendor_file:dir search; + allow dump_ramdump vendor_shell_exec:file execute_no_trans; + allow dump_ramdump vendor_toolbox_exec:file execute_no_trans; + + allow dump_ramdump ramdump_vendor_mnt_file:dir search; + allow dump_ramdump ramdump_vendor_mnt_file:file r_file_perms; +') diff --git a/ramdump/sepolicy/file_contexts b/ramdump/sepolicy/file_contexts new file mode 100644 index 0000000..726f69d --- /dev/null +++ b/ramdump/sepolicy/file_contexts @@ -0,0 +1,2 @@ +# dumpstate +/vendor/bin/dump/dump_ramdump u:object_r:dump_ramdump_exec:s0