pl-sem/sem7/stack-smash.c

47 lines
1,001 B
C
Raw Permalink Normal View History

2023-08-17 22:08:53 +00:00
/* stack-smash.c */
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 8
struct user {
const char *name, *password;
} const users[] = {{"Cat", "Meowmeow"}, {"Skeletor", "Nyarr"}};
void print_users() {
printf("Users:\n");
for (size_t i = 0; i < sizeof(users) / sizeof(struct user); i++) {
printf("%s: %s\n", users[i].name, users[i].password);
}
}
void fill(FILE *f, char *where, size_t const limit) {
size_t read_total = 0;
for (;; ) {
size_t read = fread(where + read_total, 1, 1, f);
if (!read) return;
read_total += read;
}
}
// void fill(FILE *f, char *where, size_t const limit) {
// size_t read_total = 0;
// for (;;) {
// size_t read = fread(where + read_total, 1, 1, f);
// if (!read || where[read_total] == '\n') return;
// read_total += read;
// }
// }
void vulnerable(FILE *f) {
char buffer[BUFFER_SIZE];
fill(f, buffer, BUFFER_SIZE);
}
int main(int argc, char **argv) {
vulnerable(stdin);
puts("nothing happened");
}