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
4956d826
Commit
4956d826
authored
Oct 28, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix UID stored in multiuser mode
parent
f5cc2af5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
28 deletions
+27
-28
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+0
-1
Policy.java
app/src/main/java/com/topjohnwu/magisk/container/Policy.java
+5
-6
SuDatabaseHelper.java
.../java/com/topjohnwu/magisk/database/SuDatabaseHelper.java
+15
-14
SuRequestActivity.java
...ava/com/topjohnwu/magisk/superuser/SuRequestActivity.java
+6
-6
build.gradle
build.gradle
+1
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
4956d826
...
...
@@ -110,7 +110,6 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
// Disable dangerous settings in user mode if selected owner manage
if
(
mm
.
userId
>
0
)
{
suCategory
.
removePreference
(
multiuserMode
);
generalCatagory
.
removePreference
(
hideManager
);
}
// Remove re-authentication option on Android O, it will not work
...
...
app/src/main/java/com/topjohnwu/magisk/container/Policy.java
View file @
4956d826
...
...
@@ -20,12 +20,11 @@ public class Policy implements Comparable<Policy>{
public
Policy
(
int
uid
,
PackageManager
pm
)
throws
PackageManager
.
NameNotFoundException
{
String
[]
pkgs
=
pm
.
getPackagesForUid
(
uid
);
if
(
pkgs
!=
null
&&
pkgs
.
length
>
0
)
{
this
.
uid
=
uid
;
packageName
=
pkgs
[
0
];
info
=
pm
.
getApplicationInfo
(
packageName
,
0
);
appName
=
info
.
loadLabel
(
pm
).
toString
();
}
else
throw
new
PackageManager
.
NameNotFoundException
();
if
(
pkgs
==
null
||
pkgs
.
length
==
0
)
throw
new
PackageManager
.
NameNotFoundException
();
this
.
uid
=
uid
%
100000
;
packageName
=
pkgs
[
0
];
info
=
pm
.
getApplicationInfo
(
packageName
,
0
);
appName
=
info
.
loadLabel
(
pm
).
toString
();
}
public
Policy
(
Cursor
c
,
PackageManager
pm
)
throws
PackageManager
.
NameNotFoundException
{
...
...
app/src/main/java/com/topjohnwu/magisk/database/SuDatabaseHelper.java
View file @
4956d826
...
...
@@ -44,7 +44,7 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
public
static
final
String
REQUESTER
=
"requester"
;
public
static
final
String
DB_NAME
=
"su.db"
;
private
static
final
int
DATABASE_VER
=
4
;
private
static
final
int
DATABASE_VER
=
5
;
private
static
final
String
POLICY_TABLE
=
"policies"
;
private
static
final
String
LOG_TABLE
=
"logs"
;
private
static
final
String
SETTINGS_TABLE
=
"settings"
;
...
...
@@ -166,6 +166,10 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
"(key TEXT, value TEXT, PRIMARY KEY(key))"
);
++
oldVersion
;
}
if
(
oldVersion
==
4
)
{
db
.
execSQL
(
"UPDATE "
+
POLICY_TABLE
+
" SET uid=uid%100000"
);
++
oldVersion
;
}
if
(!
Utils
.
itemExist
(
GLOBAL_DB
))
{
// Hard link our DB globally
...
...
@@ -173,6 +177,15 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
}
}
@Override
public
void
onDowngrade
(
SQLiteDatabase
db
,
int
oldVersion
,
int
newVersion
)
{
// Remove everything, we do not support downgrade
db
.
delete
(
POLICY_TABLE
,
null
,
null
);
db
.
delete
(
LOG_TABLE
,
null
,
null
);
db
.
delete
(
SETTINGS_TABLE
,
null
,
null
);
db
.
delete
(
STRINGS_TABLE
,
null
,
null
);
}
public
File
getDbFile
()
{
return
mContext
.
getDatabasePath
(
DB_NAME
);
}
...
...
@@ -220,7 +233,7 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
public
Policy
getPolicy
(
int
uid
)
{
Policy
policy
=
null
;
try
(
Cursor
c
=
mDb
.
query
(
POLICY_TABLE
,
null
,
"uid=?"
,
new
String
[]
{
String
.
valueOf
(
uid
)
},
null
,
null
,
null
))
{
try
(
Cursor
c
=
mDb
.
query
(
POLICY_TABLE
,
null
,
"uid=?"
,
new
String
[]
{
String
.
valueOf
(
uid
%
100000
)
},
null
,
null
,
null
))
{
if
(
c
.
moveToNext
())
{
policy
=
new
Policy
(
c
,
pm
);
}
...
...
@@ -259,18 +272,6 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
while
(
c
.
moveToNext
())
{
try
{
Policy
policy
=
new
Policy
(
c
,
pm
);
// The application changed UID for some reason, check user config
if
(
policy
.
info
.
uid
!=
policy
.
uid
)
{
if
(
MagiskManager
.
get
().
suReauth
)
{
// Reauth required, remove from DB
deletePolicy
(
policy
);
continue
;
}
else
{
// No reauth, update to use the new UID
policy
.
uid
=
policy
.
info
.
uid
;
updatePolicy
(
policy
);
}
}
ret
.
add
(
policy
);
}
catch
(
PackageManager
.
NameNotFoundException
e
)
{
// The app no longer exist, remove from DB
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/SuRequestActivity.java
View file @
4956d826
...
...
@@ -48,7 +48,7 @@ public class SuRequestActivity extends Activity {
private
String
socketPath
;
private
LocalSocket
socket
;
private
PackageManager
pm
;
private
MagiskManager
m
agiskManager
;
private
MagiskManager
m
m
;
private
boolean
hasTimeout
;
private
Policy
policy
;
...
...
@@ -60,7 +60,7 @@ public class SuRequestActivity extends Activity {
supportRequestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
pm
=
getPackageManager
();
m
agiskManager
=
getMagiskManager
();
m
m
=
getMagiskManager
();
Intent
intent
=
getIntent
();
socketPath
=
intent
.
getStringExtra
(
"socket"
);
...
...
@@ -85,7 +85,7 @@ public class SuRequestActivity extends Activity {
}
private
void
showRequest
()
{
switch
(
m
agiskManager
.
suResponseType
)
{
switch
(
m
m
.
suResponseType
)
{
case
AUTO_DENY:
handleAction
(
Policy
.
DENY
,
0
);
return
;
...
...
@@ -114,7 +114,7 @@ public class SuRequestActivity extends Activity {
adapter
.
setDropDownViewResource
(
android
.
R
.
layout
.
simple_spinner_dropdown_item
);
timeout
.
setAdapter
(
adapter
);
timer
=
new
CountDownTimer
(
m
agiskManager
.
suRequestTimeout
*
1000
,
1000
)
{
timer
=
new
CountDownTimer
(
m
m
.
suRequestTimeout
*
1000
,
1000
)
{
@Override
public
void
onTick
(
long
millisUntilFinished
)
{
deny_btn
.
setText
(
getString
(
R
.
string
.
deny_with_str
,
"("
+
millisUntilFinished
/
1000
+
")"
));
...
...
@@ -176,7 +176,7 @@ public class SuRequestActivity extends Activity {
policy
.
policy
=
action
;
if
(
time
>=
0
)
{
policy
.
until
=
(
time
==
0
)
?
0
:
(
System
.
currentTimeMillis
()
/
1000
+
time
*
60
);
m
agiskManager
.
suDB
.
addPolicy
(
policy
);
m
m
.
suDB
.
addPolicy
(
policy
);
}
handleAction
();
}
...
...
@@ -216,7 +216,7 @@ public class SuRequestActivity extends Activity {
}
int
uid
=
payload
.
getAsInteger
(
"uid"
);
policy
=
m
agiskManager
.
suDB
.
getPolicy
(
uid
);
policy
=
m
m
.
suDB
.
getPolicy
(
uid
);
if
(
policy
==
null
)
{
policy
=
new
Policy
(
uid
,
pm
);
}
...
...
build.gradle
View file @
4956d826
...
...
@@ -8,7 +8,7 @@ buildscript {
google
()
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.0.0
-rc1
'
classpath
'com.android.tools.build:gradle:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
...
...
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