Add additional check for database format trunk
authorLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sun, 9 Jun 2024 17:51:12 +0000 (19:51 +0200)
committerLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sun, 9 Jun 2024 17:51:12 +0000 (19:51 +0200)
src/load.c

index d6f0eaa3ec2e142be9ae4d75b0fee89d4550b659..58d589ebb721120df529aa3013076b6abc0472c6 100644 (file)
@@ -68,6 +68,18 @@ static int   process_upgrade(char **split_line, t_vec *catalog)
        return (5);
 }
 
        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;
 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"))
        {
                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"))
                        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])
                        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)
        {
        era = 0;
        while (line)
        {
+               line[ft_strlen(line) - 1] = '\0';
                if (line[0] != ';')
                        era = ft_atoi(line);
                else
                if (line[0] != ';')
                        era = ft_atoi(line);
                else