Report uncrypt errors in details
Add the error codes for uncrypt and report the failure details in uncrypt_status. Test: uncrypt_error logs correctly in last_install Bug: 31603820 Change-Id: I8e0de845ce1707b6f8f5ae84564c5e93fd5f5ef5 (cherry picked from commit 0c68675f5ae80cd669e0bf014a69689b6fe08eee)
This commit is contained in:
parent
b0d0ee3c7d
commit
68fc81e860
3 changed files with 14 additions and 25 deletions
|
@ -46,7 +46,7 @@ enum CauseCode {
|
||||||
|
|
||||||
enum UncryptErrorCode {
|
enum UncryptErrorCode {
|
||||||
kUncryptNoError = -1,
|
kUncryptNoError = -1,
|
||||||
kUncryptErrorHolder = 50,
|
kUncryptErrorPlaceholder = 50,
|
||||||
kUncryptTimeoutError = 100,
|
kUncryptTimeoutError = 100,
|
||||||
kUncryptFileRemoveError,
|
kUncryptFileRemoveError,
|
||||||
kUncryptFileOpenError,
|
kUncryptFileOpenError,
|
||||||
|
|
|
@ -536,7 +536,7 @@ install_package(const char* path, bool* wipe_cache, const char* install_file,
|
||||||
std::string uncrypt_status;
|
std::string uncrypt_status;
|
||||||
if (!android::base::ReadFileToString(UNCRYPT_STATUS, &uncrypt_status)) {
|
if (!android::base::ReadFileToString(UNCRYPT_STATUS, &uncrypt_status)) {
|
||||||
PLOG(WARNING) << "failed to read uncrypt status";
|
PLOG(WARNING) << "failed to read uncrypt status";
|
||||||
} else if (!android::base::StartsWith(uncrypt_status, "uncrypt_:")) {
|
} else if (!android::base::StartsWith(uncrypt_status, "uncrypt_")) {
|
||||||
PLOG(WARNING) << "corrupted uncrypt_status: " << uncrypt_status;
|
PLOG(WARNING) << "corrupted uncrypt_status: " << uncrypt_status;
|
||||||
} else {
|
} else {
|
||||||
log_buffer.push_back(android::base::Trim(uncrypt_status));
|
log_buffer.push_back(android::base::Trim(uncrypt_status));
|
||||||
|
|
|
@ -452,22 +452,23 @@ static int uncrypt(const char* input_path, const char* map_file, const int socke
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool uncrypt_wrapper(const char* input_path, const char* map_file, const int socket) {
|
static void log_uncrypt_error_code(UncryptErrorCode error_code) {
|
||||||
// Initialize the uncrypt error to kUncryptErrorHolder.
|
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
||||||
"uncrypt_error: %d\n", kUncryptErrorHolder), UNCRYPT_STATUS)) {
|
"uncrypt_error: %d\n", error_code), UNCRYPT_STATUS)) {
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool uncrypt_wrapper(const char* input_path, const char* map_file, const int socket) {
|
||||||
|
// Initialize the uncrypt error to kUncryptErrorPlaceholder.
|
||||||
|
log_uncrypt_error_code(kUncryptErrorPlaceholder);
|
||||||
|
|
||||||
std::string package;
|
std::string package;
|
||||||
if (input_path == nullptr) {
|
if (input_path == nullptr) {
|
||||||
if (!find_uncrypt_package(UNCRYPT_PATH_FILE, &package)) {
|
if (!find_uncrypt_package(UNCRYPT_PATH_FILE, &package)) {
|
||||||
write_status_to_socket(-1, socket);
|
write_status_to_socket(-1, socket);
|
||||||
// Overwrite the error message.
|
// Overwrite the error message.
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
log_uncrypt_error_code(kUncryptPackageMissingError);
|
||||||
"uncrypt_error: %d\n", kUncryptPackageMissingError), UNCRYPT_STATUS)) {
|
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
input_path = package.c_str();
|
input_path = package.c_str();
|
||||||
|
@ -586,10 +587,7 @@ int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fstab = read_fstab()) == nullptr) {
|
if ((fstab = read_fstab()) == nullptr) {
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
log_uncrypt_error_code(kUncryptFstabReadError);
|
||||||
"uncrypt_error: %d\n", kUncryptFstabReadError), UNCRYPT_STATUS)) {
|
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,30 +596,21 @@ int main(int argc, char** argv) {
|
||||||
android::base::unique_fd service_socket(android_get_control_socket(UNCRYPT_SOCKET.c_str()));
|
android::base::unique_fd service_socket(android_get_control_socket(UNCRYPT_SOCKET.c_str()));
|
||||||
if (service_socket == -1) {
|
if (service_socket == -1) {
|
||||||
PLOG(ERROR) << "failed to open socket \"" << UNCRYPT_SOCKET << "\"";
|
PLOG(ERROR) << "failed to open socket \"" << UNCRYPT_SOCKET << "\"";
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
log_uncrypt_error_code(kUncryptSocketOpenError);
|
||||||
"uncrypt_error: %d\n", kUncryptSocketOpenError), UNCRYPT_STATUS)) {
|
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fcntl(service_socket, F_SETFD, FD_CLOEXEC);
|
fcntl(service_socket, F_SETFD, FD_CLOEXEC);
|
||||||
|
|
||||||
if (listen(service_socket, 1) == -1) {
|
if (listen(service_socket, 1) == -1) {
|
||||||
PLOG(ERROR) << "failed to listen on socket " << service_socket.get();
|
PLOG(ERROR) << "failed to listen on socket " << service_socket.get();
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
log_uncrypt_error_code(kUncryptSocketListenError);
|
||||||
"uncrypt_error: %d\n", kUncryptSocketListenError), UNCRYPT_STATUS)) {
|
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
android::base::unique_fd socket_fd(accept4(service_socket, nullptr, nullptr, SOCK_CLOEXEC));
|
android::base::unique_fd socket_fd(accept4(service_socket, nullptr, nullptr, SOCK_CLOEXEC));
|
||||||
if (socket_fd == -1) {
|
if (socket_fd == -1) {
|
||||||
PLOG(ERROR) << "failed to accept on socket " << service_socket.get();
|
PLOG(ERROR) << "failed to accept on socket " << service_socket.get();
|
||||||
if (!android::base::WriteStringToFile(android::base::StringPrintf(
|
log_uncrypt_error_code(kUncryptSocketAcceptError);
|
||||||
"uncrypt_error: %d\n", kUncryptSocketAcceptError), UNCRYPT_STATUS)) {
|
|
||||||
PLOG(WARNING) << "failed to write to " << UNCRYPT_STATUS;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue