Skip to content

Commit

Permalink
pledge(2) all programs
Browse files Browse the repository at this point in the history
All programs except mshow have a very tight set of promises. mshow
has a broad set of promises and might be a good future candidate
to further restrict using unveil(2).

This patch is based on commit 0300a11 by Alex Holst (dated
2017-12-07), which was proposed in GH PR leahneukirchen#79.

* pledged mpick, mflow and mdate so that now all programs are pledged
* removed some unneeded promises and added some missing promises
* move err.h include and OpenBSD ifdef into a new xpledge.h
* cleaned up code aligning and whitespace

Closes: leahneukirchen#179 [via git-merge-pr]
  • Loading branch information
timkuijsten authored and leahneukirchen committed Sep 6, 2020
1 parent 6bd687b commit 4763032
Show file tree
Hide file tree
Showing 21 changed files with 100 additions and 1 deletion.
3 changes: 3 additions & 0 deletions maddr.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int aflag;
static int dflag;
Expand Down Expand Up @@ -108,6 +109,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath", "");

if (argc == optind && isatty(0))
blaze822_loop1(":", addr);
else
Expand Down
3 changes: 3 additions & 0 deletions magrep.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int aflag;
static int cflag;
Expand Down Expand Up @@ -218,6 +219,8 @@ main(int argc, char *argv[])
if (!rx)
goto usage;

xpledge("stdio rpath", "");

