Skip to content

Commit

Permalink
gnss_supl20service_hisi: Provide modded arraycopy method
Browse files Browse the repository at this point in the history
* java.lang.IllegalAccessError: Method 'void java.lang.System.arraycopy(byte[], int, byte[], int, int)'
  is inaccessible to class 'com.android.supl.SUPLHIDLInterface$HiSuplCallback' (declaration of 'com.
  android.supl.SUPLHIDLInterface$HiSuplCallback' appears in /system/priv-app/gnss_supl20service_hisi/
  gnss_supl20service_hisi.apk)
  • Loading branch information
Iceows authored and R0rt1z2 committed Aug 28, 2024
1 parent 8e89cdf commit fb97063
Show file tree
Hide file tree
Showing 60 changed files with 377 additions and 133 deletions.
244 changes: 244 additions & 0 deletions smali/com/android/altair/CopyArrayMod.smali
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
.class public Lcom/android/altair/CopyArrayMod;
.super Ljava/lang/Object;
.source "CopyArrayMod.java"


# static fields
.field private static final TAG:Ljava/lang/String; = "SUPL20_COPY"


# direct methods
.method public constructor <init>()V
.locals 0

.line 6
invoke-direct {p0}, Ljava/lang/Object;-><init>()V

return-void
.end method

.method public static CopyArray([BI[BII)V
.locals 3

.line 11
new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

const-string v1, "ALT-HIJ arraycopy len-startin-startout : "

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p4}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v1

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

const-string v1, "-"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p3}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v1

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

const-string v1, "SUPL20_COPY"

invoke-static {v1, v0}, Lcom/android/supl/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

.line 12
new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

const-string v2, " byArrayIn len : "

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

array-length v2, p0

invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

const-string v2, " - byArrayout len : "

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

array-length v2, p2

invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

invoke-static {v1, v0}, Lcom/android/supl/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

.line 13
invoke-static {p0, p1, p2, p3, p4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

return-void
.end method

.method public static CopyArrayEx([BI[BII)V
.locals 3

.line 18
new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

const-string v1, "ALT-HIJ arraycopy len-startin-startout : "

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p4}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v1

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

const-string v1, "-"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-static {p3}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v1

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

const-string v1, "SUPL20_COPY"

invoke-static {v1, v0}, Lcom/android/supl/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

.line 19
new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

const-string v2, " byArrayIn len : "

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

array-length v2, p0

invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

const-string v2, " - byArrayout len : "

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

array-length v2, p2

invoke-static {v2}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

move-result-object v2

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

invoke-static {v1, v0}, Lcom/android/supl/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

const/4 v0, 0x0

:goto_0
if-ge v0, p4, :cond_0

add-int v1, v0, p3

add-int v2, v0, p1

.line 22
aget-byte v2, p0, v2

aput-byte v2, p2, v1

add-int/lit8 v0, v0, 0x1

goto :goto_0

:cond_0
return-void
.end method
4 changes: 2 additions & 2 deletions smali/com/android/supl/SUPLHIDLInterface$HiSuplCallback.smali
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@

const/4 v5, 0x0

invoke-static {v2, v5, v3, v5, v4}, Ljava/lang/System;->arraycopy([BI[BII)V
invoke-static {v2, v5, v3, v5, v4}, Lcom/android/altair/CopyArrayMod;->CopyArray([BI[BII)V

.line 145
iget-object v2, p0, Lcom/android/supl/SUPLHIDLInterface$HiSuplCallback;->this$0:Lcom/android/supl/SUPLHIDLInterface;
Expand Down Expand Up @@ -178,7 +178,7 @@

const/4 v5, 0x0

invoke-static {v2, v5, v3, v5, v4}, Ljava/lang/System;->arraycopy([BI[BII)V
invoke-static {v2, v5, v3, v5, v4}, Lcom/android/altair/CopyArrayMod;->CopyArray([BI[BII)V

.line 160
iget-object v2, p0, Lcom/android/supl/SUPLHIDLInterface$HiSuplCallback;->this$0:Lcom/android/supl/SUPLHIDLInterface;
Expand Down
4 changes: 2 additions & 2 deletions smali/com/android/supl/SUPLHIDLInterface.smali
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@

const/4 v4, 0x0

invoke-static {v1, v4, v2, v4, v3}, Ljava/lang/System;->arraycopy([BI[BII)V
invoke-static {v1, v4, v2, v4, v3}, Lcom/android/altair/CopyArrayMod;->CopyArray([BI[BII)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0

Expand Down Expand Up @@ -537,7 +537,7 @@

const/4 v4, 0x0

invoke-static {v1, v4, v2, v4, v3}, Ljava/lang/System;->arraycopy([BI[BII)V
invoke-static {v1, v4, v2, v4, v3}, Lcom/android/altair/CopyArrayMod;->CopyArray([BI[BII)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@
move v7, v10

.line 155
invoke-static {v5, v1, v9, v7, v2}, Ljava/lang/System;->arraycopy([BI[BII)V
invoke-static {v5, v1, v9, v7, v2}, Lcom/android/altair/CopyArrayMod;->CopyArray([BI[BII)V

.line 157
iput-object v9, v6, Lcom/android/supl/nc/SendToServer;->m_bPacket:[B
Expand Down
Loading

0 comments on commit fb97063

Please sign in to comment.