From 4afa216ba878f08a030ab40cff57a852938ca18b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 24 Nov 2014 14:12:54 -0600 Subject: [PATCH] cpukit/libmisc/shell/main_edit.c: Fix use after free() Coverity Id 1255353. Read from pointer after free(). --- cpukit/libmisc/shell/main_edit.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cpukit/libmisc/shell/main_edit.c b/cpukit/libmisc/shell/main_edit.c index 0feb828c31..a73bc0d2c0 100644 --- a/cpukit/libmisc/shell/main_edit.c +++ b/cpukit/libmisc/shell/main_edit.c @@ -2147,7 +2147,15 @@ static void edit(struct editor *ed) { case ctrl('s'): save_editor(ed); break; case ctrl('p'): pipe_command(ed); break; #endif +#if defined(__rtems__) + /* + * Coverity spotted this as using ed after free() so changing + * the order of the statements. + */ + case ctrl('w'): ed = ed->env->current; close_editor(ed); break; +#else case ctrl('w'): close_editor(ed); ed = ed->env->current; break; +#endif } } }