audit small applets and mark some of them as NOFORK.

Put big scary warnings in relevant places.
This commit is contained in:
Denis Vlasenko
2007-04-10 15:43:37 +00:00
parent ff131b980d
commit 99912ca733
41 changed files with 173 additions and 128 deletions
+4 -7
View File
@@ -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;
+4
View File
@@ -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))
+2 -3
View File
@@ -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;
+2
View File
@@ -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)
+2
View File
@@ -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;