From 7594ad7e0b4f68d9f0ee7c1300ddcb96f9de6deb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Ji=C5=99i=C5=A1t=C4=9B?= Date: Sun, 9 Jun 2024 19:51:12 +0200 Subject: [PATCH] Add additional check for database format --- src/load.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/load.c b/src/load.c index d6f0eaa..58d589e 100644 --- a/src/load.c +++ b/src/load.c @@ -68,6 +68,18 @@ static int process_upgrade(char **split_line, t_vec *catalog) return (5); } +size_t split_size(char **split_line) +{ + size_t res; + + if (!split_line) + return (0); + res = 0; + while (split_line[res]) + ++res; + return (res); +} + static int process_line(const char *line, t_vec *catalog, unsigned short era) { char **split_line; @@ -80,11 +92,11 @@ static int process_line(const char *line, t_vec *catalog, unsigned short era) return (1); if (!ft_strcmp(split_line[1], "passengers") || !ft_strcmp(split_line[1], "cargo")) { - if (process_train(split_line, catalog, era)) + if (split_size(split_line) < 9 || process_train(split_line, catalog, era)) ft_dprintf(STDERR_FILENO, "Error loading train %s!\n", split_line[0]); } else if (ft_strcmp(split_line[1], "coupling")) - if (process_upgrade(split_line, catalog)) + if (split_size(split_line) < 9 || process_upgrade(split_line, catalog)) ft_dprintf(STDERR_FILENO, "Error loading upgrade %s for train %s!\n", split_line[0], split_line[1]); i = 0; while (split_line[i]) @@ -110,6 +122,7 @@ t_vec load_catalog(char const *database_file_name) era = 0; while (line) { + line[ft_strlen(line) - 1] = '\0'; if (line[0] != ';') era = ft_atoi(line); else -- 2.30.2