Lab solution of http://css.csail.mit.edu/6.858/2014/, no lab4, lab5 (Browser security) is from 2019 version
- zookd.c: process_client
static void process_client(int fd)
...
static char env[8192]; /* static variables are not on the stack */
static size_t env_len;
char reqpath[2048]; // $ebp-2064
const char *errmsg; // $ebp-16
int i; // $ebp-12
// $ebp-8 and $ebp -4 is callee-saved reg (%EDI, %ESI)
- http.c: http_request_headers
const char *http_request_headers(int fd)
...
// i: $ebp-12
// sp: $ebp-16
// colon: $ebp-20
// value: $ebp-532
static char buf[8192]; /* static variables are not on the stack */
int i;
char value[512];
char envvar[512];
this buffer overflow can cause process crash, but this process is a child process parent process will still alive, so
make check-crash
will not pass
sys_unlink("/home/httpd/grades.txt") -> pop/ret -> touch("grades.txt") (http.c:18) -> sys_exit()