mirror of https://github.com/mirror/busybox.git
accumulated post-1.4.0 fixes
parent
8942c12782
commit
e338dd95b4
2
Makefile
2
Makefile
|
@ -1,6 +1,6 @@
|
|||
VERSION = 1
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 0
|
||||
SUBLEVEL = 1
|
||||
EXTRAVERSION =
|
||||
NAME = Unnamed
|
||||
|
||||
|
|
|
@ -320,7 +320,7 @@ static void parse_config_file(void)
|
|||
}
|
||||
|
||||
#else
|
||||
#define parse_config_file()
|
||||
#define parse_config_file() ((void)0)
|
||||
#endif /* CONFIG_FEATURE_SUID_CONFIG */
|
||||
|
||||
#ifdef CONFIG_FEATURE_SUID
|
||||
|
@ -340,20 +340,26 @@ static void check_suid(struct BB_applet *applet)
|
|||
if (sct) {
|
||||
mode_t m = sct->m_mode;
|
||||
|
||||
if (sct->m_uid == ruid) /* same uid */
|
||||
if (sct->m_uid == ruid)
|
||||
/* same uid */
|
||||
m >>= 6;
|
||||
else if ((sct->m_gid == rgid) || ingroup(ruid, sct->m_gid)) /* same group / in group */
|
||||
else if ((sct->m_gid == rgid) || ingroup(ruid, sct->m_gid))
|
||||
/* same group / in group */
|
||||
m >>= 3;
|
||||
|
||||
if (!(m & S_IXOTH)) /* is x bit not set ? */
|
||||
bb_error_msg_and_die("you have no permission to run this applet!");
|
||||
|
||||
if ((sct->m_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) { /* *both* have to be set for sgid */
|
||||
xsetgid(sct->m_gid);
|
||||
} else xsetgid(rgid); /* no sgid -> drop */
|
||||
|
||||
if (sct->m_mode & S_ISUID) xsetuid(sct->m_uid);
|
||||
else xsetuid(ruid); /* no suid -> drop */
|
||||
if (sct->m_gid != 0) {
|
||||
/* _both_ have to be set for sgid */
|
||||
if ((sct->m_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {
|
||||
xsetgid(sct->m_gid);
|
||||
} else xsetgid(rgid); /* no sgid -> drop */
|
||||
}
|
||||
if (sct->m_uid != 0) {
|
||||
if (sct->m_mode & S_ISUID) xsetuid(sct->m_uid);
|
||||
else xsetuid(ruid); /* no suid -> drop */
|
||||
}
|
||||
} else {
|
||||
/* default: drop all privileges */
|
||||
xsetgid(rgid);
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
#include "busybox.h"
|
||||
#include "unarchive.h"
|
||||
#include <fnmatch.h>
|
||||
#include <getopt.h>
|
||||
#include "busybox.h"
|
||||
#include "unarchive.h"
|
||||
|
||||
#if ENABLE_FEATURE_TAR_CREATE
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
|||
/* POSIX tar Header Block, from POSIX 1003.1-1990 */
|
||||
#define NAME_SIZE 100
|
||||
#define NAME_SIZE_STR "100"
|
||||
typedef struct TarHeader TarHeader;
|
||||
struct TarHeader { /* byte offset */
|
||||
char name[NAME_SIZE]; /* 0-99 */
|
||||
char mode[8]; /* 100-107 */
|
||||
|
@ -56,7 +57,6 @@ struct TarHeader { /* byte offset */
|
|||
char prefix[155]; /* 345-499 */
|
||||
char padding[12]; /* 500-512 (pad to exactly the TAR_BLOCK_SIZE) */
|
||||
};
|
||||
typedef struct TarHeader TarHeader;
|
||||
|
||||
/*
|
||||
** writeTarFile(), writeFileToTarball(), and writeTarHeader() are
|
||||
|
@ -73,6 +73,7 @@ struct HardLinkInfo {
|
|||
};
|
||||
|
||||
/* Some info to be carried along when creating a new tarball */
|
||||
typedef struct TarBallInfo TarBallInfo;
|
||||
struct TarBallInfo {
|
||||
int tarFd; /* Open-for-write file descriptor
|
||||
for the tarball */
|
||||
|
@ -85,7 +86,6 @@ struct TarBallInfo {
|
|||
HardLinkInfo *hlInfoHead; /* Hard Link Tracking Information */
|
||||
HardLinkInfo *hlInfo; /* Hard Link Info for the current file */
|
||||
};
|
||||
typedef struct TarBallInfo TarBallInfo;
|
||||
|
||||
/* A nice enum with all the possible tar file content types */
|
||||
enum TarFileType {
|
||||
|
@ -348,7 +348,7 @@ static int writeTarHeader(struct TarBallInfo *tbInfo,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
# if ENABLE_FEATURE_TAR_FROM
|
||||
#if ENABLE_FEATURE_TAR_FROM
|
||||
static int exclude_file(const llist_t *excluded_files, const char *file)
|
||||
{
|
||||
while (excluded_files) {
|
||||
|
@ -371,12 +371,12 @@ static int exclude_file(const llist_t *excluded_files, const char *file)
|
|||
|
||||
return 0;
|
||||
}
|
||||
# else
|
||||
#else
|
||||
#define exclude_file(excluded_files, file) 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static int writeFileToTarball(const char *fileName, struct stat *statbuf,
|
||||
void *userData, int depth)
|
||||
void *userData, int depth ATTRIBUTE_UNUSED)
|
||||
{
|
||||
struct TarBallInfo *tbInfo = (struct TarBallInfo *) userData;
|
||||
const char *header_name;
|
||||
|
@ -509,14 +509,14 @@ static int writeTarFile(const int tar_fd, const int verboseFlag,
|
|||
if (pipe(gzipDataPipe) < 0 || pipe(gzipStatusPipe) < 0)
|
||||
bb_perror_msg_and_die("pipe");
|
||||
|
||||
signal(SIGPIPE, SIG_IGN); /* we only want EPIPE on errors */
|
||||
signal(SIGPIPE, SIG_IGN); /* we only want EPIPE on errors */
|
||||
|
||||
# if __GNUC__
|
||||
#if defined(__GNUC__) && __GNUC__
|
||||
/* Avoid vfork clobbering */
|
||||
(void) &include;
|
||||
(void) &errorFlag;
|
||||
(void) &zip_exec;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
gzipPid = vfork();
|
||||
|
||||
|
@ -600,7 +600,7 @@ static int writeTarFile(const int tar_fd, const int verboseFlag,
|
|||
int writeTarFile(const int tar_fd, const int verboseFlag,
|
||||
const unsigned long dereferenceFlag, const llist_t *include,
|
||||
const llist_t *exclude, const int gzip);
|
||||
#endif /* tar_create */
|
||||
#endif /* FEATURE_TAR_CREATE */
|
||||
|
||||
#if ENABLE_FEATURE_TAR_FROM
|
||||
static llist_t *append_file_list_to_list(llist_t *list)
|
||||
|
@ -628,7 +628,7 @@ static llist_t *append_file_list_to_list(llist_t *list)
|
|||
return newlist;
|
||||
}
|
||||
#else
|
||||
#define append_file_list_to_list(x) 0
|
||||
#define append_file_list_to_list(x) 0
|
||||
#endif
|
||||
|
||||
#if ENABLE_FEATURE_TAR_COMPRESS
|
||||
|
@ -653,7 +653,7 @@ static char get_header_tar_Z(archive_handle_t *archive_handle)
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
#else
|
||||
#define get_header_tar_Z 0
|
||||
#define get_header_tar_Z NULL
|
||||
#endif
|
||||
|
||||
#ifdef CHECK_FOR_CHILD_EXITCODE
|
||||
|
|
|
@ -7,12 +7,8 @@
|
|||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include "libbb.h"
|
||||
|
||||
|
||||
|
||||
#if defined(__GLIBC__) && __GLIBC__ < 2
|
||||
int vdprintf(int d, const char *format, va_list ap)
|
||||
{
|
||||
|
|
|
@ -81,13 +81,14 @@ char * xstrndup(const char *s, int n)
|
|||
t = (char*) s;
|
||||
while (m) {
|
||||
if (!*t) break;
|
||||
m--; t++;
|
||||
m--;
|
||||
t++;
|
||||
}
|
||||
n = n - m;
|
||||
n -= m;
|
||||
t = xmalloc(n + 1);
|
||||
t[n] = '\0';
|
||||
|
||||
return memcpy(t,s,n);
|
||||
return memcpy(t, s, n);
|
||||
}
|
||||
|
||||
// Die if we can't open a file and return a FILE * to it.
|
||||
|
|
|
@ -36,7 +36,7 @@ char *xreadlink(const char *path)
|
|||
|
||||
char *xmalloc_realpath(const char *path)
|
||||
{
|
||||
#ifdef __GLIBC__
|
||||
#if defined(__GLIBC__) && !defined(__UCLIBC__)
|
||||
/* glibc provides a non-standard extension */
|
||||
return realpath(path, NULL);
|
||||
#else
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
#ifndef __LIBNETLINK_H__
|
||||
#define __LIBNETLINK_H__ 1
|
||||
|
||||
#include <linux/types.h>
|
||||
/* We need linux/types.h because older kernels use __u32 etc
|
||||
* in linux/[rt]netlink.h. 2.6.19 seems to be ok, though */
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
|
@ -37,6 +40,4 @@ extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, i
|
|||
|
||||
extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len);
|
||||
|
||||
|
||||
#endif /* __LIBNETLINK_H__ */
|
||||
|
||||
|
|
|
@ -569,7 +569,7 @@ int syslogd_main(int argc, char **argv)
|
|||
//if (option_mask32 & OPT_locallog) // -L
|
||||
#endif
|
||||
#if ENABLE_FEATURE_IPC_SYSLOG
|
||||
if ((option_mask32 & OPT_circularlog) && opt_C) // -C
|
||||
if (opt_C) // -Cn
|
||||
shm_size = xatoul_range(opt_C, 4, INT_MAX/1024) * 1024;
|
||||
#endif
|
||||
|
||||
|
@ -588,7 +588,7 @@ int syslogd_main(int argc, char **argv)
|
|||
#ifdef BB_NOMMU
|
||||
vfork_daemon_rexec(0, 1, argc, argv, "-n");
|
||||
#else
|
||||
xdaemon(0, 1);
|
||||
bb_daemonize();
|
||||
#endif
|
||||
}
|
||||
umask(0);
|
||||
|
|
Loading…
Reference in New Issue