paritytech / parity-tokio-ipc

Parity tokio-ipc
Apache License 2.0
76 stars 48 forks source link

SecurityAttribute::allow_everyone_connect doesn't work on Windows as expected #37

Open ancwrd1 opened 1 year ago

ancwrd1 commented 1 year ago

I have two IPC endpoints: the server part is a system service which calls Endpoint::new and then endpoint.set_security_attributes(SecurityAttributes::empty().allow_everyone_connect().

The client part is a user-level app which does read/write to it. An attempt to write to this endpoint from the client causes "Access denied" system error. The problem goes away if I use allow_everyone_create and the code is guarded like this:

            if cfg!(windows) {
                endpoint.set_security_attributes(SecurityAttributes::allow_everyone_create()?);
            } else {
                endpoint.set_security_attributes(SecurityAttributes::empty().allow_everyone_connect()?);
            }

The only difference as far as I can see is FILE_WRITE_DATA vs GENERIC_WRITE.

P.S. Another thing I noticed is that the API around SecurityAttributes is not very consistent: some methods are static, others require &self parameter.