Require symlink support

Require lstat(2), lchown(2), S_IFLNK and S_ISLNK from POSIX.1-2001.

Already unconditionally used in lib/tcbfuncs.c and lib/run_part.c.
This commit is contained in:
Christian Göttsche 2022-08-05 17:57:24 +02:00 committed by Serge Hallyn
parent f6f8bcd2a5
commit dab764d019
4 changed files with 3 additions and 27 deletions

View File

@ -49,7 +49,7 @@ AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])])
AC_CHECK_FUNCS(arc4random_buf l64a fchmod fchown fsync futimes \ AC_CHECK_FUNCS(arc4random_buf l64a fchmod fchown fsync futimes \
getentropy getrandom getspnam getusershell \ getentropy getrandom getspnam getusershell \
getutent initgroups lchown lckpwdf lstat lutimes \ getutent initgroups lckpwdf lutimes \
setgroups updwtmp updwtmpx innetgr getpwnam_r \ setgroups updwtmp updwtmpx innetgr getpwnam_r \
getpwuid_r getgrnam_r getgrgid_r getspnam_r \ getpwuid_r getgrnam_r getgrgid_r getspnam_r \
memset_s explicit_bzero) memset_s explicit_bzero)

View File

@ -65,7 +65,6 @@ int lrename (const char *old, const char *new)
int res; int res;
char *r = NULL; char *r = NULL;
#if defined(S_ISLNK)
#ifndef __GLIBC__ #ifndef __GLIBC__
char resolved_path[PATH_MAX]; char resolved_path[PATH_MAX];
#endif /* !__GLIBC__ */ #endif /* !__GLIBC__ */
@ -82,7 +81,6 @@ int lrename (const char *old, const char *new)
new = r; new = r;
} }
} }
#endif /* S_ISLNK */
res = rename (old, new); res = rename (old, new);

View File

@ -205,22 +205,6 @@ static inline void memzero(void *ptr, size_t size)
# define SEEK_END 2 # define SEEK_END 2
#endif #endif
#ifndef S_ISLNK
#define S_ISLNK(x) (0)
#endif
#if HAVE_LCHOWN
#define LCHOWN lchown
#else
#define LCHOWN chown
#endif
#if HAVE_LSTAT
#define LSTAT lstat
#else
#define LSTAT stat
#endif
#if HAVE_TERMIOS_H #if HAVE_TERMIOS_H
# include <termios.h> # include <termios.h>
# define STTY(fd, termio) tcsetattr(fd, TCSANOW, termio) # define STTY(fd, termio) tcsetattr(fd, TCSANOW, termio)

View File

@ -56,14 +56,12 @@ static int copy_dir (const char *src, const char *dst,
const struct stat *statp, const struct timeval mt[], const struct stat *statp, const struct timeval mt[],
uid_t old_uid, uid_t new_uid, uid_t old_uid, uid_t new_uid,
gid_t old_gid, gid_t new_gid); gid_t old_gid, gid_t new_gid);
#ifdef S_IFLNK
static /*@null@*/char *readlink_malloc (const char *filename); static /*@null@*/char *readlink_malloc (const char *filename);
static int copy_symlink (const char *src, const char *dst, static int copy_symlink (const char *src, const char *dst,
unused bool reset_selinux, unused bool reset_selinux,
const struct stat *statp, const struct timeval mt[], const struct stat *statp, const struct timeval mt[],
uid_t old_uid, uid_t new_uid, uid_t old_uid, uid_t new_uid,
gid_t old_gid, gid_t new_gid); gid_t old_gid, gid_t new_gid);
#endif /* S_IFLNK */
static int copy_hardlink (const char *dst, static int copy_hardlink (const char *dst,
unused bool reset_selinux, unused bool reset_selinux,
struct link_name *lp); struct link_name *lp);
@ -223,7 +221,7 @@ int copy_tree (const char *src_root, const char *dst_root,
return -1; return -1;
} }
if (LSTAT (src_root, &sb) == -1) { if (lstat (src_root, &sb) == -1) {
return -1; return -1;
} }
@ -364,7 +362,7 @@ static int copy_entry (const char *src, const char *dst,
struct link_name *lp; struct link_name *lp;
struct timeval mt[2]; struct timeval mt[2];
if (LSTAT (src, &sb) == -1) { if (lstat (src, &sb) == -1) {
/* If we cannot stat the file, do not care. */ /* If we cannot stat the file, do not care. */
} else { } else {
#ifdef HAVE_STRUCT_STAT_ST_ATIM #ifdef HAVE_STRUCT_STAT_ST_ATIM
@ -396,7 +394,6 @@ static int copy_entry (const char *src, const char *dst,
old_uid, new_uid, old_gid, new_gid); old_uid, new_uid, old_gid, new_gid);
} }
#ifdef S_IFLNK
/* /*
* Copy any symbolic links * Copy any symbolic links
*/ */
@ -405,7 +402,6 @@ static int copy_entry (const char *src, const char *dst,
err = copy_symlink (src, dst, reset_selinux, &sb, mt, err = copy_symlink (src, dst, reset_selinux, &sb, mt,
old_uid, new_uid, old_gid, new_gid); old_uid, new_uid, old_gid, new_gid);
} }
#endif /* S_IFLNK */
/* /*
* See if this is a previously copied link * See if this is a previously copied link
@ -498,7 +494,6 @@ static int copy_dir (const char *src, const char *dst,
return err; return err;
} }
#ifdef S_IFLNK
/* /*
* readlink_malloc - wrapper for readlink * readlink_malloc - wrapper for readlink
* *
@ -616,7 +611,6 @@ static int copy_symlink (const char *src, const char *dst,
return 0; return 0;
} }
#endif /* S_IFLNK */
/* /*
* copy_hardlink - copy a hardlink * copy_hardlink - copy a hardlink