diff options
author | rsc <devnull@localhost> | 2006-04-09 00:24:28 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-04-09 00:24:28 +0000 |
commit | 20bd3ca2e2bc7c1b284a5a52e72a32530529d234 (patch) | |
tree | dd3cbc574b6cb6bf3510d74b760910be83f5df6a /src/cmd/upas/vf/vf.c | |
parent | 0e6fee11c89b146aa5419bbdf26514bc34bdaf81 (diff) | |
download | plan9port-20bd3ca2e2bc7c1b284a5a52e72a32530529d234.tar.gz plan9port-20bd3ca2e2bc7c1b284a5a52e72a32530529d234.tar.bz2 plan9port-20bd3ca2e2bc7c1b284a5a52e72a32530529d234.zip |
new
Diffstat (limited to 'src/cmd/upas/vf/vf.c')
-rw-r--r-- | src/cmd/upas/vf/vf.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/cmd/upas/vf/vf.c b/src/cmd/upas/vf/vf.c index 4a8846b2..84cae907 100644 --- a/src/cmd/upas/vf/vf.c +++ b/src/cmd/upas/vf/vf.c @@ -5,6 +5,11 @@ #include "common.h" #include <ctype.h> +enum { + Accept = 0xA, + Discard = 0xD, +}; + Biobuf in; Biobuf out; @@ -400,12 +405,12 @@ savetmp(Part *p) char buf[40], *name; int fd; - strcpy(buf, "/tmp/vf.XXXXXXXXXXX"); - name = mktemp(buf); - if((fd = create(name, OWRITE|OEXCL, 0666)) < 0){ + strcpy(buf, "/var/tmp/vf.XXXXXXXXXXX"); + if((fd = mkstemp(buf)) < 0){ fprint(2, "error creating temporary file: %r\n"); refuse(); } + name = buf; close(fd); if(save(p, name) < 0){ fprint(2, "error saving temporary file: %r\n"); @@ -433,10 +438,13 @@ runchecker(Part *p) int pid; char *name; Waitmsg *w; + static char *val; - if(access("/mail/lib/validateattachment", AEXEC) < 0) + if(val == nil) + val = unsharp("#9/mail/lib/validateattachment"); + if(val == nil || access(val, AEXEC) < 0) return 0; - + name = savetmp(p); fprint(2, "run checker %s\n", name); switch(pid = fork()){ @@ -444,7 +452,7 @@ runchecker(Part *p) sysfatal("fork: %r"); case 0: dup(2, 1); - execl("/mail/lib/validateattachment", "validateattachment", name, nil); + execl(val, "validateattachment", name, nil); _exits("exec failed"); } @@ -462,11 +470,11 @@ runchecker(Part *p) } if(p->filename) name = s_to_c(p->filename); - if(strstr(w->msg, "discard")){ + if(atoi(w->msg) == Discard){ syslog(0, "mail", "vf validateattachment rejected %s", name); refuse(); } - if(strstr(w->msg, "accept")){ + if(atoi(w->msg) == Accept){ syslog(0, "mail", "vf validateattachment accepted %s", name); return 1; } |