Report uncrypt errors in details

am: 68fc81e860

Change-Id: I57eff7b0aaa388c32dc8e99318e68ca25ff5c02d
This commit is contained in:
Tianjie Xu
2016-09-29 19:44:26 +00:00
committed by android-build-merger
3 changed files with 14 additions and 25 deletions

View File

@@ -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,

View File

@@ -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));

View File

@@ -457,22 +457,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();
@@ -591,10 +592,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;
} }
@@ -614,30 +612,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;
} }