Homework 4 - deadline June 1st Find all potential vulnerabilities in this C function:
int get_input(unsigned char *prompt)
{
        unsigned char question[100];
        unsigned char input[80];
        char *addrbuf;
        struct in_addr *addr;
        int i, val, fd;
        sprintf(question, "%s> ", prompt);
        printf(question);
        gets(input);
        if (strlen(input) > 79) {
                printf("Input is too long!\n");
                return 0;
        }
        val = atoi(input);
        if (val > 0) {
                if (access ("/tmp/mydata", O_RDWR)) {
                        fd = open("/tmp/mydata", O_RDWR);
                        addrbuf = malloc(val*sizeof(addr));
                        for (i = 0; i < val; i++) {
                                if (read(0, addrbuf, sizeof(*addr)) < 0)
                                        return 0;
                                write(fd, addrbuf, sizeof(addrbuf));
                        }
                        close(fd);
                } else {
                        printf("You do can not write to output file\n");
                        return 0;
                }
        }
        return val;
}
Please submit the homework below (log in to courses.cs.ut.ee environment with your ut.ee account), plain text is sufficient but PDF is also OK:
4. HW4Sellele ülesandele ei saa enam lahendusi esitada.