ProcessUtils.smali
.class public Lcom/google/android/gms/common/util/ProcessUtils;
.super Ljava/lang/Object;
# static fields
.field private static zzaai:Ljava/lang/String;
.field private static zzaaj:I
# direct methods
.method static constructor <clinit>()V
.registers 1
const/4 v0, 0x0
sput-object v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaai:Ljava/lang/String;
const/4 v0, 0x0
sput v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaaj:I
return-void
.end method
.method private constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static getCallingProcessName()Ljava/lang/String;
.registers 2
invoke-static {}, Landroid/os/Binder;->getCallingPid()I
move-result v0
invoke-static {}, Lcom/google/android/gms/common/util/ProcessUtils;->zzde()I
move-result v1
if-ne v0, v1, :cond_f
invoke-static {}, Lcom/google/android/gms/common/util/ProcessUtils;->getMyProcessName()Ljava/lang/String;
move-result-object v0
:goto_e
return-object v0
:cond_f
invoke-static {v0}, Lcom/google/android/gms/common/util/ProcessUtils;->zzl(I)Ljava/lang/String;
move-result-object v0
goto :goto_e
.end method
.method public static getMyProcessName()Ljava/lang/String;
.registers 1
sget-object v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaai:Ljava/lang/String;
if-nez v0, :cond_e
invoke-static {}, Lcom/google/android/gms/common/util/ProcessUtils;->zzde()I
move-result v0
invoke-static {v0}, Lcom/google/android/gms/common/util/ProcessUtils;->zzl(I)Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaai:Ljava/lang/String;
:cond_e
sget-object v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaai:Ljava/lang/String;
return-object v0
.end method
.method public static hasSystemGroups()Z
.registers 4
const/4 v1, 0x0
:try_start_1
invoke-static {}, Lcom/google/android/gms/common/util/ProcessUtils;->zzde()I
move-result v0
const/16 v2, 0x18
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3, v2}, Ljava/lang/StringBuilder;-><init>(I)V
const-string v2, "/proc/"
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "/status"
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 {v0}, Lcom/google/android/gms/common/util/ProcessUtils;->zzm(Ljava/lang/String;)Ljava/io/BufferedReader;
move-result-object v1
invoke-static {v1}, Lcom/google/android/gms/common/util/ProcessUtils;->zzk(Ljava/io/BufferedReader;)Z
:try_end_27
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_27} :catch_2c
.catchall {:try_start_1 .. :try_end_27} :catchall_35
move-result v0
invoke-static {v1}, Lcom/google/android/gms/common/util/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
return v0
:catch_2c
move-exception v0
:try_start_2d
new-instance v2, Lcom/google/android/gms/common/util/ProcessUtils$SystemGroupsNotAvailableException;
const-string v3, "Unable to access /proc/pid/status."
invoke-direct {v2, v3, v0}, Lcom/google/android/gms/common/util/ProcessUtils$SystemGroupsNotAvailableException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
:try_end_35
.catchall {:try_start_2d .. :try_end_35} :catchall_35
:catchall_35
move-exception v0
invoke-static {v1}, Lcom/google/android/gms/common/util/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
throw v0
.end method
.method private static zzde()I
.registers 1
sget v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaaj:I
if-nez v0, :cond_a
invoke-static {}, Landroid/os/Process;->myPid()I
move-result v0
sput v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaaj:I
:cond_a
sget v0, Lcom/google/android/gms/common/util/ProcessUtils;->zzaaj:I
return v0
.end method
.method private static zzk(Ljava/io/BufferedReader;)Z
.registers 9
const/4 v0, 0x0
invoke-virtual {p0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v1
:goto_5
if-eqz v1, :cond_44
invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v1
const-string v2, "Groups:"
invoke-virtual {v1, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_3f
const/4 v2, 0x7
invoke-virtual {v1, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v1
const-string v2, "\\s"
const/4 v3, -0x1
invoke-virtual {v1, v2, v3}, Ljava/lang/String;->split(Ljava/lang/String;I)[Ljava/lang/String;
move-result-object v2
array-length v3, v2
move v1, v0
:goto_25
if-ge v1, v3, :cond_3a
aget-object v4, v2, v1
:try_start_29
invoke-static {v4}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
:try_end_2c
.catch Ljava/lang/NumberFormatException; {:try_start_29 .. :try_end_2c} :catch_3b
move-result-wide v4
const-wide/16 v6, 0x3e8
cmp-long v6, v4, v6
if-ltz v6, :cond_3c
const-wide/16 v6, 0x7d0
cmp-long v4, v4, v6
if-gez v4, :cond_3c
const/4 v0, 0x1
:cond_3a
return v0
:catch_3b
move-exception v4
:cond_3c
add-int/lit8 v1, v1, 0x1
goto :goto_25
:cond_3f
invoke-virtual {p0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v1
goto :goto_5
:cond_44
new-instance v0, Lcom/google/android/gms/common/util/ProcessUtils$SystemGroupsNotAvailableException;
const-string v1, "Missing Groups entry from proc/pid/status."
invoke-direct {v0, v1}, Lcom/google/android/gms/common/util/ProcessUtils$SystemGroupsNotAvailableException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private static zzl(I)Ljava/lang/String;
.registers 5
const/4 v0, 0x0
if-gtz p0, :cond_4
:goto_3
return-object v0
:cond_4
const/16 v1, 0x19
:try_start_6
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2, v1}, Ljava/lang/StringBuilder;-><init>(I)V
const-string v1, "/proc/"
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "/cmdline"
invoke-virtual {v1, v2}, 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-static {v1}, Lcom/google/android/gms/common/util/ProcessUtils;->zzm(Ljava/lang/String;)Ljava/io/BufferedReader;
:try_end_22
.catch Ljava/io/IOException; {:try_start_6 .. :try_end_22} :catch_2f
.catchall {:try_start_6 .. :try_end_22} :catchall_35
move-result-object v1
:try_start_23
invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String;
:try_end_2a
.catch Ljava/io/IOException; {:try_start_23 .. :try_end_2a} :catch_3f
.catchall {:try_start_23 .. :try_end_2a} :catchall_3d
move-result-object v0
invoke-static {v1}, Lcom/google/android/gms/common/util/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto :goto_3
:catch_2f
move-exception v1
move-object v1, v0
:goto_31
invoke-static {v1}, Lcom/google/android/gms/common/util/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
goto :goto_3
:catchall_35
move-exception v1
move-object v3, v1
move-object v1, v0
move-object v0, v3
:goto_39
invoke-static {v1}, Lcom/google/android/gms/common/util/IOUtils;->closeQuietly(Ljava/io/Closeable;)V
throw v0
:catchall_3d
move-exception v0
goto :goto_39
:catch_3f
move-exception v2
goto :goto_31
.end method
.method private static zzm(Ljava/lang/String;)Ljava/io/BufferedReader;
.registers 4
invoke-static {}, Landroid/os/StrictMode;->allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;
move-result-object v1
:try_start_4
new-instance v0, Ljava/io/BufferedReader;
new-instance v2, Ljava/io/FileReader;
invoke-direct {v2, p0}, Ljava/io/FileReader;-><init>(Ljava/lang/String;)V
invoke-direct {v0, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
:try_end_e
.catchall {:try_start_4 .. :try_end_e} :catchall_12
invoke-static {v1}, Landroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
return-object v0
:catchall_12
move-exception v0
invoke-static {v1}, Landroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
throw v0
.end method