audit small applets and mark some of them as NOFORK.
Put big scary warnings in relevant places.
This commit is contained in:
+4
-7
@@ -7,19 +7,15 @@
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
|
||||
#if BUFSIZ < 4096
|
||||
#undef BUFSIZ
|
||||
#define BUFSIZ 4096
|
||||
#endif
|
||||
|
||||
/* Used by NOFORK applets (e.g. cat) - must be very careful
|
||||
* when calling xfuncs, allocating memory, with signals, termios, etc... */
|
||||
|
||||
static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
|
||||
{
|
||||
@@ -27,7 +23,8 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
|
||||
off_t total = 0;
|
||||
RESERVE_CONFIG_BUFFER(buffer, BUFSIZ);
|
||||
|
||||
if (src_fd < 0) goto out;
|
||||
if (src_fd < 0)
|
||||
goto out;
|
||||
|
||||
if (!size) {
|
||||
size = BUFSIZ;
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
// TODO: make it safe to call from NOFORK applets
|
||||
// Currently, it can exit(0). Even if it is made to do longjmp trick
|
||||
// (see sleep_and_die internals), zero cannot be passed thru this way!
|
||||
|
||||
void fflush_stdout_and_exit(int retval)
|
||||
{
|
||||
if (fflush(stdout))
|
||||
|
||||
@@ -22,11 +22,10 @@
|
||||
* val. Otherwise, pass -1 to get default permissions.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include "libbb.h"
|
||||
|
||||
/* This function is used from NOFORK applets. It must not allocate anything */
|
||||
|
||||
int bb_make_directory (char *path, long mode, int flags)
|
||||
{
|
||||
mode_t mask;
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
/* This function is used from NOFORK applets. It must not allocate anything */
|
||||
|
||||
#define FILEMODEBITS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
|
||||
|
||||
int bb_parse_mode(const char *s, mode_t *current_mode)
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
/* Used from NOFORK applets. Must not allocate anything */
|
||||
|
||||
int remove_file(const char *path, int flags)
|
||||
{
|
||||
struct stat path_stat;
|
||||
|
||||
Reference in New Issue
Block a user