Move mkdir_parents to libsudo_util.
This commit is contained in:
2
MANIFEST
2
MANIFEST
@@ -114,6 +114,7 @@ lib/util/lbuf.c
|
||||
lib/util/locking.c
|
||||
lib/util/memrchr.c
|
||||
lib/util/memset_s.c
|
||||
lib/util/mkdir_parents.c
|
||||
lib/util/mksiglist.c
|
||||
lib/util/mksiglist.h
|
||||
lib/util/mksigname.c
|
||||
@@ -349,7 +350,6 @@ plugins/sudoers/match_addr.c
|
||||
plugins/sudoers/match_command.c
|
||||
plugins/sudoers/match_digest.c
|
||||
plugins/sudoers/mkdefaults
|
||||
plugins/sudoers/mkdir_parents.c
|
||||
plugins/sudoers/parse.c
|
||||
plugins/sudoers/parse.h
|
||||
plugins/sudoers/parse_ldif.c
|
||||
|
@@ -213,6 +213,10 @@ __dso_public bool sudo_lock_file_v1(int fd, int action);
|
||||
__dso_public bool sudo_lock_region_v1(int fd, int action, off_t len);
|
||||
#define sudo_lock_region(_a, _b, _c) sudo_lock_region_v1((_a), (_b), (_c))
|
||||
|
||||
/* mkdir_parents.c */
|
||||
__dso_public bool sudo_mkdir_parents_v1(char *path, uid_t uid, gid_t gid, mode_t mode, bool quiet);
|
||||
#define sudo_mkdir_parents(_a, _b, _c, _d, _e) sudo_mkdir_parents_v1((_a), (_b), (_c), (_d), (_e))
|
||||
|
||||
/* parseln.c */
|
||||
__dso_public ssize_t sudo_parseln_v1(char **buf, size_t *bufsize, unsigned int *lineno, FILE *fp);
|
||||
__dso_public ssize_t sudo_parseln_v2(char **buf, size_t *bufsize, unsigned int *lineno, FILE *fp, int flags);
|
||||
|
@@ -115,11 +115,12 @@ DEVEL = @DEVEL@
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
LTOBJS = @DIGEST@ event.lo fatal.lo key_val.lo gethostname.lo gettime.lo \
|
||||
getgrouplist.lo gidlist.lo lbuf.lo locking.lo parseln.lo progname.lo \
|
||||
secure_path.lo setgroups.lo strsplit.lo strtobool.lo strtoid.lo \
|
||||
strtomode.lo strtonum.lo sudo_conf.lo sudo_debug.lo sudo_dso.lo \
|
||||
term.lo ttyname_dev.lo ttysize.lo @COMMON_OBJS@ @LTLIBOBJS@
|
||||
LTOBJS = @DIGEST@ event.lo fatal.lo key_val.lo gethostname.lo \
|
||||
gettime.lo getgrouplist.lo gidlist.lo lbuf.lo locking.lo \
|
||||
mkdir_parents.lo parseln.lo progname.lo secure_path.lo \
|
||||
setgroups.lo strsplit.lo strtobool.lo strtoid.lo strtomode.lo \
|
||||
strtonum.lo sudo_conf.lo sudo_debug.lo sudo_dso.lo term.lo \
|
||||
ttyname_dev.lo ttysize.lo @COMMON_OBJS@ @LTLIBOBJS@
|
||||
|
||||
IOBJS = $(LTOBJS:.lo=.i)
|
||||
|
||||
@@ -784,6 +785,20 @@ memset_s.i: $(srcdir)/memset_s.c $(incdir)/sudo_compat.h \
|
||||
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||
memset_s.plog: memset_s.i
|
||||
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/memset_s.c --i-file $< --output-file $@
|
||||
mkdir_parents.lo: $(srcdir)/mkdir_parents.c $(incdir)/compat/stdbool.h \
|
||||
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
|
||||
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
|
||||
$(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
|
||||
$(top_builddir)/config.h
|
||||
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/mkdir_parents.c
|
||||
mkdir_parents.i: $(srcdir)/mkdir_parents.c $(incdir)/compat/stdbool.h \
|
||||
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
|
||||
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
|
||||
$(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
|
||||
$(top_builddir)/config.h
|
||||
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||
mkdir_parents.plog: mkdir_parents.i
|
||||
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/mkdir_parents.c --i-file $< --output-file $@
|
||||
mksiglist.lo: $(srcdir)/mksiglist.c $(incdir)/sudo_compat.h \
|
||||
$(srcdir)/mksiglist.h $(top_builddir)/config.h
|
||||
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/mksiglist.c
|
||||
|
@@ -27,6 +27,11 @@
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
# include "compat/stdbool.h"
|
||||
#endif /* HAVE_STDBOOL_H */
|
||||
#ifdef HAVE_STRING_H
|
||||
# include <string.h>
|
||||
#endif /* HAVE_STRING_H */
|
||||
@@ -38,18 +43,24 @@
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
|
||||
#include "sudoers.h"
|
||||
#define DEFAULT_TEXT_DOMAIN "sudo"
|
||||
#include "sudo_gettext.h" /* must be included before sudo_compat.h */
|
||||
|
||||
#include "sudo_compat.h"
|
||||
#include "sudo_fatal.h"
|
||||
#include "sudo_debug.h"
|
||||
#include "sudo_util.h"
|
||||
|
||||
/*
|
||||
* Create any parent directories needed by path (but not path itself).
|
||||
* Note that path is modified but is restored before it returns.
|
||||
*/
|
||||
bool
|
||||
sudo_mkdir_parents(char *path, uid_t uid, gid_t gid, mode_t mode, bool quiet)
|
||||
sudo_mkdir_parents_v1(char *path, uid_t uid, gid_t gid, mode_t mode, bool quiet)
|
||||
{
|
||||
struct stat sb;
|
||||
char *slash = path;
|
||||
debug_decl(sudo_mkdir_parents, SUDOERS_DEBUG_UTIL)
|
||||
debug_decl(sudo_mkdir_parents, SUDO_DEBUG_UTIL)
|
||||
|
||||
/* cppcheck-suppress nullPointerRedundantCheck */
|
||||
while ((slash = strchr(slash + 1, '/')) != NULL) {
|
@@ -88,6 +88,7 @@ sudo_lbuf_init_v1
|
||||
sudo_lbuf_print_v1
|
||||
sudo_lock_file_v1
|
||||
sudo_lock_region_v1
|
||||
sudo_mkdir_parents_v1
|
||||
sudo_new_key_val_v1
|
||||
sudo_parse_gids_v1
|
||||
sudo_parseln_v1
|
||||
|
@@ -165,7 +165,7 @@ LIBPARSESUDOERS_IOBJS = $(LIBPARSESUDOERS_OBJS:.lo=.i) passwd.i
|
||||
SUDOERS_OBJS = $(AUTH_OBJS) boottime.lo check.lo editor.lo env.lo \
|
||||
env_pattern.lo file.lo find_path.lo fmtsudoers.lo gc.lo \
|
||||
goodpath.lo group_plugin.lo interfaces.lo iolog.lo \
|
||||
iolog_path.lo locale.lo logging.lo logwrap.lo mkdir_parents.lo \
|
||||
iolog_path.lo locale.lo logging.lo logwrap.lo \
|
||||
parse.lo policy.lo prompt.lo set_perms.lo starttime.lo \
|
||||
sudo_nss.lo sudoers.lo timestamp.lo @SUDOERS_OBJS@
|
||||
|
||||
@@ -217,7 +217,7 @@ CHECK_IOLOG_PATH_OBJS = check_iolog_path.o iolog_path.lo locale.lo \
|
||||
pwutil.lo pwutil_impl.lo redblack.lo sudoers_debug.lo
|
||||
|
||||
CHECK_IOLOG_PLUGIN_OBJS = check_iolog_plugin.o iolog.lo iolog_path.lo \
|
||||
iolog_util.o locale.lo mkdir_parents.lo pwutil.lo \
|
||||
iolog_util.o locale.lo pwutil.lo \
|
||||
pwutil_impl.lo redblack.lo sudoers_debug.lo
|
||||
|
||||
CHECK_IOLOG_UTIL_OBJS = check_iolog_util.o iolog_util.o locale.lo \
|
||||
@@ -1871,28 +1871,6 @@ match_digest.i: $(srcdir)/match_digest.c $(devdir)/def_data.h \
|
||||
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||
match_digest.plog: match_digest.i
|
||||
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/match_digest.c --i-file $< --output-file $@
|
||||
mkdir_parents.lo: $(srcdir)/mkdir_parents.c $(devdir)/def_data.h \
|
||||
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
||||
$(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
|
||||
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
|
||||
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
|
||||
$(incdir)/sudo_util.h $(srcdir)/defaults.h \
|
||||
$(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
|
||||
$(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
|
||||
$(top_builddir)/config.h $(top_builddir)/pathnames.h
|
||||
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/mkdir_parents.c
|
||||
mkdir_parents.i: $(srcdir)/mkdir_parents.c $(devdir)/def_data.h \
|
||||
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
|
||||
$(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
|
||||
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
|
||||
$(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
|
||||
$(incdir)/sudo_util.h $(srcdir)/defaults.h \
|
||||
$(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
|
||||
$(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
|
||||
$(top_builddir)/config.h $(top_builddir)/pathnames.h
|
||||
$(CC) -E -o $@ $(CPPFLAGS) $<
|
||||
mkdir_parents.plog: mkdir_parents.i
|
||||
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/mkdir_parents.c --i-file $< --output-file $@
|
||||
net_ifs.o: $(top_srcdir)/src/net_ifs.c $(incdir)/compat/stdbool.h \
|
||||
$(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
|
||||
$(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \
|
||||
|
@@ -421,9 +421,6 @@ extern const char *path_plugin_dir;
|
||||
char *find_editor(int nfiles, char **files, int *argc_out, char ***argv_out,
|
||||
char * const *whitelist, const char **env_editor, bool env_error);
|
||||
|
||||
/* mkdir_parents.c */
|
||||
bool sudo_mkdir_parents(char *path, uid_t uid, gid_t gid, mode_t mode, bool quiet);
|
||||
|
||||
/* gc.c */
|
||||
enum sudoers_gc_types {
|
||||
GC_UNKNOWN,
|
||||
|
Reference in New Issue
Block a user