equal
deleted
inserted
replaced
|
1 /* |
|
2 ** Copyright 1998 - 1999 Double Precision, Inc. See COPYING for |
|
3 ** distribution information. |
|
4 */ |
|
5 |
|
6 #include "auth.h" |
|
7 #include "authmod.h" |
|
8 #include <stdio.h> |
|
9 #include <string.h> |
|
10 #include <stdlib.h> |
|
11 #include <signal.h> |
|
12 #if HAVE_UNISTD_H |
|
13 #include <unistd.h> |
|
14 #endif |
|
15 |
|
16 static const char rcsid[]="$Id: authmodfail.c,v 1.1 2000/04/13 17:55:05 bruce Exp $"; |
|
17 |
|
18 void authmod_fail_completely() |
|
19 { |
|
20 char **argv; |
|
21 int argc, n; |
|
22 const char *p=getenv("AUTHARGC"); |
|
23 char buf[20]; |
|
24 |
|
25 if (!p || sscanf(p, "%d", &argc) <= 0 || argc <= 0) |
|
26 { |
|
27 write(2, "AUTHFAILURE\n", 12); |
|
28 authexit(1); |
|
29 } |
|
30 |
|
31 if ((argv=(char **)malloc((argc+1)*sizeof(char *))) == 0) |
|
32 { |
|
33 perror("malloc"); |
|
34 authexit(1); |
|
35 } |
|
36 |
|
37 for (n=0; n<argc; n++) |
|
38 { |
|
39 sprintf(buf, "AUTHARGV%d", n); |
|
40 if ((argv[n]=getenv(buf)) == 0) |
|
41 authexit(1); |
|
42 } |
|
43 argv[n]=0; |
|
44 |
|
45 p=getenv("AUTHUSER"); |
|
46 if (!p) |
|
47 authexit(1); |
|
48 |
|
49 execv(p, argv); |
|
50 perror(p); |
|
51 authexit(1); |
|
52 } |