Subject: Re: bug#64445: 30.0.50; Android: Emacs cannot access /storage/emulated/0 although other apps can

From: Po Lu <[email-masked]>
Date: Wed, 05 Jul 2023 20:21:29 +0800

Milan Zamazal <[email-masked]> writes:

>>>>>> "PL" == Po Lu <[email-masked]> writes:
>
>     PL> Milan Zamazal <[email-masked]> writes:
>     >> W org.gnu.emacs: type=1400 audit(0.0:910): avc: denied { read }
>     >> for comm=456D616373206D61696E2074687265 name="/" dev="dm-0" ino=2
>     >> scontext=u:r:untrusted_app:s0:c157,c256,c512,c768
>     >> tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0
>
>     PL> Right... how exactly are you trying to access /sdcard?  Through
>     PL> Dired?
>
> Yes, for example: ‘C-x C-f /sdcard/ RET’
>
>     PL> If so, my guess is that ls-lisp is trying to stat the root file
>     PL> system, which is forbidden by some versions of Android.  Would
>     PL> you please enable debug-on-error (Options -> Enter Debugger on
>     PL> Error) and display the backtrace from whatever file access
>     PL> operation complains?
>
> It's this one:
>
>   directory-files-and-attributes("/sdcard/" nil nil t string)
>
> I also tried what happens in ‘M-x shell‘ and for example ‘cat’ does the
> same:
>
>   $ cat /sdcard/existent-file
>   cat: /sdcard/existent-file: Permission denied
>   $ cat /sdcard/non-existent-file
>   cat: /sdcard/non-existent-file: No such file or directory
>
> This at least verifies that /sdcard points to the right location.
>
> The same happens in Termux if and only if I remove the given storage
> permission from it.  But in Emacs, it happens whether the permission is
> given or not.

I think this should now be fixed.  Prebuilts will be available in
approximately 20 minutes.  Would you please test them and ack?