Fix for the great "pdroid in modtype" bug
[auto-patcher.git] / patches / opd / 4.1 / pa / 20121016 / core.patch
blobd3184a054c5bdf962a463dd6d22f3b96caf50458
1 diff -Npru -x '*RIL*' stock-core/smali/java/lang/PrivacyInputStream.smali pdroid-core/smali/java/lang/PrivacyInputStream.smali
2 --- stock-core/smali/java/lang/PrivacyInputStream.smali 1969-12-31 18:00:00.000000000 -0600
3 +++ pdroid-core/smali/java/lang/PrivacyInputStream.smali 2012-10-18 15:40:07.972809203 -0500
4 @@ -0,0 +1,67 @@
5 +.class public Ljava/lang/PrivacyInputStream;
6 +.super Ljava/io/InputStream;
7 +.source "PrivacyInputStream.java"
10 +# direct methods
11 +.method public constructor <init>()V
12 + .registers 1
14 + invoke-direct {p0}, Ljava/io/InputStream;-><init>()V
16 + return-void
17 +.end method
20 +# virtual methods
21 +.method public close()V
22 + .registers 1
23 + .annotation system Ldalvik/annotation/Throws;
24 + value = {
25 + Ljava/io/IOException;
26 + }
27 + .end annotation
29 + invoke-super {p0}, Ljava/io/InputStream;->close()V
31 + return-void
32 +.end method
34 +.method public read()I
35 + .registers 2
36 + .annotation system Ldalvik/annotation/Throws;
37 + value = {
38 + Ljava/io/IOException;
39 + }
40 + .end annotation
42 + const/4 v0, -0x1
44 + return v0
45 +.end method
47 +.method public read([B)I
48 + .registers 3
49 + .annotation system Ldalvik/annotation/Throws;
50 + value = {
51 + Ljava/io/IOException;
52 + }
53 + .end annotation
55 + const/4 v0, -0x1
57 + return v0
58 +.end method
60 +.method public read([BII)I
61 + .registers 5
62 + .annotation system Ldalvik/annotation/Throws;
63 + value = {
64 + Ljava/io/IOException;
65 + }
66 + .end annotation
68 + const/4 v0, -0x1
70 + return v0
71 +.end method
72 diff -Npru -x '*RIL*' stock-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali pdroid-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali
73 --- stock-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali 1969-12-31 18:00:00.000000000 -0600
74 +++ pdroid-core/smali/java/lang/PrivacyProcessManager$PrivacyFileReader.smali 2012-10-18 15:40:07.972809203 -0500
75 @@ -0,0 +1,91 @@
76 +.class public Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
77 +.super Ljava/lang/Object;
78 +.source "PrivacyProcessManager.java"
81 +# annotations
82 +.annotation system Ldalvik/annotation/EnclosingClass;
83 + value = Ljava/lang/PrivacyProcessManager;
84 +.end annotation
86 +.annotation system Ldalvik/annotation/InnerClass;
87 + accessFlags = 0x9
88 + name = "PrivacyFileReader"
89 +.end annotation
92 +# instance fields
93 +.field private buffReader:Ljava/io/BufferedReader;
95 +.field private inputStream:Ljava/io/FileInputStream;
98 +# direct methods
99 +.method public constructor <init>(Ljava/lang/String;)V
100 + .registers 5
101 + .annotation system Ldalvik/annotation/Throws;
102 + value = {
103 + Ljava/io/FileNotFoundException;
105 + .end annotation
107 + invoke-direct {p0}, Ljava/lang/Object;-><init>()V
109 + new-instance v0, Ljava/io/FileInputStream;
111 + new-instance v1, Ljava/io/File;
113 + invoke-direct {v1, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
115 + invoke-direct {v0, v1}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
117 + iput-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream;
119 + new-instance v0, Ljava/io/BufferedReader;
121 + new-instance v1, Ljava/io/InputStreamReader;
123 + iget-object v2, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream;
125 + invoke-direct {v1, v2}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
127 + invoke-direct {v0, v1}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
129 + iput-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->buffReader:Ljava/io/BufferedReader;
131 + return-void
132 +.end method
135 +# virtual methods
136 +.method public close()V
137 + .registers 2
138 + .annotation system Ldalvik/annotation/Throws;
139 + value = {
140 + Ljava/io/IOException;
142 + .end annotation
144 + iget-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->inputStream:Ljava/io/FileInputStream;
146 + invoke-virtual {v0}, Ljava/io/FileInputStream;->close()V
148 + return-void
149 +.end method
151 +.method public readLine()Ljava/lang/String;
152 + .registers 2
153 + .annotation system Ldalvik/annotation/Throws;
154 + value = {
155 + Ljava/io/IOException;
157 + .end annotation
159 + iget-object v0, p0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->buffReader:Ljava/io/BufferedReader;
161 + invoke-virtual {v0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
163 + move-result-object v0
165 + return-object v0
166 +.end method
167 diff -Npru -x '*RIL*' stock-core/smali/java/lang/PrivacyProcessManager.smali pdroid-core/smali/java/lang/PrivacyProcessManager.smali
168 --- stock-core/smali/java/lang/PrivacyProcessManager.smali 1969-12-31 18:00:00.000000000 -0600
169 +++ pdroid-core/smali/java/lang/PrivacyProcessManager.smali 2012-10-18 15:40:07.972809203 -0500
170 @@ -0,0 +1,479 @@
171 +.class public Ljava/lang/PrivacyProcessManager;
172 +.super Ljava/lang/Object;
173 +.source "PrivacyProcessManager.java"
176 +# annotations
177 +.annotation system Ldalvik/annotation/MemberClasses;
178 + value = {
179 + Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
181 +.end annotation
184 +# static fields
185 +.field private static final GET_COMMAND_WAIT_MS:I = 0xa
187 +.field private static final GET_COMMAND_WAIT_STEP:I = 0x5
190 +# direct methods
191 +.method public constructor <init>()V
192 + .registers 1
194 + invoke-direct {p0}, Ljava/lang/Object;-><init>()V
196 + return-void
197 +.end method
199 +.method private static getPackageName()Ljava/lang/String;
200 + .registers 3
201 + .annotation system Ldalvik/annotation/Throws;
202 + value = {
203 + Ljava/io/IOException;,
204 + Ljava/io/FileNotFoundException;
206 + .end annotation
208 + new-instance v0, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
210 + const-string v2, "/proc/self/cmdline"
212 + invoke-direct {v0, v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;-><init>(Ljava/lang/String;)V
214 + invoke-virtual {v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String;
216 + move-result-object v2
218 + invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String;
220 + move-result-object v1
222 + invoke-virtual {v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V
224 + return-object v1
225 +.end method
227 +.method public static hasPrivacyPermission(Ljava/lang/String;)Z
228 + .registers 12
230 + const/4 v6, 0x0
232 + const/4 v5, 0x1
234 + :try_start_2
235 + invoke-static {}, Ljava/lang/PrivacyProcessManager;->getPackageName()Ljava/lang/String;
237 + move-result-object v6
239 + sget-object v8, Ljava/lang/System;->out:Ljava/io/PrintStream;
241 + new-instance v9, Ljava/lang/StringBuilder;
243 + invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
245 + const-string v10, "PrivacyProcessManager: got package name: "
247 + invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
249 + move-result-object v9
251 + invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
253 + move-result-object v9
255 + invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
257 + move-result-object v9
259 + invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
260 + :try_end_1e
261 + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_1e} :catch_57
263 + :goto_1e
264 + const/4 v2, 0x0
266 + :try_start_1f
267 + new-instance v8, Ljava/lang/StringBuilder;
269 + invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
271 + const-string v9, "/data/system/privacy/"
273 + invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
275 + move-result-object v8
277 + invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
279 + move-result-object v8
281 + const-string v9, "/"
283 + invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
285 + move-result-object v8
287 + invoke-virtual {v8, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
289 + move-result-object v8
291 + invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
293 + move-result-object v7
295 + new-instance v3, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
297 + invoke-direct {v3, v7}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;-><init>(Ljava/lang/String;)V
298 + :try_end_41
299 + .catch Ljava/io/FileNotFoundException; {:try_start_1f .. :try_end_41} :catch_85
300 + .catch Ljava/lang/Exception; {:try_start_1f .. :try_end_41} :catch_65
302 + :try_start_41
303 + invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String;
305 + move-result-object v4
307 + if-eqz v4, :cond_63
309 + invoke-virtual {v4}, Ljava/lang/String;->trim()Ljava/lang/String;
311 + move-result-object v8
313 + invoke-static {v8}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
315 + move-result v0
317 + :goto_4f
318 + invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V
319 + :try_end_52
320 + .catch Ljava/io/FileNotFoundException; {:try_start_41 .. :try_end_52} :catch_87
321 + .catch Ljava/lang/Exception; {:try_start_41 .. :try_end_52} :catch_82
323 + const/4 v8, 0x1
325 + if-ne v0, v8, :cond_56
327 + const/4 v5, 0x0
329 + :cond_56
330 + :goto_56
331 + return v5
333 + :catch_57
334 + move-exception v1
336 + sget-object v8, Ljava/lang/System;->err:Ljava/io/PrintStream;
338 + const-string v9, "PrivacyProcessManager: could not find package name"
340 + invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
342 + invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
344 + goto :goto_1e
346 + :cond_63
347 + const/4 v0, -0x1
349 + goto :goto_4f
351 + :catch_65
352 + move-exception v1
354 + :goto_66
355 + sget-object v8, Ljava/lang/System;->err:Ljava/io/PrintStream;
357 + new-instance v9, Ljava/lang/StringBuilder;
359 + invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
361 + const-string v10, "PrivacyProcessManager: could not read privacy settings: "
363 + invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
365 + move-result-object v9
367 + invoke-virtual {v9, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
369 + move-result-object v9
371 + invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
373 + move-result-object v9
375 + invoke-virtual {v8, v9}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
377 + invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
379 + goto :goto_56
381 + :catch_82
382 + move-exception v1
384 + move-object v2, v3
386 + goto :goto_66
388 + :catch_85
389 + move-exception v8
391 + goto :goto_56
393 + :catch_87
394 + move-exception v8
396 + move-object v2, v3
398 + goto :goto_56
399 +.end method
401 +.method public static hasPrivacyPermission(Ljava/lang/String;I)Z
402 + .registers 16
404 + const/4 v7, 0x0
406 + const/4 v6, 0x1
408 + :try_start_2
409 + invoke-static {}, Ljava/lang/PrivacyProcessManager;->getPackageName()Ljava/lang/String;
410 + :try_end_5
411 + .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_39
413 + move-result-object v7
415 + :goto_6
416 + const/4 v2, 0x0
418 + :try_start_7
419 + new-instance v11, Ljava/lang/StringBuilder;
421 + invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
423 + const-string v12, "/proc/"
425 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
427 + move-result-object v11
429 + invoke-virtual {v11, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
431 + move-result-object v11
433 + const-string v12, "/cmdline"
435 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
437 + move-result-object v11
439 + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
441 + move-result-object v0
443 + new-instance v3, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
445 + invoke-direct {v3, v0}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;-><init>(Ljava/lang/String;)V
446 + :try_end_25
447 + .catch Ljava/io/FileNotFoundException; {:try_start_7 .. :try_end_25} :catch_b9
448 + .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_25} :catch_97
450 + :try_start_25
451 + const-string v8, ""
453 + const/16 v4, 0xa
455 + :goto_29
456 + invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String;
457 + :try_end_2c
458 + .catch Ljava/io/FileNotFoundException; {:try_start_25 .. :try_end_2c} :catch_bb
459 + .catch Ljava/lang/Exception; {:try_start_25 .. :try_end_2c} :catch_b6
461 + move-result-object v8
463 + if-nez v8, :cond_45
465 + if-ltz v4, :cond_45
467 + const-wide/16 v11, 0x5
469 + :try_start_33
470 + invoke-static {v11, v12}, Ljava/lang/Thread;->sleep(J)V
471 + :try_end_36
472 + .catch Ljava/lang/InterruptedException; {:try_start_33 .. :try_end_36} :catch_b4
473 + .catch Ljava/io/FileNotFoundException; {:try_start_33 .. :try_end_36} :catch_bb
474 + .catch Ljava/lang/Exception; {:try_start_33 .. :try_end_36} :catch_b6
476 + :goto_36
477 + add-int/lit8 v4, v4, -0x5
479 + goto :goto_29
481 + :catch_39
482 + move-exception v1
484 + sget-object v11, Ljava/lang/System;->err:Ljava/io/PrintStream;
486 + const-string v12, "PrivacyProcessManager: could not find package name or UID"
488 + invoke-virtual {v11, v12}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
490 + invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
492 + goto :goto_6
494 + :cond_45
495 + :try_start_45
496 + invoke-virtual {v3}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V
498 + if-eqz v8, :cond_be
500 + invoke-virtual {v8}, Ljava/lang/String;->trim()Ljava/lang/String;
502 + move-result-object v11
504 + invoke-virtual {v11}, Ljava/lang/String;->length()I
506 + move-result v11
508 + const/4 v12, 0x5
510 + if-le v11, v12, :cond_be
512 + const-string v11, "logcat"
514 + invoke-virtual {v8, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
516 + move-result v11
518 + if-eqz v11, :cond_be
520 + new-instance v11, Ljava/lang/StringBuilder;
522 + invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
524 + const-string v12, "/data/system/privacy/"
526 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
528 + move-result-object v11
530 + invoke-virtual {v11, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
532 + move-result-object v11
534 + const-string v12, "/"
536 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
538 + move-result-object v11
540 + invoke-virtual {v11, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
542 + move-result-object v11
544 + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
546 + move-result-object v9
548 + new-instance v2, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;
550 + invoke-direct {v2, v9}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;-><init>(Ljava/lang/String;)V
551 + :try_end_7f
552 + .catch Ljava/io/FileNotFoundException; {:try_start_45 .. :try_end_7f} :catch_bb
553 + .catch Ljava/lang/Exception; {:try_start_45 .. :try_end_7f} :catch_b6
555 + :try_start_7f
556 + invoke-virtual {v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->readLine()Ljava/lang/String;
558 + move-result-object v5
560 + if-eqz v5, :cond_95
562 + invoke-virtual {v5}, Ljava/lang/String;->trim()Ljava/lang/String;
564 + move-result-object v11
566 + invoke-static {v11}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
568 + move-result v10
570 + :goto_8d
571 + invoke-virtual {v2}, Ljava/lang/PrivacyProcessManager$PrivacyFileReader;->close()V
572 + :try_end_90
573 + .catch Ljava/io/FileNotFoundException; {:try_start_7f .. :try_end_90} :catch_b9
574 + .catch Ljava/lang/Exception; {:try_start_7f .. :try_end_90} :catch_97
576 + const/4 v11, 0x1
578 + if-ne v10, v11, :cond_94
580 + const/4 v6, 0x0
582 + :cond_94
583 + :goto_94
584 + return v6
586 + :cond_95
587 + const/4 v10, -0x1
589 + goto :goto_8d
591 + :catch_97
592 + move-exception v1
594 + :goto_98
595 + sget-object v11, Ljava/lang/System;->err:Ljava/io/PrintStream;
597 + new-instance v12, Ljava/lang/StringBuilder;
599 + invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
601 + const-string v13, "PrivacyProcessManager: could not read privacy settings: "
603 + invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
605 + move-result-object v12
607 + invoke-virtual {v12, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
609 + move-result-object v12
611 + invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
613 + move-result-object v12
615 + invoke-virtual {v11, v12}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
617 + invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
619 + goto :goto_94
621 + :catch_b4
622 + move-exception v11
624 + goto :goto_36
626 + :catch_b6
627 + move-exception v1
629 + move-object v2, v3
631 + goto :goto_98
633 + :catch_b9
634 + move-exception v11
636 + goto :goto_94
638 + :catch_bb
639 + move-exception v11
641 + move-object v2, v3
643 + goto :goto_94
645 + :cond_be
646 + move-object v2, v3
648 + goto :goto_94
649 +.end method
650 diff -Npru -x '*RIL*' stock-core/smali/java/lang/ProcessManager$ProcessImpl.smali pdroid-core/smali/java/lang/ProcessManager$ProcessImpl.smali
651 --- stock-core/smali/java/lang/ProcessManager$ProcessImpl.smali 2012-10-18 15:39:23.504588700 -0500
652 +++ pdroid-core/smali/java/lang/ProcessManager$ProcessImpl.smali 2012-10-18 15:40:08.016809420 -0500
653 @@ -21,6 +21,8 @@
655 .field private final exitValueMutex:Ljava/lang/Object;
657 +.field private fakeProcess:Z
659 .field private final inputStream:Ljava/io/InputStream;
661 .field private final outputStream:Ljava/io/OutputStream;
662 @@ -36,6 +38,52 @@
664 invoke-direct {p0}, Ljava/lang/Process;-><init>()V
666 + const/4 v0, 0x0
668 + iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z
670 + iput-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer;
672 + new-instance v0, Ljava/lang/Object;
674 + invoke-direct {v0}, Ljava/lang/Object;-><init>()V
676 + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValueMutex:Ljava/lang/Object;
678 + iput p1, p0, Ljava/lang/ProcessManager$ProcessImpl;->pid:I
680 + new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream;
682 + invoke-direct {v0, p4, v1}, Ljava/lang/ProcessManager$ProcessInputStream;-><init>(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V
684 + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->errorStream:Ljava/io/InputStream;
686 + new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream;
688 + invoke-direct {v0, p2, v1}, Ljava/lang/ProcessManager$ProcessInputStream;-><init>(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V
690 + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream;
692 + new-instance v0, Ljava/lang/ProcessManager$ProcessOutputStream;
694 + invoke-direct {v0, p3, v1}, Ljava/lang/ProcessManager$ProcessOutputStream;-><init>(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V
696 + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->outputStream:Ljava/io/OutputStream;
698 + return-void
699 +.end method
701 +.method constructor <init>(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)V
702 + .registers 8
704 + const/4 v1, 0x0
706 + invoke-direct {p0}, Ljava/lang/Process;-><init>()V
708 + const/4 v0, 0x0
710 + iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z
712 iput-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer;
714 new-instance v0, Ljava/lang/Object;
715 @@ -52,12 +100,15 @@
717 iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->errorStream:Ljava/io/InputStream;
719 + if-eqz p5, :cond_2a
721 new-instance v0, Ljava/lang/ProcessManager$ProcessInputStream;
723 invoke-direct {v0, p2, v1}, Ljava/lang/ProcessManager$ProcessInputStream;-><init>(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V
725 iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream;
727 + :goto_22
728 new-instance v0, Ljava/lang/ProcessManager$ProcessOutputStream;
730 invoke-direct {v0, p3, v1}, Ljava/lang/ProcessManager$ProcessOutputStream;-><init>(Ljava/io/FileDescriptor;Ljava/lang/ProcessManager$1;)V
731 @@ -65,6 +116,19 @@
732 iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->outputStream:Ljava/io/OutputStream;
734 return-void
736 + :cond_2a
737 + new-instance v0, Ljava/lang/PrivacyInputStream;
739 + invoke-direct {v0}, Ljava/lang/PrivacyInputStream;-><init>()V
741 + iput-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream;
743 + const/4 v0, 0x1
745 + iput-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z
747 + goto :goto_22
748 .end method
750 .method static synthetic access$300(Ljava/lang/ProcessManager$ProcessImpl;)I
751 @@ -86,12 +150,17 @@
753 :try_start_3
754 iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer;
755 - :try_end_5
756 - .catchall {:try_start_3 .. :try_end_5} :catchall_3b
758 - if-nez v1, :cond_10
759 + if-eqz v1, :cond_b
761 + iget-boolean v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z
762 + :try_end_9
763 + .catchall {:try_start_3 .. :try_end_9} :catchall_3f
765 + if-eqz v1, :cond_14
767 - :try_start_7
768 + :cond_b
769 + :try_start_b
770 sget-object v1, Llibcore/io/Libcore;->os:Llibcore/io/Os;
772 iget v3, p0, Ljava/lang/ProcessManager$ProcessImpl;->pid:I
773 @@ -99,16 +168,16 @@
774 sget v4, Llibcore/io/OsConstants;->SIGKILL:I
776 invoke-interface {v1, v3, v4}, Llibcore/io/Os;->kill(II)V
777 - :try_end_10
778 - .catchall {:try_start_7 .. :try_end_10} :catchall_3b
779 - .catch Llibcore/io/ErrnoException; {:try_start_7 .. :try_end_10} :catch_21
781 - :cond_10
782 - :goto_10
783 - :try_start_10
784 + :try_end_14
785 + .catchall {:try_start_b .. :try_end_14} :catchall_3f
786 + .catch Llibcore/io/ErrnoException; {:try_start_b .. :try_end_14} :catch_25
788 + :cond_14
789 + :goto_14
790 + :try_start_14
791 monitor-exit v2
792 - :try_end_11
793 - .catchall {:try_start_10 .. :try_end_11} :catchall_3b
794 + :try_end_15
795 + .catchall {:try_start_14 .. :try_end_15} :catchall_3f
797 iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->inputStream:Ljava/io/InputStream;
799 @@ -124,10 +193,10 @@
801 return-void
803 - :catch_21
804 + :catch_25
805 move-exception v0
807 - :try_start_22
808 + :try_start_26
809 new-instance v1, Ljava/lang/StringBuilder;
811 invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
812 @@ -150,14 +219,14 @@
814 invoke-static {v1, v0}, Ljava/lang/System;->logI(Ljava/lang/String;Ljava/lang/Throwable;)V
816 - goto :goto_10
817 + goto :goto_14
819 - :catchall_3b
820 + :catchall_3f
821 move-exception v1
823 monitor-exit v2
824 - :try_end_3d
825 - .catchall {:try_start_22 .. :try_end_3d} :catchall_3b
826 + :try_end_41
827 + .catchall {:try_start_26 .. :try_end_41} :catchall_3f
829 throw v1
830 .end method
831 @@ -165,14 +234,23 @@
832 .method public exitValue()I
833 .registers 5
835 + iget-boolean v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->fakeProcess:Z
837 + if-eqz v0, :cond_8
839 + const/4 v0, 0x0
841 + invoke-virtual {p0, v0}, Ljava/lang/ProcessManager$ProcessImpl;->setExitValue(I)V
843 + :cond_8
844 iget-object v1, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValueMutex:Ljava/lang/Object;
846 monitor-enter v1
848 - :try_start_3
849 + :try_start_b
850 iget-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer;
852 - if-nez v0, :cond_25
853 + if-nez v0, :cond_2d
855 new-instance v0, Ljava/lang/IllegalThreadStateException;
857 @@ -200,17 +278,17 @@
859 throw v0
861 - :catchall_22
862 + :catchall_2a
863 move-exception v0
865 monitor-exit v1
866 - :try_end_24
867 - .catchall {:try_start_3 .. :try_end_24} :catchall_22
868 + :try_end_2c
869 + .catchall {:try_start_b .. :try_end_2c} :catchall_2a
871 throw v0
873 - :cond_25
874 - :try_start_25
875 + :cond_2d
876 + :try_start_2d
877 iget-object v0, p0, Ljava/lang/ProcessManager$ProcessImpl;->exitValue:Ljava/lang/Integer;
879 invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
880 @@ -218,8 +296,8 @@
881 move-result v0
883 monitor-exit v1
884 - :try_end_2c
885 - .catchall {:try_start_25 .. :try_end_2c} :catchall_22
886 + :try_end_34
887 + .catchall {:try_start_2d .. :try_end_34} :catchall_2a
889 return v0
890 .end method
891 diff -Npru -x '*RIL*' stock-core/smali/java/lang/ProcessManager.smali pdroid-core/smali/java/lang/ProcessManager.smali
892 --- stock-core/smali/java/lang/ProcessManager.smali 2012-10-18 15:39:23.524588800 -0500
893 +++ pdroid-core/smali/java/lang/ProcessManager.smali 2012-10-18 15:40:08.112809896 -0500
894 @@ -136,6 +136,155 @@
895 return-void
896 .end method
898 +.method private containsIpTableCommand(Ljava/lang/String;)Z
899 + .registers 10
901 + const/4 v5, 0x0
903 + :try_start_1
904 + sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
906 + const-string v7, "now we\'re in containsIpTableCommand"
908 + invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
910 + new-instance v3, Ljava/io/FileInputStream;
912 + invoke-direct {v3, p1}, Ljava/io/FileInputStream;-><init>(Ljava/lang/String;)V
914 + new-instance v1, Ljava/io/DataInputStream;
916 + invoke-direct {v1, v3}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
918 + new-instance v0, Ljava/io/BufferedReader;
920 + new-instance v6, Ljava/io/InputStreamReader;
922 + invoke-direct {v6, v1}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
924 + invoke-direct {v0, v6}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
926 + :cond_1c
927 + invoke-virtual {v0}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
929 + move-result-object v4
931 + if-eqz v4, :cond_6a
933 + const-string v6, "iptables"
935 + invoke-virtual {v4, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
937 + move-result v6
939 + if-nez v6, :cond_32
941 + const-string v6, "ip6tables"
943 + invoke-virtual {v4, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
944 + :try_end_2f
945 + .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_2f} :catch_59
947 + move-result v6
949 + if-eqz v6, :cond_1c
951 + :cond_32
952 + :try_start_32
953 + invoke-virtual {v1}, Ljava/io/DataInputStream;->close()V
955 + invoke-virtual {v0}, Ljava/io/BufferedReader;->close()V
957 + invoke-virtual {v3}, Ljava/io/FileInputStream;->close()V
958 + :try_end_3b
959 + .catchall {:try_start_32 .. :try_end_3b} :catchall_62
960 + .catch Ljava/io/IOException; {:try_start_32 .. :try_end_3b} :catch_4a
962 + const/4 v3, 0x0
964 + const/4 v1, 0x0
966 + const/4 v0, 0x0
968 + :try_start_3e
969 + invoke-static {}, Ljava/lang/System;->gc()V
971 + :goto_41
972 + sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
974 + const-string v7, "returning true, file contains iptable command"
976 + invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
977 + :try_end_48
978 + .catch Ljava/lang/Exception; {:try_start_3e .. :try_end_48} :catch_59
980 + const/4 v5, 0x1
982 + :goto_49
983 + return v5
985 + :catch_4a
986 + move-exception v2
988 + :try_start_4b
989 + sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
991 + const-string v7, "got exception while closing streams"
993 + invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
994 + :try_end_52
995 + .catchall {:try_start_4b .. :try_end_52} :catchall_62
997 + const/4 v3, 0x0
999 + const/4 v1, 0x0
1001 + const/4 v0, 0x0
1003 + :try_start_55
1004 + invoke-static {}, Ljava/lang/System;->gc()V
1005 + :try_end_58
1006 + .catch Ljava/lang/Exception; {:try_start_55 .. :try_end_58} :catch_59
1008 + goto :goto_41
1010 + :catch_59
1011 + move-exception v2
1013 + sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
1015 + const-string v7, "returning false,because we got exception while parsing"
1017 + invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1019 + goto :goto_49
1021 + :catchall_62
1022 + move-exception v6
1024 + const/4 v3, 0x0
1026 + const/4 v1, 0x0
1028 + const/4 v0, 0x0
1030 + :try_start_66
1031 + invoke-static {}, Ljava/lang/System;->gc()V
1033 + throw v6
1035 + :cond_6a
1036 + sget-object v6, Ljava/lang/System;->out:Ljava/io/PrintStream;
1038 + const-string v7, "returning false, file doesn\'t contains iptable command"
1040 + invoke-virtual {v6, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1041 + :try_end_71
1042 + .catch Ljava/lang/Exception; {:try_start_66 .. :try_end_71} :catch_59
1044 + goto :goto_49
1045 +.end method
1047 .method private static native exec([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)I
1048 .annotation system Ldalvik/annotation/Throws;
1049 value = {
1050 @@ -393,109 +542,390 @@
1052 # virtual methods
1053 .method public exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;Z)Ljava/lang/Process;
1054 - .registers 26
1055 + .registers 30
1056 .annotation system Ldalvik/annotation/Throws;
1057 value = {
1058 Ljava/io/IOException;
1060 .end annotation
1062 - if-nez p1, :cond_8
1063 + const/16 v20, 0x1
1065 + if-eqz p1, :cond_36
1067 + const/16 v18, 0x0
1069 + :goto_6
1070 + move-object/from16 v0, p1
1072 + array-length v10, v0
1074 + move/from16 v0, v18
1076 + if-ge v0, v10, :cond_36
1078 + sget-object v10, Ljava/lang/System;->out:Ljava/io/PrintStream;
1080 + new-instance v11, Ljava/lang/StringBuilder;
1082 + invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
1084 + const-string v12, "tainted command part "
1086 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1088 + move-result-object v11
1090 + move/from16 v0, v18
1092 + invoke-virtual {v11, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1094 + move-result-object v11
1096 + const-string v12, ": "
1098 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1100 + move-result-object v11
1102 + aget-object v12, p1, v18
1104 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1106 + move-result-object v11
1108 + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1110 + move-result-object v11
1112 + invoke-virtual {v10, v11}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1114 + add-int/lit8 v18, v18, 0x1
1116 + goto :goto_6
1118 + :cond_36
1119 + if-eqz p1, :cond_b4
1121 + move-object/from16 v0, p1
1123 + array-length v10, v0
1125 + if-lez v10, :cond_b4
1127 + const/4 v10, 0x0
1129 + aget-object v10, p1, v10
1131 + const-string v11, "su"
1133 + invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1135 + move-result v10
1137 + if-nez v10, :cond_69
1139 + const/4 v10, 0x0
1141 + aget-object v10, p1, v10
1143 + const-string v11, "sh"
1145 + invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1147 + move-result v10
1149 + if-nez v10, :cond_69
1151 - new-instance v8, Ljava/lang/NullPointerException;
1152 + const/4 v10, 0x0
1154 - invoke-direct {v8}, Ljava/lang/NullPointerException;-><init>()V
1155 + aget-object v10, p1, v10
1157 - throw v8
1158 + const-string v11, "bash"
1160 - :cond_8
1161 + invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1163 + move-result v10
1165 + if-nez v10, :cond_69
1167 + const/4 v10, 0x0
1169 + aget-object v10, p1, v10
1171 + const-string v11, "rbash"
1173 + invoke-virtual {v10, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1175 + move-result v10
1177 + if-eqz v10, :cond_b4
1179 + :cond_69
1180 + const/16 v18, 0x0
1182 + :goto_6b
1183 move-object/from16 v0, p1
1185 - array-length v8, v0
1186 + array-length v10, v0
1188 + move/from16 v0, v18
1190 + if-ge v0, v10, :cond_b4
1192 + sget-object v10, Ljava/lang/System;->out:Ljava/io/PrintStream;
1194 + new-instance v11, Ljava/lang/StringBuilder;
1196 + invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
1198 + const-string v12, "Now test tainted command: "
1200 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1202 + move-result-object v11
1204 + aget-object v12, p1, v18
1206 + invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1208 + move-result-object v11
1210 + invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1212 + move-result-object v11
1214 + invoke-virtual {v10, v11}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1216 + aget-object v10, p1, v18
1218 + const-string v11, ".sh"
1220 + invoke-virtual {v10, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
1222 + move-result v10
1224 + if-nez v10, :cond_a0
1226 + aget-object v10, p1, v18
1228 + const-string v11, "/"
1230 + invoke-virtual {v10, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
1232 + move-result v10
1234 + if-eqz v10, :cond_f6
1236 + :cond_a0
1237 + aget-object v10, p1, v18
1239 + move-object/from16 v0, p0
1241 + invoke-direct {v0, v10}, Ljava/lang/ProcessManager;->containsIpTableCommand(Ljava/lang/String;)Z
1243 + move-result v10
1245 + if-eqz v10, :cond_f6
1247 + const-string v10, "ipTableProtectSetting"
1249 + invoke-static {v10}, Ljava/lang/PrivacyProcessManager;->hasPrivacyPermission(Ljava/lang/String;)Z
1251 + move-result v10
1253 + if-nez v10, :cond_f6
1255 + const/16 v20, 0x0
1257 + :cond_b4
1258 + if-eqz p1, :cond_e2
1260 + move-object/from16 v0, p1
1262 + array-length v10, v0
1264 + if-lez v10, :cond_e2
1266 + if-eqz v20, :cond_e2
1268 + const/16 v18, 0x0
1270 + :goto_bf
1271 + move-object/from16 v0, p1
1273 + array-length v10, v0
1275 + move/from16 v0, v18
1277 + if-ge v0, v10, :cond_e2
1279 - if-nez v8, :cond_13
1280 + aget-object v10, p1, v18
1282 - new-instance v8, Ljava/lang/IndexOutOfBoundsException;
1283 + const-string v11, "iptables"
1285 - invoke-direct {v8}, Ljava/lang/IndexOutOfBoundsException;-><init>()V
1286 + invoke-virtual {v10, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
1288 - throw v8
1289 + move-result v10
1291 - :cond_13
1292 + if-nez v10, :cond_da
1294 + aget-object v10, p1, v18
1296 + const-string v11, "ip6tables"
1298 + invoke-virtual {v10, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
1300 + move-result v10
1302 + if-eqz v10, :cond_fc
1304 + :cond_da
1305 + const-string v10, "ipTableProtectSetting"
1307 + invoke-static {v10}, Ljava/lang/PrivacyProcessManager;->hasPrivacyPermission(Ljava/lang/String;)Z
1309 + move-result v10
1311 + if-eqz v10, :cond_fa
1313 + :cond_e2
1314 + if-nez v20, :cond_ee
1316 + const/4 v10, 0x1
1318 + new-array v0, v10, [Ljava/lang/String;
1320 + move-object/from16 p1, v0
1322 + const/4 v10, 0x0
1324 + const-string v11, "su"
1326 + aput-object v11, p1, v10
1328 + :cond_ee
1329 + if-nez p1, :cond_ff
1331 + new-instance v10, Ljava/lang/NullPointerException;
1333 + invoke-direct {v10}, Ljava/lang/NullPointerException;-><init>()V
1335 + throw v10
1337 + :cond_f6
1338 + add-int/lit8 v18, v18, 0x1
1340 + goto/16 :goto_6b
1342 + :cond_fa
1343 + const/16 v20, 0x0
1345 + :cond_fc
1346 + add-int/lit8 v18, v18, 0x1
1348 + goto :goto_bf
1350 + :cond_ff
1351 + move-object/from16 v0, p1
1353 + array-length v10, v0
1355 + if-nez v10, :cond_10a
1357 + new-instance v10, Ljava/lang/IndexOutOfBoundsException;
1359 + invoke-direct {v10}, Ljava/lang/IndexOutOfBoundsException;-><init>()V
1361 + throw v10
1363 + :cond_10a
1364 invoke-virtual/range {p1 .. p1}, [Ljava/lang/String;->clone()Ljava/lang/Object;
1366 move-result-object v2
1368 check-cast v2, [Ljava/lang/String;
1370 - if-eqz p2, :cond_31
1371 + if-eqz p2, :cond_12f
1373 invoke-virtual/range {p2 .. p2}, [Ljava/lang/String;->clone()Ljava/lang/Object;
1375 - move-result-object v8
1376 + move-result-object v10
1378 - check-cast v8, [Ljava/lang/String;
1379 + check-cast v10, [Ljava/lang/String;
1381 - move-object v3, v8
1382 + move-object v3, v10
1384 - :goto_22
1385 - move-object v10, v2
1386 + :goto_119
1387 + move-object v15, v2
1389 - array-length v14, v10
1390 + array-length v0, v15
1392 - const/4 v13, 0x0
1393 + move/from16 v21, v0
1395 + const/16 v19, 0x0
1397 - :goto_25
1398 - if-ge v13, v14, :cond_36
1399 + :goto_11f
1400 + move/from16 v0, v19
1402 - aget-object v9, v10, v13
1403 + move/from16 v1, v21
1405 - if-nez v9, :cond_33
1406 + if-ge v0, v1, :cond_134
1408 - new-instance v8, Ljava/lang/NullPointerException;
1409 + aget-object v14, v15, v19
1411 - invoke-direct {v8}, Ljava/lang/NullPointerException;-><init>()V
1412 + if-nez v14, :cond_131
1414 - throw v8
1415 + new-instance v10, Ljava/lang/NullPointerException;
1417 - :cond_31
1418 + invoke-direct {v10}, Ljava/lang/NullPointerException;-><init>()V
1420 + throw v10
1422 + :cond_12f
1423 const/4 v3, 0x0
1425 - goto :goto_22
1426 + goto :goto_119
1428 - :cond_33
1429 - add-int/lit8 v13, v13, 0x1
1430 + :cond_131
1431 + add-int/lit8 v19, v19, 0x1
1433 - goto :goto_25
1434 + goto :goto_11f
1436 - :cond_36
1437 - if-eqz v3, :cond_4a
1438 + :cond_134
1439 + if-eqz v3, :cond_14f
1441 - move-object v10, v3
1442 + move-object v15, v3
1444 - array-length v14, v10
1445 + array-length v0, v15
1447 - const/4 v13, 0x0
1448 + move/from16 v21, v0
1450 + const/16 v19, 0x0
1452 + :goto_13c
1453 + move/from16 v0, v19
1455 + move/from16 v1, v21
1457 - :goto_3b
1458 - if-ge v13, v14, :cond_4a
1459 + if-ge v0, v1, :cond_14f
1461 - aget-object v12, v10, v13
1462 + aget-object v17, v15, v19
1464 - if-nez v12, :cond_47
1465 + if-nez v17, :cond_14c
1467 - new-instance v8, Ljava/lang/NullPointerException;
1468 + new-instance v10, Ljava/lang/NullPointerException;
1470 - invoke-direct {v8}, Ljava/lang/NullPointerException;-><init>()V
1471 + invoke-direct {v10}, Ljava/lang/NullPointerException;-><init>()V
1473 - throw v8
1474 + throw v10
1476 - :cond_47
1477 - add-int/lit8 v13, v13, 0x1
1478 + :cond_14c
1479 + add-int/lit8 v19, v19, 0x1
1481 - goto :goto_3b
1482 + goto :goto_13c
1484 - :cond_4a
1485 + :cond_14f
1486 new-instance v5, Ljava/io/FileDescriptor;
1488 invoke-direct {v5}, Ljava/io/FileDescriptor;-><init>()V
1489 @@ -508,161 +938,168 @@
1491 invoke-direct {v7}, Ljava/io/FileDescriptor;-><init>()V
1493 - if-nez p3, :cond_95
1494 + if-nez p3, :cond_196
1496 const/4 v4, 0x0
1498 - :goto_5c
1499 + :goto_161
1500 move-object/from16 v0, p0
1502 iget-object v0, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map;
1504 - move-object/from16 v19, v0
1505 + move-object/from16 v24, v0
1507 - monitor-enter v19
1508 + monitor-enter v24
1510 move/from16 v8, p4
1512 - :try_start_65
1513 + :try_start_16a
1514 invoke-static/range {v2 .. v8}, Ljava/lang/ProcessManager;->exec([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)I
1515 - :try_end_68
1516 - .catchall {:try_start_65 .. :try_end_68} :catchall_e3
1517 - .catch Ljava/io/IOException; {:try_start_65 .. :try_end_68} :catch_9a
1518 + :try_end_16d
1519 + .catchall {:try_start_16a .. :try_end_16d} :catchall_1dc
1520 + .catch Ljava/io/IOException; {:try_start_16a .. :try_end_16d} :catch_19b
1522 - move-result v15
1523 + move-result v9
1525 - :try_start_69
1526 - new-instance v16, Ljava/lang/ProcessManager$ProcessImpl;
1527 + if-eqz v20, :cond_1df
1529 - move-object/from16 v0, v16
1530 + :try_start_170
1531 + new-instance v8, Ljava/lang/ProcessManager$ProcessImpl;
1533 - invoke-direct {v0, v15, v5, v6, v7}, Ljava/lang/ProcessManager$ProcessImpl;-><init>(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
1534 + invoke-direct {v8, v9, v5, v6, v7}, Ljava/lang/ProcessManager$ProcessImpl;-><init>(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
1536 - new-instance v17, Ljava/lang/ProcessManager$ProcessReference;
1537 + :goto_175
1538 + new-instance v22, Ljava/lang/ProcessManager$ProcessReference;
1540 move-object/from16 v0, p0
1542 - iget-object v8, v0, Ljava/lang/ProcessManager;->referenceQueue:Ljava/lang/ProcessManager$ProcessReferenceQueue;
1543 + iget-object v10, v0, Ljava/lang/ProcessManager;->referenceQueue:Ljava/lang/ProcessManager$ProcessReferenceQueue;
1545 - move-object/from16 v0, v17
1546 + move-object/from16 v0, v22
1548 - move-object/from16 v1, v16
1550 - invoke-direct {v0, v1, v8}, Ljava/lang/ProcessManager$ProcessReference;-><init>(Ljava/lang/ProcessManager$ProcessImpl;Ljava/lang/ProcessManager$ProcessReferenceQueue;)V
1551 + invoke-direct {v0, v8, v10}, Ljava/lang/ProcessManager$ProcessReference;-><init>(Ljava/lang/ProcessManager$ProcessImpl;Ljava/lang/ProcessManager$ProcessReferenceQueue;)V
1553 move-object/from16 v0, p0
1555 - iget-object v8, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map;
1556 + iget-object v10, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map;
1558 - invoke-static {v15}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
1559 + invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
1561 - move-result-object v20
1562 + move-result-object v11
1564 - move-object/from16 v0, v20
1565 + move-object/from16 v0, v22
1567 - move-object/from16 v1, v17
1569 - invoke-interface {v8, v0, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
1570 + invoke-interface {v10, v11, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
1572 move-object/from16 v0, p0
1574 - iget-object v8, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map;
1575 + iget-object v10, v0, Ljava/lang/ProcessManager;->processReferences:Ljava/util/Map;
1577 - invoke-virtual {v8}, Ljava/lang/Object;->notifyAll()V
1578 + invoke-virtual {v10}, Ljava/lang/Object;->notifyAll()V
1580 - monitor-exit v19
1581 - :try_end_94
1582 - .catchall {:try_start_69 .. :try_end_94} :catchall_e3
1583 + monitor-exit v24
1584 + :try_end_195
1585 + .catchall {:try_start_170 .. :try_end_195} :catchall_1dc
1587 - return-object v16
1588 + return-object v8
1590 - :cond_95
1591 + :cond_196
1592 invoke-virtual/range {p3 .. p3}, Ljava/io/File;->getPath()Ljava/lang/String;
1594 move-result-object v4
1596 - goto :goto_5c
1598 - :catch_9a
1599 - move-exception v11
1600 + goto :goto_161
1602 - :try_start_9b
1603 - new-instance v18, Ljava/io/IOException;
1604 + :catch_19b
1605 + move-exception v16
1607 - new-instance v8, Ljava/lang/StringBuilder;
1608 + :try_start_19c
1609 + new-instance v23, Ljava/io/IOException;
1611 - invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
1612 + new-instance v10, Ljava/lang/StringBuilder;
1614 - const-string v20, "Error running exec(). Command: "
1615 + invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
1617 - move-object/from16 v0, v20
1618 + const-string v11, "Error running exec(). Command: "
1620 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1621 + invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1623 - move-result-object v8
1624 + move-result-object v10
1626 invoke-static {v2}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
1628 - move-result-object v20
1629 + move-result-object v11
1631 - move-object/from16 v0, v20
1632 + invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1634 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1635 + move-result-object v10
1637 - move-result-object v8
1638 + const-string v11, " Working Directory: "
1640 - const-string v20, " Working Directory: "
1641 + invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1643 - move-object/from16 v0, v20
1644 + move-result-object v10
1646 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1647 + move-object/from16 v0, p3
1649 - move-result-object v8
1650 + invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1652 - move-object/from16 v0, p3
1653 + move-result-object v10
1655 + const-string v11, " Environment: "
1657 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1658 + invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1660 - move-result-object v8
1661 + move-result-object v10
1663 - const-string v20, " Environment: "
1664 + invoke-static {v3}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
1666 - move-object/from16 v0, v20
1667 + move-result-object v11
1669 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1670 + invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1672 - move-result-object v8
1673 + move-result-object v10
1675 - invoke-static {v3}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
1676 + invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1678 - move-result-object v20
1679 + move-result-object v10
1681 - move-object/from16 v0, v20
1682 + move-object/from16 v0, v23
1684 - invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1685 + invoke-direct {v0, v10}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
1687 - move-result-object v8
1688 + move-object/from16 v0, v23
1690 + move-object/from16 v1, v16
1692 - invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1693 + invoke-virtual {v0, v1}, Ljava/io/IOException;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
1695 - move-result-object v8
1696 + throw v23
1698 - move-object/from16 v0, v18
1699 + :catchall_1dc
1700 + move-exception v10
1702 - invoke-direct {v0, v8}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
1703 + monitor-exit v24
1704 + :try_end_1de
1705 + .catchall {:try_start_19c .. :try_end_1de} :catchall_1dc
1707 - move-object/from16 v0, v18
1708 + throw v10
1710 + :cond_1df
1711 + :try_start_1df
1712 + new-instance v8, Ljava/lang/ProcessManager$ProcessImpl;
1714 + const/4 v13, 0x0
1716 - invoke-virtual {v0, v11}, Ljava/io/IOException;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
1717 + move-object v10, v5
1719 - throw v18
1720 + move-object v11, v6
1722 - :catchall_e3
1723 - move-exception v8
1724 + move-object v12, v7
1726 - monitor-exit v19
1727 - :try_end_e5
1728 - .catchall {:try_start_9b .. :try_end_e5} :catchall_e3
1729 + invoke-direct/range {v8 .. v13}, Ljava/lang/ProcessManager$ProcessImpl;-><init>(ILjava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)V
1730 + :try_end_1e8
1731 + .catchall {:try_start_1df .. :try_end_1e8} :catchall_1dc
1733 - throw v8
1734 + goto :goto_175
1735 .end method