From 6519a0a6f21e7935c2db7ed75ed4afa9001f7b7c Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 8 Aug 2005 12:50:38 +0000 Subject: [PATCH] a --- libauthsrv/_asgetticket.c | 16 +++++++++++ libauthsrv/_asrdresp.c | 56 +++++++++++++++++++++++++++++++++++++++ mklib-Windows | 22 +++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 libauthsrv/_asgetticket.c create mode 100644 libauthsrv/_asrdresp.c create mode 100644 mklib-Windows diff --git a/libauthsrv/_asgetticket.c b/libauthsrv/_asgetticket.c new file mode 100644 index 0000000..ea9e0c9 --- /dev/null +++ b/libauthsrv/_asgetticket.c @@ -0,0 +1,16 @@ +#include +#include +#include + +static char *pbmsg = "AS protocol botch"; + +int +_asgetticket(int fd, char *trbuf, char *tbuf) +{ + if(write(fd, trbuf, TICKREQLEN) < 0){ + close(fd); + werrstr(pbmsg); + return -1; + } + return _asrdresp(fd, tbuf, 2*TICKETLEN); +} diff --git a/libauthsrv/_asrdresp.c b/libauthsrv/_asrdresp.c new file mode 100644 index 0000000..8a7daf8 --- /dev/null +++ b/libauthsrv/_asrdresp.c @@ -0,0 +1,56 @@ +#include +#include +#include + +static char *pbmsg = "AS protocol botch"; + +int +_asrdresp(int fd, char *buf, int len) +{ + int n; + char error[64]; + + if(read(fd, buf, 1) != 1){ + werrstr(pbmsg); + return -1; + } + + n = len; + switch(buf[0]){ + case AuthOK: + if(readn(fd, buf, len) != len){ + werrstr(pbmsg); + return -1; + } + break; + case AuthErr: + if(readn(fd, error, sizeof error) != sizeof error){ + werrstr(pbmsg); + return -1; + } + error[sizeof error-1] = '\0'; + werrstr("remote: %s", error); + return -1; + case AuthOKvar: + if(readn(fd, error, 5) != 5){ + werrstr(pbmsg); + return -1; + } + error[5] = 0; + n = atoi(error); + if(n <= 0 || n > len){ + werrstr(pbmsg); + return -1; + } + memset(buf, 0, len); + if(readn(fd, buf, n) != n){ + werrstr(pbmsg); + return -1; + } + break; + default: + werrstr(pbmsg); + return -1; + } + return n; +} diff --git a/mklib-Windows b/mklib-Windows new file mode 100644 index 0000000..48260ad --- /dev/null +++ b/mklib-Windows @@ -0,0 +1,22 @@ +TARGOBJ=${OFILES:%=$TARG(%)} + +all:V: $TARG.all + +inc:V: $TARG + +$TARG: $TARGOBJ + $AR $ARFLAGS -out:$TARG $newmember + +$TARG.all:V: $OFILES + rm -f $TARG + $AR $ARFLAGS -out:$TARG $OFILES + +%.$O: $HFILES # don't combine with following %.$O rules + +%.$O: %.c + $CC $CFLAGS $stem.c + +%.$O: %.s + $AS $AFLAGS $stem.s + +$TARG(%.$O):N: %.$O