diff options
author | oga | 2008-04-08 17:38:27 +0000 |
---|---|---|
committer | oga | 2008-04-08 17:38:27 +0000 |
commit | d56e6a11e983b4dba8804af94848f249685247e3 (patch) | |
tree | d09dade925c7a36d1a62c046277488443f38cb68 /kbfunc.c | |
parent | 06f3cfa5b9a45d5a99161f53f080c2ad0a74461a (diff) | |
download | cwm-d56e6a11e983b4dba8804af94848f249685247e3.tar.gz |
No cookie for okan.
fix use-after-free that broke exec's path getting stuff.
``paths'' isn't used anymore, but pointers to within that array are still
used in the next loop. delay freeing it until after then.
Diffstat (limited to '')
-rw-r--r-- | kbfunc.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $Id: kbfunc.c,v 1.18 2008/04/07 23:47:09 simon Exp $ + * $Id: kbfunc.c,v 1.19 2008/04/08 17:38:27 oga Exp $ */ #include <paths.h> @@ -307,7 +307,6 @@ kbfunc_exec(struct client_ctx *scratch, void *arg) ap++; } *ap = NULL; - xfree(path); for (i = 0; i < NPATHS && paths[i] != NULL; i++) { if ((dirp = opendir(paths[i])) == NULL) continue; @@ -351,6 +350,7 @@ kbfunc_exec(struct client_ctx *scratch, void *arg) } (void) closedir(dirp); } + xfree(path); if ((mi = search_start(&menuq, search_match_exec, NULL, label, 1)) != NULL) { |