|
|
1.1 root 1: # include "stdio.h"
2: # include "ctype.h"
3: # include "assert.h"
4: main(argc,argv)
5: char *argv[];
6: {
7: /*
8: * looks through password for people with file argv[1]
9: * prints lines with full file name, userid, home directory
10: */
11: FILE *f;
12: char pline[250], fname[100];
13: char *p, *s, *strchr();
14: assert(argc>1);
15: f = fopen("/etc/passwd", "r");
16: assert(f!=NULL);
17: while (fgets(pline, 250, f))
18: {
19: p = strchr(pline, ':');
20: assert(p!=0);
21: *p= 0; /* end of userid */
22: p = strchr(p+1, ':'); assert(p!=0); /* end of password */
23: p = strchr(p+1, ':'); assert(p!=0); /* end of user number */
24: p = strchr(p+1, ':'); assert(p!=0); /* end of group number */
25: p = strchr(p+1, ':'); assert(p!=0); /* end of gcos account */
26: p = strchr(s=p+1, ':'); assert(p!=0); /* end of home directory */
27: *p=0;
28: sprintf(fname, "%s/%s", s, argv[1]);
29: if (access(fname, 04)==0)
30: printf("%s %s %s\n", fname, pline, s);
31: }
32: fclose(f);
33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.