38f2261a6f
cyrus-imapd-2.2.12-1.2.fc4.src.rpm
35 lines
838 B
C
35 lines
838 B
C
/*
|
|
* Wrapper for cyrus 'deliver' to allow anyone to run it -
|
|
* I hope this is secure! Should be setgid mail.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <pwd.h>
|
|
#include <sys/types.h>
|
|
#include <sysexits.h>
|
|
|
|
#ifndef LIBEXECDIR
|
|
#define LIBEXECDIR "/usr/lib/cyrus-imapd"
|
|
#endif
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
char *const envp[] = { NULL };
|
|
struct passwd *ent = getpwuid(getuid());
|
|
const char *uname = (ent && ent->pw_name && ent->pw_name[0])
|
|
? ent->pw_name : "anonymous";
|
|
|
|
if (argc != 2) {
|
|
fprintf(stderr, "Usage: %s mailbox\n", argv[0]);
|
|
return EX_USAGE;
|
|
}
|
|
|
|
execle(LIBEXECDIR"/deliver", "deliver", "-e",
|
|
"-a", uname, "-m", argv[1],
|
|
NULL, envp);
|
|
|
|
perror("exec "LIBEXECDIR"/deliver");
|
|
return EX_OSERR;
|
|
}
|