1: /* su -- become super-user */
2:
3: char password[100];
4: char pwbuf[100];
5: int ttybuf[3];
6: main()
7: {
8: register char *p, *q;
9: extern fin;
10:
11: if(getpw(0, pwbuf))
12: goto badpw;
13: (&fin)[1] = 0;
14: p = pwbuf;
15: while(*p != ':')
16: if(*p++ == '\0')
17: goto badpw;
18: if(*++p == ':')
19: goto ok;
20: gtty(0, ttybuf);
21: ttybuf[2] =& ~010;
22: stty(0, ttybuf);
23: printf("password: ");
24: q = password;
25: while((*q = getchar()) != '\n')
26: if(*q++ == '\0')
27: return;
28: *q = '\0';
29: ttybuf[2] =| 010;
30: stty(0, ttybuf);
31: printf("\n");
32: q = crypt(password);
33: while(*q++ == *p++);
34: if(*--q == '\0' && *--p == ':')
35: goto ok;
36: goto error;
37:
38: badpw:
39: printf("bad password file\n");
40: ok:
41: setuid(0);
42: execl("/bin/sh", "-", 0);
43: printf("cannot execute shell\n");
44: error:
45: printf("sorry\n");
46: }
Defined functions
main
defined in line
6;
never used
Defined variables
pwbuf
defined in line
4; used 2 times
ttybuf
defined in line
5; used 5 times