From 46b4a154d22e50ae61f4aad07a87146d6beb2f67 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Wed, 9 Mar 2022 17:00:32 +0100 Subject: [PATCH] fix leak - bad command --- free_cmd.c | 7 ++++++- main.c | 5 ++++- pipex_utils.c | 3 ++- set_cmd.c | 18 ++++++++++++++---- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/free_cmd.c b/free_cmd.c index 1175cfd..89fc5a1 100644 --- a/free_cmd.c +++ b/free_cmd.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/09 12:33:30 by apommier #+# #+# */ -/* Updated: 2022/03/09 13:58:03 by apommier ### ########.fr */ +/* Updated: 2022/03/09 16:03:44 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,10 +36,15 @@ void free_cmd(t_cmd *cmd) i = 0; printf("free_cmd\n"); + while (cmd->s_cmds[i]) { free_double(cmd->s_cmds[i]->args); free(cmd->s_cmds[i]->cmd); + if (cmd->s_cmds[i]->infile) + free(cmd->s_cmds[i]->infile); + if (cmd->s_cmds[i]->outfile) + free(cmd->s_cmds[i]->outfile); free(cmd->s_cmds[i]); i++; } diff --git a/main.c b/main.c index 8ecbe5c..b26e25f 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/06 13:27:11 by apommier #+# #+# */ -/* Updated: 2022/03/09 14:00:05 by apommier ### ########.fr */ +/* Updated: 2022/03/09 16:56:38 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,6 +37,7 @@ void print_prompt(char **path) if (!ft_strcmp("exit", input)) { rl_clear_history(); + free(input); exit_shell(cmd); } if (ft_strlen(input)) @@ -50,6 +51,8 @@ void print_prompt(char **path) free_cmd(cmd); cmd = 0; } + //free_cmd(cmd); + //cmd = 0; } } } diff --git a/pipex_utils.c b/pipex_utils.c index e50588b..4dc4bb1 100644 --- a/pipex_utils.c +++ b/pipex_utils.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/08 16:58:40 by apommier #+# #+# */ -/* Updated: 2022/03/09 13:18:04 by apommier ### ########.fr */ +/* Updated: 2022/03/09 16:45:53 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -81,6 +81,7 @@ char *does_access(char **path, char **exec) } if (path[i]) return (swap); + free(swap); return (0); } diff --git a/set_cmd.c b/set_cmd.c index a6f2693..1a97054 100644 --- a/set_cmd.c +++ b/set_cmd.c @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/03/08 15:19:42 by apommier #+# #+# */ -/* Updated: 2022/03/09 13:49:49 by apommier ### ########.fr */ +/* Updated: 2022/03/09 16:58:32 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,14 +29,23 @@ t_s_cmd *set_s_cmd(char *line, t_cmd *cmd) int i; i = 0; - split_line = ft_split(line, ' '); + split_line = ft_split(line, ' '); s_cmd = malloc(sizeof(t_s_cmd)); - s_cmd->cmd = get_command(split_line, cmd->path); - if (!s_cmd->cmd) + if (!s_cmd) return (0); s_cmd->infile = 0; s_cmd->outfile = 0; + s_cmd->args = 0; + //////////////////split_line = set_redirection(s_cmd, line); + s_cmd->cmd = get_command(split_line, cmd->path); + if (!s_cmd->cmd) + { + free_double(split_line); + free(s_cmd); + return (0); + } s_cmd->nb_args = double_size(split_line); + //set_redirection(s_cmd); s_cmd->args = split_line; return (s_cmd); } @@ -52,6 +61,7 @@ t_cmd *split_cmd(t_cmd *cmd, char **cmds) if (!cmd->s_cmds[i]) { printf("invalid command\n"); + free_cmd(cmd); return (0); } i++;