Skip to content

more open-like O_CREAT support? #192

@cyphar

Description

@cyphar

At the moment, Root::create_file is explcitly O_CREAT|O_EXCL|O_NOFOLLOW which is the most secure and straight-forward implemementation that will work regardless of the resolver implementation.

However, it seems possible users might prefer having more open-like O_CREAT support. Namely:

  1. O_CREAT without O_EXCL, to allow you to create-or-open an existing directory (possibly with O_TRUNC). This is a fairly common thing programs do, so blocking it in the interests of safety is probably something people will bristle against.
  2. O_CREAT without O_NOFOLLOW allows you to create the target of a dangling symlink. I suspect this is a very rarely-used feature of O_CREAT (and I view it as a mis-feature) but it is something that it is not reasonably possible to emulate as a libpathrs user without going through a lot of hoops. It's not clear to me whether this is going to be reasonable to implement for the O_PATH resolver (for openat2 it's trivial).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions