Annotation of coherent/d/bin/chk_srlno.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * chk_srlno.c
                      3:  *
                      4:  * serial number checker for BBS version of login
                      5:  *
                      6:  * perform 2 checks:
                      7:  *   use algorithm to verify validity
                      8:  *   make sure password is NOT in exclusion list
                      9:  *
                     10:  * "exclusion list" is a file (EXCL_FILE below) within with each
                     11:  *   line begins with a serial number, followed by an optional comment
                     12:  *   Any serial number appearing in the file is to be considered invalid.
                     13:  *
                     14:  * return 1 if serial number is valid, 0 if not
                     15:  */
                     16: 
                     17: #include <stdio.h>
                     18: #include <string.h>
                     19: #include "unumber.h"
                     20: 
                     21: #define SRLNUM_LEN     9
                     22: #define LBUF_LEN       20
                     23: #define EXCL_FILE      "/etc/noaccess"
                     24: 
                     25: int chk_srlno(s)
                     26: char *s;
                     27: {
                     28:        int c, susp, suspen;
                     29:        int ret;
                     30:        char lbuf[LBUF_LEN];
                     31:        FILE *fp;
                     32: 
                     33:        ret = (strlen(s) == SRLNUM_LEN);
                     34:        if (ret)
                     35:                ret = (sscanf(s, "%1d%3d%5d", &c, &susp, &suspen) == 3);
                     36:        if (ret)
                     37:                ret = (c >= 1 && c <= VERSIONS);
                     38:        if (ret) {
                     39:                c--;
                     40:                ret = (((suspen ^ magic3[c]) % magic2[c])
                     41:                        == (susp ^ magic1[c]));
                     42:        }
                     43:        if (ret) {
                     44:                if (fp = fopen(EXCL_FILE, "r")) {
                     45:                        while (fgets(lbuf, LBUF_LEN, fp)) {
                     46:                                if (strncmp(lbuf, s, SRLNUM_LEN) == 0) {
                     47:                                        ret = 0;
                     48:                                        break;
                     49:                                }
                     50:                        }
                     51:                        fclose(fp);
                     52:                }
                     53:        }
                     54:        return ret;
                     55: }

unix.superglobalmegacorp.com

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