ING_DB
This commit is contained in:
parent
aa2b1d69e8
commit
a6a305ecf8
|
|
@ -0,0 +1,149 @@
|
|||
# include "AA_liba.h"
|
||||
|
||||
/* THIS MODULE checks all PERMITS */
|
||||
|
||||
# ifndef MSDOS
|
||||
/* check for correct user */
|
||||
AAPuser()
|
||||
{
|
||||
register int uid;
|
||||
extern int AAuid;
|
||||
|
||||
uid= getuid();
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(38, 0, "PERMIT(user %d) found %d\n", AAuid, uid);
|
||||
# endif
|
||||
if (AAuid != uid)
|
||||
AAerror(110, "user");
|
||||
}
|
||||
|
||||
|
||||
/* check for correct group */
|
||||
AAPgroup()
|
||||
{
|
||||
register int gid;
|
||||
extern int AAgid;
|
||||
|
||||
gid = getgid();
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(39, 0, "PERMIT(group %d) found %d\n", AAgid, gid);
|
||||
# endif
|
||||
if (AAgid != gid)
|
||||
AAerror(110, "group");
|
||||
}
|
||||
|
||||
|
||||
# ifdef AMX_QRYMOD
|
||||
/* check for correct terminal */
|
||||
/* returns 0: violation */
|
||||
/* 1: ok */
|
||||
AAPterm(t)
|
||||
register char *t;
|
||||
{
|
||||
register char *tty;
|
||||
register int i;
|
||||
char term[PROTERM + 1];
|
||||
extern char *ttyname();
|
||||
|
||||
/* determine user's terminal for protection algorithm */
|
||||
# ifdef BIT_32
|
||||
tty = "####";
|
||||
# else
|
||||
tty = "##";
|
||||
# endif
|
||||
for (i = 0; i < 3; i++)
|
||||
if (isatty(i))
|
||||
{
|
||||
tty = ttyname(i);
|
||||
break;
|
||||
}
|
||||
if (AAbequal(tty, "tty", 3))
|
||||
tty = &tty[3];
|
||||
else if (AAbequal(tty, "/dev/tty", 8))
|
||||
tty = &tty[8];
|
||||
AApmove(tty, term, PROTERM, ' ');
|
||||
term[PROTERM] = 0;
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(40, 0, "PERMIT(term %s) found %s\n", t, term);
|
||||
# endif
|
||||
if (!AAbequal(t, term, PROTERM))
|
||||
return (0);
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
/* check for correct day of the week */
|
||||
/* returns 0: violation */
|
||||
/* 1: ok */
|
||||
AAPday(f, t)
|
||||
register int f;
|
||||
register int t;
|
||||
{
|
||||
register int d;
|
||||
|
||||
d = getdate(1);
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(41, 0, "PERMIT(day %d to %d) found %d\n", f, t, d);
|
||||
# endif
|
||||
return (check(f, d, t));
|
||||
}
|
||||
|
||||
|
||||
/* check for correct time of the day */
|
||||
/* returns 0: violation */
|
||||
/* 1: ok */
|
||||
AAPtime(f, t)
|
||||
register int f;
|
||||
register int t;
|
||||
{
|
||||
register int d;
|
||||
|
||||
d = getdate(0);
|
||||
# ifdef AMX_TRACE
|
||||
AAtTfp(42, 0, "PERMIT(time %d to %d) found %d\n", f, t, d);
|
||||
# endif
|
||||
return (check(f, d, t));
|
||||
}
|
||||
|
||||
|
||||
static int check(f, d, t)
|
||||
register int f;
|
||||
register int d;
|
||||
register int t;
|
||||
{
|
||||
return (((f <= d) + (d <= t)) == ((f < t)? 2: 1));
|
||||
}
|
||||
|
||||
|
||||
static int getdate(which)
|
||||
register int which; /* which == 1: get day */
|
||||
/* == 0: get time */
|
||||
{
|
||||
register int *local;
|
||||
long long_time;
|
||||
extern long time();
|
||||
extern int *localtime();
|
||||
|
||||
time(&long_time);
|
||||
# ifdef ESER_VMX
|
||||
local = localtime(long_time);
|
||||
# else
|
||||
local = localtime(&long_time);
|
||||
# endif
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* OFFSETS for local: */
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* SECOND == 0 (0 -59) */
|
||||
/* MINUTE == 1 (0 -59) */
|
||||
/* HOUR == 2 (0 - 23) */
|
||||
/* M_DAY == 3 month day (1 - 31) */
|
||||
/* MONTH == 4 (0 - 11) */
|
||||
/* YEAR == 5 (year - 1900) */
|
||||
/* W_DAY == 6 week day (0 - 6, 0 == sunday) */
|
||||
/* Y_DAY == 7 year day (0 - 365) */
|
||||
/* IS_DST == 8 day light saving flag (!= 0: summer time) */
|
||||
/*----------------------------------------------------------------------*/
|
||||
return (which? local[6]: local[1] + 60 * local[2]);
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
Loading…
Reference in New Issue