l.smali
.class public Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;
.super Ljava/lang/Object;
.source "UnZipUtils.java"
# static fields
.field private static a:[B
.field private static b:[B
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
const/4 v1, 0x4
.line 12
new-array v0, v1, [B
fill-array-data v0, :array_10
sput-object v0, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->a:[B
.line 13
new-array v0, v1, [B
fill-array-data v0, :array_16
sput-object v0, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->b:[B
return-void
.line 12
:array_10
.array-data 1
0x50t
0x4bt
0x3t
0x4t
.end array-data
.line 13
:array_16
.array-data 1
0x50t
0x4bt
0x5t
0x6t
.end array-data
.end method
.method public static a(Ljava/io/InputStream;Ljava/lang/String;Ljava/lang/String;)V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.prologue
const/4 v2, 0x0
.line 16
.line 18
:try_start_1
new-instance v0, Ljava/io/File;
invoke-direct {v0, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/File;->getCanonicalPath()Ljava/lang/String;
move-result-object v4
.line 19
new-instance v3, Ljava/util/zip/ZipInputStream;
invoke-direct {v3, p0}, Ljava/util/zip/ZipInputStream;-><init>(Ljava/io/InputStream;)V
:try_end_f
.catchall {:try_start_1 .. :try_end_f} :catchall_11f
.line 21
const/4 v0, 0x0
.line 22
:cond_10
:goto_10
:try_start_10
invoke-virtual {v3}, Ljava/util/zip/ZipInputStream;->getNextEntry()Ljava/util/zip/ZipEntry;
move-result-object v1
if-eqz v1, :cond_dd
.line 23
const/4 v0, 0x1
.line 24
invoke-virtual {v1}, Ljava/util/zip/ZipEntry;->getName()Ljava/lang/String;
move-result-object v5
.line 25
invoke-static {v5}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->a(Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_10
.line 28
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
sget-object v7, Ljava/io/File;->separator:Ljava/lang/String;
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_59
.line 30
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "the zip package outermost folder is not named by channel channel:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_53
.catchall {:try_start_10 .. :try_end_53} :catchall_53
.line 65
:catchall_53
move-exception v0
move-object v2, v3
:goto_55
invoke-static {v2}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
throw v0
.line 32
:cond_59
:try_start_59
invoke-virtual {v1}, Ljava/util/zip/ZipEntry;->isDirectory()Z
move-result v1
if-eqz v1, :cond_96
.line 33
new-instance v1, Ljava/io/File;
invoke-direct {v1, v4, v5}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 34
invoke-virtual {v1}, Ljava/io/File;->getCanonicalPath()Ljava/lang/String;
move-result-object v6
invoke-virtual {v6, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_91
.line 35
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "directory traversal, dir:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ", channel:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 37
:cond_91
invoke-virtual {v1}, Ljava/io/File;->mkdirs()Z
goto/16 :goto_10
.line 40
:cond_96
new-instance v1, Ljava/io/File;
invoke-direct {v1, v4, v5}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
.line 41
invoke-virtual {v1}, Ljava/io/File;->getCanonicalPath()Ljava/lang/String;
move-result-object v1
.line 42
invoke-virtual {v1, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v6
if-nez v6, :cond_be
.line 43
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "directory traversal, file name:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 45
:cond_be
new-instance v5, Ljava/io/File;
invoke-direct {v5, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 46
invoke-virtual {v5}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object v1
invoke-virtual {v1}, Ljava/io/File;->mkdirs()Z
:try_end_ca
.catchall {:try_start_59 .. :try_end_ca} :catchall_53
.line 48
:try_start_ca
new-instance v1, Ljava/io/FileOutputStream;
invoke-direct {v1, v5}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
:try_end_cf
.catchall {:try_start_ca .. :try_end_cf} :catchall_d7
.line 49
:try_start_cf
invoke-static {v3, v1}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/d;->a(Ljava/io/InputStream;Ljava/io/OutputStream;)V
:try_end_d2
.catchall {:try_start_cf .. :try_end_d2} :catchall_122
.line 51
:try_start_d2
invoke-static {v1}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
goto/16 :goto_10
:catchall_d7
move-exception v0
move-object v1, v2
:goto_d9
invoke-static {v1}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
throw v0
.line 56
:cond_dd
if-nez v0, :cond_11b
.line 58
invoke-virtual {p0}, Ljava/io/InputStream;->reset()V
.line 59
invoke-static {p0}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->a(Ljava/io/InputStream;)Z
move-result v0
if-nez v0, :cond_101
.line 60
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "not zip file channel:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 62
:cond_101
new-instance v0, Ljava/lang/RuntimeException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v2, "unzip file: channel:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_11b
.catchall {:try_start_d2 .. :try_end_11b} :catchall_53
.line 65
:cond_11b
invoke-static {v3}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
.line 67
return-void
.line 65
:catchall_11f
move-exception v0
goto/16 :goto_55
.line 51
:catchall_122
move-exception v0
goto :goto_d9
.end method
.method private static a(Ljava/io/InputStream;)Z
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.prologue
const/4 v0, 0x0
.line 76
const/4 v1, 0x4
:try_start_2
new-array v1, v1, [B
.line 77
const/4 v2, 0x0
array-length v3, v1
invoke-virtual {p0, v1, v2, v3}, Ljava/io/InputStream;->read([BII)I
move-result v2
.line 78
array-length v3, v1
if-ne v2, v3, :cond_22
.line 79
sget-object v2, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->a:[B
invoke-static {v2, v1}, Ljava/util/Arrays;->equals([B[B)Z
move-result v2
if-nez v2, :cond_1d
sget-object v2, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/l;->b:[B
invoke-static {v2, v1}, Ljava/util/Arrays;->equals([B[B)Z
:try_end_1a
.catchall {:try_start_2 .. :try_end_1a} :catchall_26
move-result v1
if-eqz v1, :cond_1e
:cond_1d
const/4 v0, 0x1
.line 82
:cond_1e
invoke-static {p0}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
.line 84
:goto_21
return v0
.line 82
:cond_22
invoke-static {p0}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
goto :goto_21
:catchall_26
move-exception v0
invoke-static {p0}, Lcom/bytedance/sdk/openadsdk/preload/geckox/utils/b;->a(Ljava/io/Closeable;)Z
throw v0
.end method
.method private static a(Ljava/lang/String;)Z
.registers 2
.prologue
.line 71
const-string v0, "__MACOSX/"
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_10
const-string v0, ".DS_Store"
invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_12
:cond_10
const/4 v0, 0x1
:goto_11
return v0
:cond_12
const/4 v0, 0x0
goto :goto_11
.end method