parity-tokio-ipc icon indicating copy to clipboard operation
parity-tokio-ipc copied to clipboard

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

Open ancwrd1 opened this issue 1 year ago • 0 comments

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.

ancwrd1 avatar Feb 02 '23 12:02 ancwrd1