[pulseaudio-discuss] [PATCH 1/2] core-util: Make pa_make_secure_dir() act like mkdir -p
Arun Raghavan
arun.raghavan at collabora.co.uk
Mon Jun 11 02:06:23 PDT 2012
On Mon, 2012-06-11 at 10:00 +0200, David Henningsson wrote:
> On 06/11/2012 09:48 AM, Arun Raghavan wrote:
> > This makes pa_make_secure_dir() create any missing parent directories in
> > the given path as well. This is useful, for example, on a pristine
> > system with a clean $HOME that needs ~/.config/pulse/ to be created when
> > ~/.config does not exist.
>
> Hum, is moving from ~/.pulse to ~/.config/pulse something we've done
> post 2.0? Or is this patch to make it easier for special configurations?
This is something that's been done post 2.0.
> > ---
> > src/pulsecore/core-util.c | 6 ++++++
> > 1 files changed, 6 insertions(+), 0 deletions(-)
> >
> > diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
> > index 82480c6..5270979 100644
> > --- a/src/pulsecore/core-util.c
> > +++ b/src/pulsecore/core-util.c
> > @@ -230,6 +230,12 @@ int pa_make_secure_dir(const char* dir, mode_t m, uid_t uid, gid_t gid) {
> > mode_t u;
> > u = umask((~m)& 0777);
> > r = mkdir(dir, m);
> > + if (r< 0&& errno == ENOENT) {
> > + /* If a parent directory in the path doesn't exist, try to create that
> > + * first, then try again. */
> > + pa_make_secure_parent_dir(dir, m, uid, gid);
>
> Hm, is there a possibility to get infinite recursion by specifying
> strange paths such as ./ and ../ here?
There should not be -- each step removes a path component, so it should
always end in a finite number of steps.
>
> > + r = mkdir(dir, m);
> > + }
> > umask(u);
> > }
> > #endif
>
Thanks for the review,
Arun
More information about the pulseaudio-discuss
mailing list