*rx++ = 0;
int r = regcomp(&pattern, rx, REG_EXTENDED | iflag);
if (r != 0) {
Expand Down
8 changes: 7 additions & 1 deletion mdate.c
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
#include <time.h>
#include <unistd.h>

#include "xpledge.h"

int
main()
{
char buf[64];
time_t now = time(0);
time_t now;

xpledge("stdio", "");

now = time(0);

ssize_t l = strftime(buf, sizeof buf,
"%a, %d %b %Y %T %z\n", localtime(&now));
Expand Down
3 changes: 3 additions & 0 deletions mdeliver.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

/*
design rationale:
Expand Down Expand Up @@ -340,6 +341,8 @@ main(int argc, char *argv[])
if (argc != optind+1)
goto usage2;

xpledge("stdio rpath wpath cpath", "");

targetdir = argv[optind];

gethost();
Expand Down
3 changes: 3 additions & 0 deletions mdirs.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "blaze822.h"
#include "blaze822_priv.h"
#include "xpledge.h"

static char sep = '\n';
int aflag;
Expand Down Expand Up @@ -88,6 +89,8 @@ main(int argc, char *argv[])
if (argc == optind)
goto usage;

xpledge("stdio rpath", "");

char toplevel[PATH_MAX];
if (!getcwd(toplevel, sizeof toplevel)) {
perror("mdirs: getcwd");
Expand Down
3 changes: 3 additions & 0 deletions mexport.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int Sflag;

Expand Down Expand Up @@ -141,6 +142,8 @@ main(int argc, char *argv[])

status = 0;

xpledge("stdio rpath", "");

if (argc == optind && isatty(0))
blaze822_loop1(":", export);
else
Expand Down
3 changes: 3 additions & 0 deletions mflag.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "blaze822.h"
#include "blaze822_priv.h"
#include "xpledge.h"

static int8_t flags[255];
static int vflag = 0;
Expand Down Expand Up @@ -134,6 +135,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath cpath", "");

curfile = blaze822_seq_cur();

if (vflag) {
Expand Down
5 changes: 5 additions & 0 deletions mflow.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

int column = 0;
int maxcolumn = 80;
Expand Down Expand Up @@ -107,6 +108,8 @@ main(int argc, char *argv[])
int force = 0;
int delsp = 0;

xpledge("stdio rpath tty", "");

char *ct = getenv("PIPE_CONTENTTYPE");
if (ct) {
char *s, *se;
Expand All @@ -130,6 +133,8 @@ main(int argc, char *argv[])
}
}

xpledge("stdio", "");

char *maxcols = getenv("MAXCOLUMNS");
if (maxcols && isdigit(*maxcols)) {
int m = atoi(maxcols);
Expand Down
3 changes: 3 additions & 0 deletions mgenmid.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

void
printb36(uint64_t x)
Expand All @@ -36,6 +37,8 @@ int main()
char *f = blaze822_home_file("profile");
struct message *config = blaze822(f);

xpledge("stdio rpath", "");

if (config) // try FQDN: first
host = blaze822_hdr(config, "fqdn");

Expand Down
3 changes: 3 additions & 0 deletions mhdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static char *hflag;
static char *pflag;
Expand Down Expand Up @@ -245,6 +246,8 @@ main(int argc, char *argv[])

status = 1;

xpledge("stdio rpath", "");

if (argc == optind && isatty(0))
blaze822_loop1(".", header);
else
Expand Down
3 changes: 3 additions & 0 deletions minc.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

#include "blaze822.h"
#include "blaze822_priv.h"
#include "xpledge.h"

static int qflag;
static int status;
Expand Down Expand Up @@ -76,6 +77,8 @@ main(int argc, char *argv[])
if (optind == argc)
goto usage;

xpledge("stdio rpath cpath", "");

status = 0;
for (i = optind; i < argc; i++)
inc(argv[i]);
Expand Down
3 changes: 3 additions & 0 deletions mlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "blaze822.h"
#include "blaze822_priv.h"
#include "xpledge.h"

/*
Expand Down Expand Up @@ -272,6 +273,8 @@ main(int argc, char *argv[])

int i;

xpledge("stdio rpath", "");

for (i = 0, flagsum = 0, flagset = 0; (size_t)i < sizeof flags; i++) {
if (flags[i] != 0)
flagset++;
Expand Down
3 changes: 3 additions & 0 deletions mmime.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int cflag;
static int rflag;
Expand Down Expand Up @@ -521,6 +522,8 @@ main(int argc, char *argv[])
if (argc != optind)
goto usage;

xpledge("stdio rpath", "");

if (cflag)
return check();

Expand Down
3 changes: 3 additions & 0 deletions mpick.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include <wchar.h>

#include "blaze822.h"
#include "xpledge.h"

enum op {
EXPR_OR = 1,
Expand Down Expand Up @@ -1463,6 +1464,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath", "");

void *cb = need_thr ? collect : oneline;
if (argc == optind && isatty(0))
i = blaze822_loop1(":", cb);
Expand Down
7 changes: 7 additions & 0 deletions mscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#define _XOPEN_SOURCE 700
#endif

#include "xpledge.h"

#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
Expand Down Expand Up @@ -549,6 +551,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath tty proc exec", NULL);

if (nflag) {
if (argc == optind && isatty(0))
blaze822_loop1(":", numline);
Expand Down Expand Up @@ -584,6 +588,9 @@ main(int argc, char *argv[])
}
if (ttyfd >= 0)
close(ttyfd);

xpledge("stdio rpath", "");

if (getenv("COLUMNS"))
cols = atoi(getenv("COLUMNS"));
if (cols <= 40)
Expand Down
3 changes: 3 additions & 0 deletions msed.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static char *expr;

Expand Down Expand Up @@ -323,6 +324,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath", "");

expr = argv[optind];
optind++;

Expand Down
3 changes: 3 additions & 0 deletions mseq.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "blaze822.h"
#include "blaze822_priv.h"
#include "xpledge.h"

static int fflag;
static int rflag;
Expand Down Expand Up @@ -298,6 +299,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath wpath cpath", "");

if (cflag)
blaze822_loop1(cflag, overridecur);

Expand Down
8 changes: 8 additions & 0 deletions mshow.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int Bflag;
static int rflag;
Expand Down Expand Up @@ -797,6 +798,8 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath wpath cpath proc exec", NULL);

if (!rflag && !xflag && !Oflag && !Rflag)
safe_output = 1;

Expand All @@ -822,17 +825,22 @@ main(int argc, char *argv[])
}

if (xflag) { // extract
xpledge("stdio rpath wpath cpath", NULL);
extract(xflag, argc-optind, argv+optind, 0);
} else if (Oflag) { // extract to stdout
xpledge("stdio rpath", NULL);
extract(Oflag, argc-optind, argv+optind, 1);
} else if (tflag) { // list
xpledge("stdio rpath", NULL);
if (argc == optind && isatty(0))
blaze822_loop1(".", list);
else
blaze822_loop(argc-optind, argv+optind, list);
} else if (Rflag) { // render for reply
xpledge("stdio rpath", NULL);
blaze822_loop(argc-optind, argv+optind, reply);
} else { // show
/* XXX pledge: still r/w on the whole file-system + fork/exec */
if (!(qflag || rflag || Fflag)) {
char *f = getenv("MAILFILTER");
if (!f)
Expand Down
2 changes: 2 additions & 0 deletions msort.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

struct mail {
char *file;
Expand Down Expand Up @@ -316,6 +317,7 @@ main(int argc, char *argv[])
exit(1);
}

xpledge("stdio rpath", "");

mails = calloc(sizeof (struct mail), mailalloc);
if (!mails)
Expand Down
3 changes: 3 additions & 0 deletions mthread.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <unistd.h>

#include "blaze822.h"
#include "xpledge.h"

static int vflag;
static int pflag;
Expand Down Expand Up @@ -419,6 +420,8 @@ main(int argc, char *argv[])

optional = 1;

xpledge("stdio rpath", "");

while ((c = getopt(argc, argv, "S:prv")) != -1)
switch (c) {
case 'S': blaze822_loop1(optarg, thread); break;
Expand Down
Loading

0 comments on commit 4763032

Please sign in to comment.