mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-17 21:47:37 +00:00
Fix bug in MagiskBoot
This commit is contained in:
parent
958d6377e3
commit
6add02702b
@ -211,9 +211,10 @@ bool cpio::mv(const char *from, const char *to) {
|
||||
delete arr[t];
|
||||
arr[t] = nullptr;
|
||||
}
|
||||
free(arr[f]->filename);
|
||||
arr[f]->filename = strdup(to);
|
||||
fprintf(stderr, "Move [%s] -> [%s]\n", from, to);
|
||||
char * tmp = strdup(to);
|
||||
free(arr[f]->filename);
|
||||
arr[f]->filename = tmp;
|
||||
return true;
|
||||
}
|
||||
fprintf(stderr, "Cannot find entry %s\n", from);
|
||||
|
@ -24,20 +24,20 @@ struct cpio_newc_header {
|
||||
|
||||
struct cpio_entry {
|
||||
// uint32_t ino;
|
||||
uint32_t mode;
|
||||
uint32_t uid;
|
||||
uint32_t gid;
|
||||
uint32_t mode = 0;
|
||||
uint32_t uid = 0;
|
||||
uint32_t gid = 0;
|
||||
// uint32_t nlink;
|
||||
// uint32_t mtime;
|
||||
uint32_t filesize;
|
||||
uint32_t filesize = 0;
|
||||
// uint32_t devmajor;
|
||||
// uint32_t devminor;
|
||||
// uint32_t rdevmajor;
|
||||
// uint32_t rdevminor;
|
||||
// uint32_t namesize;
|
||||
// uint32_t check;
|
||||
char *filename;
|
||||
void *data;
|
||||
char *filename = nullptr;
|
||||
void *data = nullptr;
|
||||
|
||||
cpio_entry() {}
|
||||
cpio_entry(int fd, cpio_newc_header &header);
|
||||
|
@ -208,10 +208,17 @@ int cpio_commands(int argc, char *argv[]) {
|
||||
char *cmdv[6];
|
||||
|
||||
while (argc) {
|
||||
// Clean up
|
||||
cmdc = 0;
|
||||
for (char *tok = strtok(argv[0], " "); tok; tok = strtok(NULL, " "))
|
||||
memset(cmdv, NULL, sizeof(cmdv));
|
||||
|
||||
// Split the commands
|
||||
for (char *tok = strtok(argv[0], " "); tok; tok = strtok(nullptr, " "))
|
||||
cmdv[cmdc++] = tok;
|
||||
|
||||
if (cmdc == 0)
|
||||
continue;
|
||||
|
||||
if (strcmp(cmdv[0], "test") == 0) {
|
||||
exit(cpio.test());
|
||||
} else if (strcmp(cmdv[0], "restore") == 0) {
|
||||
@ -224,13 +231,13 @@ int cpio_commands(int argc, char *argv[]) {
|
||||
return 0;
|
||||
} else if (cmdc >= 2 && strcmp(cmdv[0], "backup") == 0) {
|
||||
auto bak = Array<cpio_entry*>();
|
||||
cpio.backup(bak, cmdv[1], cmdc > 2 ? cmdv[2] : nullptr);
|
||||
cpio.backup(bak, cmdv[1], cmdv[2]);
|
||||
cpio.insert(bak);
|
||||
} else if (cmdc >= 4 && strcmp(cmdv[0], "magisk") == 0) {
|
||||
cpio.patch(strcmp(cmdv[2], "true") == 0, strcmp(cmdv[3], "true") == 0);
|
||||
|
||||
auto bak = Array<cpio_entry*>();
|
||||
cpio.backup(bak, cmdv[1], cmdc > 4 ? cmdv[4] : nullptr);
|
||||
cpio.backup(bak, cmdv[1], cmdv[4]);
|
||||
|
||||
auto e = new cpio_entry();
|
||||
e->filename = strdup(".backup/.magisk");
|
||||
|
Loading…
x
Reference in New Issue
Block a user