Skip to content

Commit 16910c0

Browse files
committed
Check for more potential NPE
1 parent 768c66d commit 16910c0

File tree

3 files changed

+41
-23
lines changed

3 files changed

+41
-23
lines changed

app/src/main/java/com/sentaroh/android/Utilities3/LocalMountPoint.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ static public ArrayList<String> getLocalMountpointList2(Context c) {
281281
return new_ml;
282282
}
283283

284+
// not used, fix File NPE before use
284285
@SuppressLint("SdCardPath")
285286
static public ArrayList<String> getLocalMountPointList(Context c) {
286287
String pkg_name=c.getClass().getPackage().getName();
@@ -353,19 +354,20 @@ static public ArrayList<String> getLocalMountPointList(Context c) {
353354
addMountPointPrimaryAndSecondary("/storage/external_SD", ml, pkg_name);
354355

355356
// File[] ext_dirs =ContextCompat.getExternalFilesDirs(c, null);
356-
File[] ext_dirs =c.getExternalFilesDirs(null);
357-
if (ext_dirs!=null) {
358-
for (int i=0;i<ext_dirs.length;i++) {
359-
if (ext_dirs[i]!=null && ext_dirs[i].getPath()!=null) {
360-
if (!ext_dirs[i].getPath().startsWith(primary_esd)) {
361-
boolean found=false;
362-
for(int j=0;j<ml.size();j++) {
363-
if (ext_dirs[i].getPath().equals(ml.get(j))) {
364-
found=true;
357+
File[] ext_dirs = c.getExternalFilesDirs(null);
358+
if (ext_dirs != null) {
359+
for (int i=0; i < ext_dirs.length; i++) {
360+
if (ext_dirs[i] != null) {
361+
String ext_dir_path = ext_dirs[i].getPath();
362+
if (ext_dir_path != null && !ext_dir_path.startsWith(primary_esd)) {
363+
boolean found = false;
364+
for(int j=0; j < ml.size(); j++) {
365+
if (ext_dir_path.equals(ml.get(j))) {
366+
found = true;
365367
break;
366368
}
367369
}
368-
if (!found) ml.add(ext_dirs[i].getPath());
370+
if (!found) ml.add(ext_dir_path);
369371
}
370372
}
371373
}

app/src/main/java/com/sentaroh/android/Utilities3/LogUtil/CommonLogManagementFragment.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,9 +1466,14 @@ public void showDialog(Context c, FragmentManager fm, Fragment frag, NotifyEvent
14661466
ft.commitAllowingStateLoss();
14671467
mNotifyUpdateLogOption=ntfy;
14681468
} else {
1469-
File lf=c.getExternalFilesDirs(null)[0];
1469+
String fp = "";
1470+
File[] fl=c.getExternalFilesDirs(null);
1471+
if (fl != null) {
1472+
File lf=fl[0];
1473+
if (lf != null) fp = lf.getPath(); // internal storage app specific dir
1474+
}
14701475
MessageDialogFragment mdf=MessageDialogFragment.newInstance(false, "E",
1471-
c.getString(R.string.msgs_log_can_not_start_log_mgmt), "file="+lf);
1476+
c.getString(R.string.msgs_log_can_not_start_log_mgmt), "file="+fp);
14721477
mdf.showDialog(fm, mdf, null);
14731478
}
14741479
};

app/src/main/java/com/sentaroh/android/Utilities3/SafManager3.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -225,13 +225,13 @@ private ArrayList<SafStorage3> buildSafFileList() {
225225
if (!item_svi.isDuplicate) {
226226
if (isScopedStorageMode()) {
227227
rt=SafFile3.fromTreeUri(mContext, Uri.parse(SAF_FILE_DOCUMENT_TREE_URI_PREFIX+item_svi.uuid+"%3A"));
228-
if (rt.exists()) {//Internal storage, SDCARD or USB
228+
if (rt != null && rt.exists()) {//Internal storage, SDCARD or USB
229229
SafStorage3 sli=new SafStorage3();
230230
sli.description=item_svi.description;
231231
sli.uuid=item_svi.uuid;
232232
sli.saf_file =rt;
233233
sli.isSafFile=true;
234-
sli.appDirectory=getAppSpecificDirectory(mContext, item_svi.uuid);
234+
sli.appDirectory=getAppSpecificDirectory(mContext, item_svi.uuid);
235235
saf_list.add(sli);
236236
}
237237
} else {
@@ -243,9 +243,12 @@ private ArrayList<SafStorage3> buildSafFileList() {
243243
sli.isSafFile=false;
244244
sli.appDirectory=getAppSpecificDirectory(mContext, item_svi.uuid);
245245
sli.appMountpoint=baseMp;
246-
String fp=mContext.getExternalFilesDirs(null)[0].getPath();
247-
sli.saf_file=new SafFile3(mContext, fp.substring(0, fp.indexOf("/Android/data")));
248-
saf_list.add(sli);
246+
File[] fl=mContext.getExternalFilesDirs(null);
247+
if (fl != null && fl[0] != null) {
248+
String fp=fl[0].getPath();
249+
sli.saf_file=new SafFile3(mContext, fp.substring(0, fp.indexOf("/Android/data")));
250+
saf_list.add(sli);
251+
}
249252
} else {//SDCARD or USB
250253
File lf=new File(SafFile3.SAF_FILE_EXTERNAL_STORAGE_PREFIX+ item_svi.uuid);
251254
if (lf.exists()) {
@@ -272,13 +275,16 @@ private ArrayList<SafStorage3> buildSafFileList() {
272275
sli.description=item_svi.description;
273276
sli.uuid=SAF_FILE_PRIMARY_UUID;
274277
sli.isSafFile=false;
275-
sli.appDirectory=mContext.getExternalFilesDirs(null)[0].getPath();
276-
sli.appMountpoint=baseMp;
277-
sli.saf_file=new SafFile3(mContext, SAF_FILE_PRIMARY_STORAGE_PREFIX);
278-
saf_list.add(sli);
278+
File[] fl=mContext.getExternalFilesDirs(null);
279+
if (fl != null && fl[0] != null) {
280+
sli.appDirectory=fl[0].getPath();
281+
sli.appMountpoint=baseMp;
282+
sli.saf_file=new SafFile3(mContext, SAF_FILE_PRIMARY_STORAGE_PREFIX);
283+
saf_list.add(sli);
284+
}
279285
} else {
280286
rt=SafFile3.fromTreeUri(mContext, Uri.parse(SAF_FILE_DOCUMENT_TREE_URI_PREFIX+item_svi.uuid+"%3A"));
281-
if (rt.exists()) {
287+
if (rt != null && rt.exists()) {
282288
SafStorage3 sli=new SafStorage3();
283289
sli.description=item_svi.description;
284290
sli.uuid=item_svi.uuid;
@@ -316,7 +322,12 @@ public int compare(SafStorage3 l1, SafStorage3 r1) {
316322

317323
static private String getAppSpecificDirectory(Context c, String uuid) {
318324
String app_dir = null;
319-
File[] fl =c.getExternalFilesDirs(null); // null for no subdirectory
325+
if (uuid == null) {
326+
log.debug("getAppSpecificDirectory Error: null uuid specified");
327+
return app_dir;
328+
}
329+
330+
File[] fl = c.getExternalFilesDirs(null); // null for no subdirectory
320331
if (fl != null) {
321332
if (uuid.equals(SAF_FILE_PRIMARY_UUID) && fl[0] != null) {
322333
app_dir=fl[0].getPath(); // -> /storage/emulated/0/Android/data/com.sentaroh.android.SMBSync3/files/

0 commit comments

Comments
 (0)