(restored cc line for list; keep discussion on list please)
Yes, of course you can use binder; surfaceflinger is already a binder
service, and there are commands and services under frameworks/native
that are using Binder IPC. Look under frameworks/native/cmds and
frameworks/native/service.
It is already allowed for surfaceflinger to create and pass back a Unix
domain socket over binder to a client, and then have the client use that
socket; that is an already existing pattern in Android.
What is not currently allowed is for surfaceflinger to create Unix
domain socket and have an app connect to that socket directly. We
generally only do that for native daemons that don't use binder at all.
If there is some genuine reason for doing that instead, you could
perhaps allow it in your device-specific policy. But first I'd
recommend trying to handle it in the standard Android way, i.e. using
binder. And definitely do not use UDP.
On 01/08/2015 09:53 AM, Daniel Doron wrote:
> Hi Stephen,
>
> Could I use the binder directly inside the native framework? Any
> examples available?
> up to kitkat I could create a unix domain socket server inside
> surfaceflinger (SOCKE_STREAM) and communicate with it from zygote or
> bootanim context. With lollipop this does not work anymore.
>
> the udp was an attempt to get around this either via AF_INET or
> AF_LOCAL. of course neither work ("permission denied").
>
> Daniel.
>
> On Thu, Jan 8, 2015 at 4:24 PM, Stephen Smalley <[email protected]> wrote:
>> On 01/08/2015 02:49 AM, Daniel Doron wrote:
>>> Hi
>>>
>>> please excuse my newb question, I am still trying to make head and tails
>>> of the new security restriction in Android 5.0.*.
>>>
>>> my goal in the end is communicating via IPC or UDP with surfaceflinger
>>> from an App (untrusted_app or shell for testing).
>>> IPC : I get and audit message restricting this
>>> UDP : I get a denied { create }
>>>
>>> Is there anyway (permitted) that I can communicate with surfacefliger
>>> without making changes to the .te file?
>>
>> Current policy allows binder IPC between any app domain (including
>> shell) and surfaceflinger. Not sure what you mean by IPC above; if
>> System V IPC, that has never been supported on Android. UDP would be
>> more costly and less secure than using Binder. You can then pass open
>> file descriptors across the binder IPC in order to perform direct file
>> or socket I/O. That also is allowed by policy. You'd need to show your
>> actual denials if you want more help on those.
>>
>>
>>
>>
>
>
_______________________________________________
Seandroid-list mailing list
[email protected]
To unsubscribe, send email to [email protected].
To get help, send an email containing "help" to
[email protected].