lib/courier-authlib/authmodfail.c
changeset 0 6f7a81934006
child 2 b3afb9f1e801
equal deleted inserted replaced
-1:000000000000 0:6f7a81934006
       
     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 }