Annotation of 41BSD/cmd/berknet/environ.c, revision 1.1

1.1     ! root        1: # include "defs.h"
        !             2: /* 
        !             3:        environ.c
        !             4: 
        !             5:        examine the environment variables and see if they
        !             6:        have network login name and password information
        !             7: */
        !             8: 
        !             9: envloginpasswd(mch,sn,spasswd)
        !            10: register char *sn, *spasswd;{
        !            11:        register char *senv;
        !            12:        char stemp[30], fgetlogin;
        !            13:        char *envlook();
        !            14: # ifdef V6
        !            15:        return;                 /* doesn't work on V6 */
        !            16: # endif
        !            17:        senv = envlook(mch);
        !            18:        if(senv == NULL)return;
        !            19:        if(!isalpha(senv[0]))return;    /* not login name, ignore */
        !            20:        fgetlogin = (sn[0] == 0);
        !            21:        while(*senv && *senv != ','){
        !            22:                if(fgetlogin)*sn++ = *senv;
        !            23:                else if(*sn++ != *senv)return;
        !            24:                senv++;
        !            25:        }
        !            26:        strcpy(stemp,++senv);
        !            27:        mkpwclear(stemp,mch,spasswd);
        !            28: }
        !            29: extern char **environ;
        !            30: char *envlook(mch){
        !            31:        static char svalue[100];
        !            32:        register char *s, *sv, **env;
        !            33:        env = environ;
        !            34:        while(*env != NULL){
        !            35:                s = *env++;
        !            36:                if(s[0] == 'M' && s[1] == 'A' && s[2] == 'C' && s[3] == 'H'){
        !            37:                        sv = s+4;
        !            38:                        while(*sv && *sv != '=')sv++;
        !            39:                        *sv++ = 0;
        !            40:                        if(lookup(s+4) == mch){
        !            41:                                strcpy(svalue,sv);
        !            42:                                return(svalue);
        !            43:                        }
        !            44:                }
        !            45:        }
        !            46:        return(NULL);
        !            47: }
        !            48: /*
        !            49:        reverse the sfrom string, copying into sto.
        !            50:        sfrom and sto may not be the same string
        !            51: */
        !            52: sreverse(sto,sfrom)
        !            53: register char *sto, *sfrom;
        !            54: {
        !            55:        register int i;
        !            56:        i = strlen(sfrom);
        !            57:        while(i >= 0)
        !            58:                *sto++ = sfrom[i--];
        !            59: }
        !            60: /* 
        !            61:        mkenvkey
        !            62:        
        !            63:        make key to encrypt environment passwds.
        !            64:        return NULL if error
        !            65: */
        !            66: static char *mkenvkey(mch)
        !            67: char mch;
        !            68: {
        !            69:        static char skey[40];
        !            70:        register struct utmp *putmp;
        !            71:        char stemp[40], stemp1[40], sttyname[30];
        !            72:        register char *sk,*p;
        !            73: 
        !            74:        if(isatty(2))strcpy(sttyname,ttyname(2));
        !            75:        else if(isatty(0))strcpy(sttyname,ttyname(0));
        !            76:        else if(isatty(1))strcpy(sttyname,ttyname(1));
        !            77:        else return(NULL);
        !            78:        putmp = getutmp(sttyname);
        !            79:        if(putmp == NULL) return(NULL);
        !            80:        sk = skey;
        !            81:        p = putmp->ut_line;
        !            82:        while(*p)*sk++ = *p++;
        !            83:        *sk++ = mch;
        !            84:        sprintf(stemp,"%ld",putmp->ut_time);
        !            85:        sreverse(stemp1,stemp);
        !            86:        p = stemp1;
        !            87:        while(*p)*sk++ = *p++;
        !            88:        *sk = 0;
        !            89:        return(skey);
        !            90: }
        !            91: /*
        !            92:        make an encrypted passwd
        !            93: */
        !            94: mkpwunclear(spasswd,mch,sencpasswd)
        !            95:        char mch,*spasswd,*sencpasswd;
        !            96: {
        !            97:        register char *skey;
        !            98:        if(spasswd[0] == 0){
        !            99:                sencpasswd[0] = 0;
        !           100:                return;
        !           101:        }
        !           102:        skey = mkenvkey(mch);
        !           103:        if(skey == NULL){
        !           104:                fprintf(stderr,"Can't make key\n");
        !           105:                exit(EX_OSERR);
        !           106:        }
        !           107:        nbsencrypt(spasswd,skey,sencpasswd);
        !           108: }
        !           109: /* 
        !           110:        make an unecrypted passwd
        !           111: */
        !           112: mkpwclear(sencpasswd,mch,spasswd)
        !           113: char mch,*spasswd,*sencpasswd;
        !           114: {
        !           115:        register char *skey;
        !           116:        if(sencpasswd[0] == 0){
        !           117:                spasswd[0] = 0;
        !           118:                return;
        !           119:        }
        !           120:        skey = mkenvkey(mch);
        !           121:        if(skey == NULL){
        !           122:                fprintf(stderr,"Can't make key\n");
        !           123:                exit(EX_OSERR);
        !           124:        }
        !           125:        nbsdecrypt(sencpasswd,skey,spasswd);
        !           126: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.