Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
58849f28
Commit
58849f28
authored
May 05, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add daemon response code
parent
d66c284b
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
59 additions
and
28 deletions
+59
-28
daemon.c
jni/daemon/daemon.c
+23
-3
daemon.h
jni/daemon/daemon.h
+12
-0
list_manager.c
jni/magiskhide/list_manager.c
+6
-6
magiskhide.c
jni/magiskhide/magiskhide.c
+10
-9
magiskhide.h
jni/magiskhide/magiskhide.h
+0
-9
su
jni/su
+1
-1
misc.c
jni/utils/misc.c
+6
-0
utils.h
jni/utils/utils.h
+1
-0
No files found.
jni/daemon/daemon.c
View file @
58849f28
...
...
@@ -32,6 +32,27 @@ static void *request_handler(void *args) {
int
client
=
*
((
int
*
)
args
);
free
(
args
);
client_request
req
=
read_int
(
client
);
struct
ucred
credentials
;
get_client_cred
(
client
,
&
credentials
);
switch
(
req
)
{
case
LAUNCH_MAGISKHIDE
:
case
STOP_MAGISKHIDE
:
case
ADD_HIDELIST
:
case
RM_HIDELIST
:
case
POST_FS
:
case
POST_FS_DATA
:
case
LATE_START
:
if
(
credentials
.
uid
!=
0
)
{
write_int
(
client
,
ROOT_REQUIRED
);
close
(
client
);
return
NULL
;
}
default:
break
;
}
switch
(
req
)
{
case
LAUNCH_MAGISKHIDE
:
launch_magiskhide
(
client
);
...
...
@@ -65,9 +86,8 @@ static void *request_handler(void *args) {
case
LATE_START
:
late_start
(
client
);
break
;
case
TEST
:
// test(client);
break
;
default:
close
(
client
);
}
return
NULL
;
}
...
...
jni/daemon/daemon.h
View file @
58849f28
...
...
@@ -10,6 +10,7 @@ extern pthread_t sepol_patch;
// Commands require connecting to daemon
typedef
enum
{
DO_NOTHING
=
0
,
LAUNCH_MAGISKHIDE
,
STOP_MAGISKHIDE
,
ADD_HIDELIST
,
...
...
@@ -23,6 +24,17 @@ typedef enum {
TEST
}
client_request
;
// Return codes for daemon
typedef
enum
{
DAEMON_ERROR
=
-
1
,
DAEMON_SUCCESS
=
0
,
ROOT_REQUIRED
,
HIDE_IS_ENABLED
,
HIDE_NOT_ENABLED
,
HIDE_ITEM_EXIST
,
HIDE_ITEM_NOT_EXIST
,
}
daemon_response
;
// daemon.c
void
start_daemon
();
...
...
jni/magiskhide/list_manager.c
View file @
58849f28
...
...
@@ -19,7 +19,7 @@ int add_list(char *proc) {
char
*
line
;
struct
vector
*
new_list
=
xmalloc
(
sizeof
(
*
new_list
));
if
(
new_list
==
NULL
)
return
HIDE
_ERROR
;
return
DAEMON
_ERROR
;
vec_init
(
new_list
);
vec_for_each
(
hide_list
,
line
)
{
...
...
@@ -47,10 +47,10 @@ int add_list(char *proc) {
pthread_mutex_lock
(
&
file_lock
);
if
(
vector_to_file
(
HIDELIST
,
hide_list
))
{
pthread_mutex_unlock
(
&
file_lock
);
return
HIDE
_ERROR
;
return
DAEMON
_ERROR
;
}
pthread_mutex_unlock
(
&
file_lock
);
return
HIDE
_SUCCESS
;
return
DAEMON
_SUCCESS
;
}
int
rm_list
(
char
*
proc
)
{
...
...
@@ -59,7 +59,7 @@ int rm_list(char *proc) {
return
HIDE_NOT_ENABLED
;
}
hide_ret
ret
=
HIDE
_ERROR
;
daemon_response
ret
=
DAEMON
_ERROR
;
char
*
line
;
int
do_rm
=
0
;
struct
vector
*
new_list
=
xmalloc
(
sizeof
(
*
new_list
));
...
...
@@ -87,10 +87,10 @@ int rm_list(char *proc) {
hide_list
=
new_list
;
pthread_mutex_unlock
(
&
hide_lock
);
ret
=
HIDE
_SUCCESS
;
ret
=
DAEMON
_SUCCESS
;
pthread_mutex_lock
(
&
file_lock
);
if
(
vector_to_file
(
HIDELIST
,
hide_list
))
ret
=
HIDE
_ERROR
;
ret
=
DAEMON
_ERROR
;
pthread_mutex_unlock
(
&
file_lock
);
}
else
{
ret
=
HIDE_ITEM_NOT_EXIST
;
...
...
jni/magiskhide/magiskhide.c
View file @
58849f28
/* magiskhide.c - initialize the environment for Magiskhide
*/
// TODO: Functions to modify hiding list
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
...
...
@@ -88,7 +86,7 @@ void launch_magiskhide(int client) {
pthread_mutex_init
(
&
hide_lock
,
NULL
);
pthread_mutex_init
(
&
file_lock
,
NULL
);
write_int
(
client
,
HIDE
_SUCCESS
);
write_int
(
client
,
DAEMON
_SUCCESS
);
close
(
client
);
// Get thread reference
...
...
@@ -99,7 +97,7 @@ void launch_magiskhide(int client) {
error:
hideEnabled
=
0
;
write_int
(
client
,
HIDE
_ERROR
);
write_int
(
client
,
DAEMON
_ERROR
);
close
(
client
);
if
(
hide_pid
!=
-
1
)
{
int
kill
=
-
1
;
...
...
@@ -125,7 +123,7 @@ void stop_magiskhide(int client) {
setprop
(
"persist.magisk.hide"
,
"0"
);
pthread_kill
(
proc_monitor_thread
,
SIGUSR1
);
write_int
(
client
,
HIDE
_SUCCESS
);
write_int
(
client
,
DAEMON
_SUCCESS
);
close
(
client
);
}
...
...
@@ -133,7 +131,7 @@ int magiskhide_main(int argc, char *argv[]) {
if
(
argc
<
2
)
{
usage
(
argv
[
0
]);
}
client_request
req
;
client_request
req
=
DO_NOTHING
;
if
(
strcmp
(
argv
[
1
],
"--enable"
)
==
0
)
{
req
=
LAUNCH_MAGISKHIDE
;
}
else
if
(
strcmp
(
argv
[
1
],
"--disable"
)
==
0
)
{
...
...
@@ -156,13 +154,16 @@ int magiskhide_main(int argc, char *argv[]) {
if
(
req
==
ADD_HIDELIST
||
req
==
RM_HIDELIST
)
{
write_string
(
fd
,
argv
[
2
]);
}
hide_ret
code
=
read_int
(
fd
);
daemon_response
code
=
read_int
(
fd
);
close
(
fd
);
switch
(
code
)
{
case
HIDE
_ERROR
:
case
DAEMON
_ERROR
:
fprintf
(
stderr
,
"Error occured in daemon...
\n
"
);
break
;
case
HIDE_SUCCESS
:
case
DAEMON_SUCCESS
:
break
;
case
ROOT_REQUIRED
:
fprintf
(
stderr
,
"Root is required for this operation
\n
"
);
break
;
case
HIDE_NOT_ENABLED
:
fprintf
(
stderr
,
"Magisk hide is not enabled yet
\n
"
);
...
...
jni/magiskhide/magiskhide.h
View file @
58849f28
...
...
@@ -6,15 +6,6 @@
#define HIDELIST "/magisk/.core/magiskhide/hidelist"
#define DUMMYPATH "/dev/magisk/dummy"
typedef
enum
{
HIDE_ERROR
=
-
1
,
HIDE_SUCCESS
=
0
,
HIDE_IS_ENABLED
,
HIDE_NOT_ENABLED
,
HIDE_ITEM_EXIST
,
HIDE_ITEM_NOT_EXIST
}
hide_ret
;
// Kill process
void
kill_proc
(
int
pid
);
...
...
su
@
9a104357
Subproject commit 9
120f71f197e3cabf68c55154e30501679fb3aa8
Subproject commit 9
a1043574a0109e98872bc6e3fe2dcd2f406849a
jni/utils/misc.c
View file @
58849f28
...
...
@@ -386,3 +386,9 @@ void clone_attr(const char *source, const char *target) {
lsetfilecon
(
target
,
con
);
free
(
con
);
}
void
get_client_cred
(
int
fd
,
struct
ucred
*
cred
)
{
socklen_t
ucred_length
=
sizeof
(
*
cred
);
if
(
getsockopt
(
fd
,
SOL_SOCKET
,
SO_PEERCRED
,
cred
,
&
ucred_length
))
PLOGE
(
"getsockopt"
);
}
jni/utils/utils.h
View file @
58849f28
...
...
@@ -89,5 +89,6 @@ int cp_afc(const char *source, const char *target);
int
clone_dir
(
const
char
*
source
,
const
char
*
target
);
int
rm_rf
(
const
char
*
target
);
void
clone_attr
(
const
char
*
source
,
const
char
*
target
);
void
get_client_cred
(
int
fd
,
struct
ucred
*
cred
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment