From 7bec628c2e996f9a904edd0b796849b46df853a7 Mon Sep 17 00:00:00 2001
From: cxb23 <cxb23@tux5.cci.drexel.edu>
Date: Sat, 22 Feb 2025 19:48:39 -0500
Subject: [PATCH] fixed double free issues

---
 4-ShellP2/{bats => }/assignment_test.sh |   2 +-
 4-ShellP2/bats/.assignment_test.sh.swp  | Bin 12288 -> 0 bytes
 4-ShellP2/bats/.student_test.sh.swp     | Bin 12288 -> 0 bytes
 4-ShellP2/dsh                           | Bin 24960 -> 25080 bytes
 4-ShellP2/dshlib.c                      |  21 ++++++++++++---------
 4-ShellP2/{bats => }/student_test.sh    |   0
 6 files changed, 13 insertions(+), 10 deletions(-)
 rename 4-ShellP2/{bats => }/assignment_test.sh (98%)
 mode change 100644 => 100755
 delete mode 100644 4-ShellP2/bats/.assignment_test.sh.swp
 delete mode 100644 4-ShellP2/bats/.student_test.sh.swp
 rename 4-ShellP2/{bats => }/student_test.sh (100%)

diff --git a/4-ShellP2/bats/assignment_test.sh b/4-ShellP2/assignment_test.sh
old mode 100644
new mode 100755
similarity index 98%
rename from 4-ShellP2/bats/assignment_test.sh
rename to 4-ShellP2/assignment_test.sh
index b845762..30b12ec
--- a/4-ShellP2/bats/assignment_test.sh
+++ b/4-ShellP2/assignment_test.sh
@@ -97,7 +97,7 @@ EOF
 
 @test "It handles quoted spaces" {
     run "./dsh" <<EOF                
-echo " hello     world     " 
+   echo " hello     world     " 
 EOF
 
     # Strip all whitespace (spaces, tabs, newlines) from the output
diff --git a/4-ShellP2/bats/.assignment_test.sh.swp b/4-ShellP2/bats/.assignment_test.sh.swp
deleted file mode 100644
index fde799a3ba9807e5e16e113b95332c966a0b8b85..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12288
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
U6a#~@BD{r?npdU(T6fO?0Qag>Z2$lO

diff --git a/4-ShellP2/bats/.student_test.sh.swp b/4-ShellP2/bats/.student_test.sh.swp
deleted file mode 100644
index 1ac057dfda0d92c4c518a6a348665f5c3142d354..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12288
zcmYc?2=nw+u+TGNU|?VnU|^V>v@89Q=6Q~aFH8){6-h?MAaMe?q_hI8oq#fiI<SHI
z$;Cz%#`-3@!5OJJIRQrcNr@%J`o$%sDXDoS@g=FnC3?jfgp3-M9}R)g5FjN4N=wpo
zEqED>jSLMy+LV<P6@-OCLCjG+8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFhWA0q=1p3
zo`HdZ3F=>QD9wmQL%E~WXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2Av
z41vTH1_pUP28QW;kokXD|Njj?1H)^628K)g3=HS_85oxEGcYXXXJ9DiXJGK>XJGK*
zXJGK)XJByWXJ9bnXJC-yXJC-wXJC-#XJGij$H4HMkAdMn9|OZ}J_d$$d<+b0`4|{x
z!t5D>;WX;x(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4FQ^jKrI7jw1SdKaY<rH
zX|a-mZfc=|K`aAIuqd;jAT=dEzqF*Fv_wh4RzXQ6wW1(3xdcftmciBEjUhQj0kpiF
zfwQPIPeD&Vr8q;u#s(ze09t6SpyZs9n3tZakdj%Hnp~1!RH;ys57wZhP|d(l%b=j3
zpn%~Hg;=n-vVvoAacWUXW`15V1K6^hVz307RUk8vF$2_U*NVj4f}B(<h2)IX<ZOkU
zVuhm8ykdp&%#w`!(h`N#qN4nwVz4`u6`YGw6H8JRD)UQ=6iV|lOB6t^FIFfn%`8#K
y%u^`I$ShV!%gjk-P*z}2R&dJ%8H>E4z8JiuURhDUw75t=DKk$$HLncpPX+)8>6^*`

diff --git a/4-ShellP2/dsh b/4-ShellP2/dsh
index 01c20559967f638402f75036f995d77937e63f65..94daff0c436fa56931a870be364ed1858e5fe478 100755
GIT binary patch
delta 4854
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
AEdT%j

delta 4471
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

diff --git a/4-ShellP2/dshlib.c b/4-ShellP2/dshlib.c
index 77fb323..eaad17c 100644
--- a/4-ShellP2/dshlib.c
+++ b/4-ShellP2/dshlib.c
@@ -56,16 +56,20 @@ int alloc_cmd_buff(cmd_buff_t *cmd_buff) {
 }
 
 int free_cmd_buff(cmd_buff_t *cmd_buff) {
+	if (cmd_buff == NULL) return OK_EXIT;
+	
 	free(cmd_buff->_cmd_buffer);
-	 
+	cmd_buff->_cmd_buffer = NULL;
+	
 	for (int i = 0; i < CMD_ARGV_MAX - 1; i++) free(cmd_buff->argv[i]);
+	free(cmd_buff->argv);
 	free(cmd_buff);
 	return OK_EXIT;
 }
 
 int clear_cmd_buff(cmd_buff_t *cmd_buff) {
 	cmd_buff->argc = 0;
-	free(cmd_buff->_cmd_buffer);
+	memset(cmd_buff->_cmd_buffer, 0, SH_CMD_MAX);
 	
 	for (int i = 0; i < CMD_ARGV_MAX; i++) cmd_buff->argv[i] = NULL;
 	return OK_EXIT;
@@ -95,12 +99,10 @@ int build_cmd_buff(char *cmd_line, cmd_buff_t *cmd_buff) {
 	if ((int)strlen(cmd_line) > SH_CMD_MAX) return ERR_CMD_OR_ARGS_TOO_BIG;
 
 	if ((int)strlen(cmd_line) == 0) return WARN_NO_CMDS;	
-	
+
+	if (cmd_buff->_cmd_buffer) free(cmd_buff->_cmd_buffer);
 	cmd_buff->_cmd_buffer = strdup(trim_whitespace(cmd_line));
-	if (cmd_buff->_cmd_buffer == NULL) {
-		free(cmd_buff);
-		return ERR_MEMORY;
-	}
+	if (cmd_buff->_cmd_buffer == NULL) return ERR_MEMORY;
 	
 	char *token = cmd_buff->_cmd_buffer;
 	bool quotes = false;
@@ -176,7 +178,7 @@ int exec_local_cmd_loop()
 {
     char *cmd_buff = malloc(ARG_MAX * sizeof(char));
 	int rc = 0;
-    cmd_buff_t *cmd = malloc(CMD_ARGV_MAX * sizeof(char *));
+    cmd_buff_t *cmd = malloc(sizeof(cmd_buff_t));
 	
 	if ((rc = alloc_cmd_buff(cmd)) != OK_EXIT) exit(rc);
 
@@ -210,8 +212,9 @@ int exec_local_cmd_loop()
 		
 		// TODO IMPLEMENT parsing input to cmd_buff_t *cmd_buff
 		if ((rc = build_cmd_buff(cmd_buff, cmd)) != OK_EXIT) {
+            free(cmd_buff);
+            free_cmd_buff(cmd);
             exit(rc);
-            rc = 0;
     	}
 		/*
 		if (strcmp(cmd->argv[0], "echo") == 0) {
diff --git a/4-ShellP2/bats/student_test.sh b/4-ShellP2/student_test.sh
similarity index 100%
rename from 4-ShellP2/bats/student_test.sh
rename to 4-ShellP2/student_test.sh
-- 
GitLab