Commit 8ff2897
committed
fix: prevent black screen crash loop on reboot when keystore decryption fails
When keystore key material changes (e.g. after keystore modification),
decrypt() returns null causing a NullPointerException in readSPSuperKey()
that crashes APApplication.onCreate() before any UI renders. The
uncaughtException handler then re-triggers the same crash in an infinite loop.
- Add null check after decrypt() in APatchKeyHelper.readSPSuperKey(), clear
corrupted encrypted key and fall through to fallback chain
- Add crash loop detection in uncaughtException handler (SharedPreferences
counter with 30s window, skip CrashHandleActivity after threshold)
- Wrap superKey loading in try-catch as defense-in-depth1 parent 92fe518 commit 8ff2897
4 files changed
Lines changed: 59 additions & 26 deletions
File tree
- app/src/main/java/me/bmax/apatch/ui/screen
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
43 | 49 | | |
44 | 50 | | |
45 | 51 | | |
| |||
280 | 286 | | |
281 | 287 | | |
282 | 288 | | |
283 | | - | |
| 289 | + | |
284 | 290 | | |
285 | 291 | | |
286 | 292 | | |
| |||
559 | 565 | | |
560 | 566 | | |
561 | 567 | | |
562 | | - | |
| 568 | + | |
563 | 569 | | |
564 | 570 | | |
565 | 571 | | |
| |||
723 | 729 | | |
724 | 730 | | |
725 | 731 | | |
726 | | - | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
727 | 737 | | |
728 | 738 | | |
729 | 739 | | |
| 740 | + | |
730 | 741 | | |
731 | 742 | | |
732 | 743 | | |
| |||
738 | 749 | | |
739 | 750 | | |
740 | 751 | | |
741 | | - | |
| 752 | + | |
742 | 753 | | |
743 | 754 | | |
744 | 755 | | |
| |||
805 | 816 | | |
806 | 817 | | |
807 | 818 | | |
808 | | - | |
| 819 | + | |
809 | 820 | | |
810 | | - | |
| 821 | + | |
811 | 822 | | |
812 | 823 | | |
813 | 824 | | |
| |||
818 | 829 | | |
819 | 830 | | |
820 | 831 | | |
821 | | - | |
| 832 | + | |
822 | 833 | | |
823 | 834 | | |
824 | 835 | | |
| |||
881 | 892 | | |
882 | 893 | | |
883 | 894 | | |
884 | | - | |
885 | | - | |
886 | 895 | | |
887 | 896 | | |
888 | 897 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
38 | 44 | | |
39 | 45 | | |
40 | 46 | | |
| |||
240 | 246 | | |
241 | 247 | | |
242 | 248 | | |
243 | | - | |
| 249 | + | |
244 | 250 | | |
245 | 251 | | |
246 | 252 | | |
| |||
657 | 663 | | |
658 | 664 | | |
659 | 665 | | |
660 | | - | |
| 666 | + | |
661 | 667 | | |
662 | 668 | | |
663 | 669 | | |
| |||
709 | 715 | | |
710 | 716 | | |
711 | 717 | | |
712 | | - | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
713 | 723 | | |
714 | 724 | | |
715 | 725 | | |
| 726 | + | |
716 | 727 | | |
717 | 728 | | |
718 | 729 | | |
| |||
724 | 735 | | |
725 | 736 | | |
726 | 737 | | |
727 | | - | |
| 738 | + | |
728 | 739 | | |
729 | | - | |
| 740 | + | |
730 | 741 | | |
731 | 742 | | |
732 | 743 | | |
| |||
737 | 748 | | |
738 | 749 | | |
739 | 750 | | |
740 | | - | |
| 751 | + | |
741 | 752 | | |
742 | 753 | | |
743 | 754 | | |
| |||
760 | 771 | | |
761 | 772 | | |
762 | 773 | | |
763 | | - | |
764 | | - | |
765 | | - | |
766 | 774 | | |
767 | 775 | | |
768 | 776 | | |
| |||
Lines changed: 12 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
9 | 11 | | |
10 | 12 | | |
11 | 13 | | |
| |||
17 | 19 | | |
18 | 20 | | |
19 | 21 | | |
| 22 | + | |
20 | 23 | | |
21 | 24 | | |
22 | 25 | | |
| |||
121 | 124 | | |
122 | 125 | | |
123 | 126 | | |
124 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
125 | 132 | | |
126 | 133 | | |
127 | | - | |
| 134 | + | |
| 135 | + | |
128 | 136 | | |
129 | | - | |
| 137 | + | |
130 | 138 | | |
131 | 139 | | |
132 | 140 | | |
| |||
Lines changed: 12 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| 21 | + | |
19 | 22 | | |
20 | 23 | | |
21 | 24 | | |
| |||
122 | 125 | | |
123 | 126 | | |
124 | 127 | | |
125 | | - | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
126 | 133 | | |
127 | 134 | | |
128 | | - | |
| 135 | + | |
| 136 | + | |
129 | 137 | | |
130 | | - | |
| 138 | + | |
131 | 139 | | |
132 | 140 | | |
133 | 141 | | |
| |||
0 commit comments