add file_deny_write and file_allow_write to process creation and exiting to make executable read-only

This commit is contained in:
EDiasAlberto
2024-11-11 17:55:24 +00:00
parent 5b1e4b561b
commit 98a5818406
2 changed files with 6 additions and 0 deletions

View File

@@ -127,6 +127,7 @@ struct thread
struct process_result *result; /* Result of the process. */
struct list child_results; /* List of children's of this thread
process results. */
struct file *exec_file; /* Thread's currently running file */
/* Shared between thread.c and synch.c. */
struct list_elem elem; /* List element. */

View File

@@ -181,6 +181,10 @@ start_process (void *file_name_)
if (!success)
thread_exit ();
struct file *exec_file = filesys_open (file_name);
thread_current ()->exec_file = exec_file;
file_deny_write (exec_file);
/* Start the user process by simulating a return from an
interrupt, implemented by intr_exit (in
threads/intr-stubs.S). Because intr_exit takes all of its
@@ -246,6 +250,7 @@ process_exit (void)
uint32_t *pd;
printf ("%s: exit(%d)\n", cur->name, cur->exit_status);
file_close (cur->exec_file);
/* Update process result. */
if (cur->result != NULL)