Merge "Allow uncrypt to work without socket communication" am: 4c1f3eda98
am: f2574b8206
Change-Id: I81b174662c620a4af2f7992f37ffd402e92657e7
This commit is contained in:
@@ -210,6 +210,11 @@ static const char* find_block_device(const char* path, bool* encryptable, bool*
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool write_status_to_socket(int status, int socket) {
|
static bool write_status_to_socket(int status, int socket) {
|
||||||
|
// If socket equals -1, uncrypt is in debug mode without socket communication.
|
||||||
|
// Skip writing and return success.
|
||||||
|
if (socket == -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
int status_out = htonl(status);
|
int status_out = htonl(status);
|
||||||
return android::base::WriteFully(socket, &status_out, sizeof(int));
|
return android::base::WriteFully(socket, &status_out, sizeof(int));
|
||||||
}
|
}
|
||||||
@@ -567,7 +572,7 @@ static void usage(const char* exename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
enum { UNCRYPT, SETUP_BCB, CLEAR_BCB } action;
|
enum { UNCRYPT, SETUP_BCB, CLEAR_BCB, UNCRYPT_DEBUG } action;
|
||||||
const char* input_path = nullptr;
|
const char* input_path = nullptr;
|
||||||
const char* map_file = CACHE_BLOCK_MAP.c_str();
|
const char* map_file = CACHE_BLOCK_MAP.c_str();
|
||||||
|
|
||||||
@@ -580,7 +585,7 @@ int main(int argc, char** argv) {
|
|||||||
} else if (argc == 3) {
|
} else if (argc == 3) {
|
||||||
input_path = argv[1];
|
input_path = argv[1];
|
||||||
map_file = argv[2];
|
map_file = argv[2];
|
||||||
action = UNCRYPT;
|
action = UNCRYPT_DEBUG;
|
||||||
} else {
|
} else {
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return 2;
|
return 2;
|
||||||
@@ -591,6 +596,17 @@ int main(int argc, char** argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (action == UNCRYPT_DEBUG) {
|
||||||
|
LOG(INFO) << "uncrypt called in debug mode, skip socket communication\n";
|
||||||
|
bool success = uncrypt_wrapper(input_path, map_file, -1);
|
||||||
|
if (success) {
|
||||||
|
LOG(INFO) << "uncrypt succeeded\n";
|
||||||
|
} else{
|
||||||
|
LOG(INFO) << "uncrypt failed\n";
|
||||||
|
}
|
||||||
|
return success ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
// c3. The socket is created by init when starting the service. uncrypt
|
// c3. The socket is created by init when starting the service. uncrypt
|
||||||
// will use the socket to communicate with its caller.
|
// will use the socket to communicate with its caller.
|
||||||
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()));
|
||||||
|
|||||||
Reference in New Issue
Block a user