diff --git a/lcthw/.ex17.argv b/lcthw/.ex17.argv index c246578..8864e58 100644 --- a/lcthw/.ex17.argv +++ b/lcthw/.ex17.argv @@ -1,2 +1,2 @@ ex17.db -c +l diff --git a/lcthw/ex17.c b/lcthw/ex17.c index e8f5d3b..f9cd5bd 100644 --- a/lcthw/ex17.c +++ b/lcthw/ex17.c @@ -125,17 +125,20 @@ void Database_set(struct Connection *conn, int id, const char *name, const char } addr->set = 1; - // WARNING: bug, read the "How To Break It" and fix this + char *res = strncpy(addr->name, name, MAX_DATA); - // demonstrate the strncpy bug if (!res) { die("Name copy failed"); } + addr->name[MAX_DATA - 1] = '\0'; + res = strncpy(addr->email, email, MAX_DATA); if (!res) { die("Email copy failed"); } + + addr->email[MAX_DATA - 1] = '\0'; } void Database_get(struct Connection *conn, int id)