From dbb7153d656ba8e980367abeacdb05c50707f1f7 Mon Sep 17 00:00:00 2001 From: kichik Date: Thu, 30 Jun 2005 20:47:27 +0000 Subject: [PATCH] set error flag for invalid directories passed to myDelete (fixes bug #1227553) git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4150 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/exehead/util.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/Source/exehead/util.c b/Source/exehead/util.c index 5c7a7ea9..e1202185 100644 --- a/Source/exehead/util.c +++ b/Source/exehead/util.c @@ -180,28 +180,38 @@ void NSISCALL myDelete(char *buf, int flags) } #ifdef NSIS_SUPPORT_RMDIR - if (valid_dir && (flags & DEL_DIR) && file_exists(buf)) + if ((flags & DEL_DIR)) { - addtrailingslash(buf); - log_printf2("RMDir: RemoveDirectory(\"%s\")",buf); - if (!RemoveDirectory(buf)) + if (!valid_dir) { -#ifdef NSIS_SUPPORT_MOVEONREBOOT - if (flags & DEL_REBOOT) + log_printf2("RMDir: RemoveDirectory invalid input(\"%s\")",buf); + g_exec_flags.exec_error++; + } + else if (file_exists(buf)) + { + addtrailingslash(buf); + log_printf2("RMDir: RemoveDirectory(\"%s\")",buf); + if (!RemoveDirectory(buf)) { - log_printf2("RMDir: RemoveDirectory on Reboot(\"%s\")",buf); - update_status_text(LANG_DELETEONREBOOT,buf); - MoveFileOnReboot(buf,NULL); +#ifdef NSIS_SUPPORT_MOVEONREBOOT + if (flags & DEL_REBOOT) + { + log_printf2("RMDir: RemoveDirectory on Reboot(\"%s\")",buf); + update_status_text(LANG_DELETEONREBOOT,buf); + MoveFileOnReboot(buf,NULL); + } + else +#endif//NSIS_SUPPORT_MOVEONREBOOT + { + log_printf2("RMDir: RemoveDirectory failed(\"%s\")",buf); + g_exec_flags.exec_error++; + } } else -#endif//NSIS_SUPPORT_MOVEONREBOOT { - log_printf2("RMDir: RemoveDirectory failed(\"%s\")",buf); - g_exec_flags.exec_error++; + update_status_text(LANG_REMOVEDIR,buf); } } - else - update_status_text(LANG_REMOVEDIR,buf); } #endif//NSIS_SUPPORT_RMDIR }