I'm confused. Who has a free() that clobbers errno?
Claudio Jeker <cje...@diehard.n-r-g.com> wrote: > Noticed while looking at the same version in rsync. free() may clobber > errno so better save the value before calling free(). > Also update the comment, remove all those arguments I removed :) > > -- > :wq Claudio > > Index: mkdir.c > =================================================================== > RCS file: /cvs/src/usr.sbin/rpki-client/mkdir.c,v > retrieving revision 1.6 > diff -u -p -r1.6 mkdir.c > --- mkdir.c 29 Mar 2021 04:01:17 -0000 1.6 > +++ mkdir.c 6 May 2021 16:41:16 -0000 > @@ -39,15 +39,13 @@ > > /* > * mkpath -- create directories. > - * path - path > - * mode - file mode of terminal directory > - * dir_mode - file mode of intermediate directories > + * dir - path to create directories for > */ > int > mkpath(const char *dir) > { > char *path, *slash; > - int done; > + int done, save_errno; > > if ((path = strdup(dir)) == NULL) > return -1; > @@ -61,7 +59,9 @@ mkpath(const char *dir) > *slash = '\0'; > > if (mkdir(path, 0755) == -1 && errno != EEXIST) { > + save_errno = errno; > free(path); > + errno = save_errno; > return -1; > } > >