diff --git a/root-packages/ettercap/build.sh b/root-packages/ettercap/build.sh index 5873704436..7dd393fe36 100644 --- a/root-packages/ettercap/build.sh +++ b/root-packages/ettercap/build.sh @@ -3,10 +3,10 @@ TERMUX_PKG_DESCRIPTION="Comprehensive suite for MITM attacks, can sniff live con TERMUX_PKG_LICENSE="GPL-2.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION=0.8.3.1 -TERMUX_PKG_REVISION=6 +TERMUX_PKG_REVISION=7 TERMUX_PKG_SRCURL=https://github.com/Ettercap/ettercap/archive/v${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=d0c3ef88dfc284b61d3d5b64d946c1160fd04276b448519c1ae4438a9cdffaf3 -TERMUX_PKG_DEPENDS="libpcap, openssl, zlib, curl, pcre, ncurses, libiconv, libnet, libltdl, ethtool" +TERMUX_PKG_DEPENDS="ethtool, libcurl, libiconv, libnet, libpcap, ncurses, ncurses-ui-libs, openssl, pcre, zlib" TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DCMAKE_BUILD_TYPE=Release -DENABLE_GTK=off diff --git a/root-packages/ettercap/EttercapLibCheck.cmake.patch b/root-packages/ettercap/cmake-Modules-EttercapLibCheck.cmake.patch similarity index 100% rename from root-packages/ettercap/EttercapLibCheck.cmake.patch rename to root-packages/ettercap/cmake-Modules-EttercapLibCheck.cmake.patch diff --git a/root-packages/ettercap/EttercapOSTest.cmake.patch b/root-packages/ettercap/cmake-Modules-EttercapOSTest.cmake.patch similarity index 100% rename from root-packages/ettercap/EttercapOSTest.cmake.patch rename to root-packages/ettercap/cmake-Modules-EttercapOSTest.cmake.patch diff --git a/root-packages/ettercap/ec_threads.c.patch b/root-packages/ettercap/ec_threads.c.patch deleted file mode 100644 index 30925b16a7..0000000000 --- a/root-packages/ettercap/ec_threads.c.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- ../ec_threads.c.orig 2019-08-27 20:09:25.304142288 +0200 -+++ ./src/ec_threads.c 2019-08-27 20:14:11.753262944 +0200 -@@ -233,13 +233,6 @@ - DEBUG_MSG("ec_thread_init -- %lu", PTHREAD_ID(id)); - - INIT_LOCK; -- -- /* -- * allow a thread to be cancelled as soon as the -- * cancellation request is received -- */ -- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); -- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - - /* sync with the creator */ - if ((e = pthread_cond_signal(&init_cond))) -@@ -263,7 +256,7 @@ - - - /* send the cancel signal to the thread */ -- pthread_cancel((pthread_t)id); -+ pthread_kill((pthread_t)id, 0); - - - DEBUG_MSG("ec_thread_destroy -- [%s] terminated", ec_thread_getname(id)); -@@ -319,7 +312,7 @@ - DEBUG_MSG("ec_thread_kill_all -- terminating %lu [%s]", PTHREAD_ID(current->t.id), current->t.name); - - /* send the cancel signal to the thread */ -- pthread_cancel((pthread_t)current->t.id); -+ pthread_kill((pthread_t)current->t.id, 0); - - #ifndef BROKEN_PTHREAD_JOIN - if (!current->t.detached) { diff --git a/root-packages/ettercap/ec_ui.c.patch b/root-packages/ettercap/ec_ui.c.patch deleted file mode 100644 index ff3648e41a..0000000000 --- a/root-packages/ettercap/ec_ui.c.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- ../ec_ui.c.orig 2019-08-27 20:07:21.158532026 +0200 -+++ ./src/ec_ui.c 2019-08-27 20:07:36.117841510 +0200 -@@ -256,9 +256,6 @@ - if (STAILQ_EMPTY(&messages_queue)) - return 0; - -- // don't allow the thread to cancel while holding the ui mutex -- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old); -- - /* the queue is updated by other threads */ - UI_MSG_LOCK; - -@@ -280,8 +277,6 @@ - - UI_MSG_UNLOCK; - -- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old); -- - /* returns the number of displayed messages */ - return i; - diff --git a/root-packages/ettercap/ec_threads.h.patch b/root-packages/ettercap/include-ec_threads.h.patch similarity index 100% rename from root-packages/ettercap/ec_threads.h.patch rename to root-packages/ettercap/include-ec_threads.h.patch diff --git a/root-packages/ettercap/src-ec_threads.c.patch b/root-packages/ettercap/src-ec_threads.c.patch new file mode 100644 index 0000000000..0197a8a48b --- /dev/null +++ b/root-packages/ettercap/src-ec_threads.c.patch @@ -0,0 +1,58 @@ +--- a/src/ec_threads.c ++++ b/src/ec_threads.c +@@ -233,6 +233,13 @@ pthread_t ec_thread_new_detached(char *n + return id; + } + ++#ifdef __ANDROID__ ++static void thread_signal_handler(int signum) ++{ ++ pthread_exit(0); ++} ++#endif ++ + /* + * set the state of a thread + * all the new thread MUST call this on startup +@@ -250,8 +257,17 @@ void ec_thread_init(void) + * allow a thread to be cancelled as soon as the + * cancellation request is received + */ ++#ifndef __ANDROID__ + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); ++#else ++ struct sigaction actions; ++ memset(&actions, 0, sizeof(actions)); ++ sigemptyset(&actions.sa_mask); ++ actions.sa_flags = 0; ++ actions.sa_handler = thread_signal_handler; ++ sigaction(SIGUSR2, &actions, NULL); ++#endif + + /* sync with the creator */ + if ((e = pthread_cond_signal(&init_cond))) +@@ -275,7 +291,11 @@ void ec_thread_destroy(pthread_t id) + + + /* send the cancel signal to the thread */ ++#ifndef __ANDROID__ + pthread_cancel((pthread_t)id); ++#else ++ pthread_kill((pthread_t)id, SIGUSR2); ++#endif + + + DEBUG_MSG("ec_thread_destroy -- [%s] terminated", ec_thread_getname(id)); +@@ -331,7 +351,11 @@ void ec_thread_kill_all(void) + DEBUG_MSG("ec_thread_kill_all -- terminating %lu [%s]", PTHREAD_ID(current->t.id), current->t.name); + + /* send the cancel signal to the thread */ ++#ifndef __ANDROID__ + pthread_cancel((pthread_t)current->t.id); ++#else ++ pthread_kill((pthread_t)current->t.id, SIGUSR2); ++#endif + + #ifndef BROKEN_PTHREAD_JOIN + if (!current->t.detached) { diff --git a/root-packages/ettercap/src-ec_ui.c.patch b/root-packages/ettercap/src-ec_ui.c.patch new file mode 100644 index 0000000000..64e35827b6 --- /dev/null +++ b/root-packages/ettercap/src-ec_ui.c.patch @@ -0,0 +1,29 @@ +--- a/src/ec_ui.c ++++ b/src/ec_ui.c +@@ -262,7 +262,14 @@ int ui_msg_flush(int max) + return 0; + + // don't allow the thread to cancel while holding the ui mutex ++#ifndef __ANDROID__ + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old); ++#else ++ sigset_t pthread_cancel_block; ++ sigemptyset(&pthread_cancel_block); ++ sigaddset(&pthread_cancel_block, SIGUSR2); ++ sigprocmask(SIG_BLOCK, &pthread_cancel_block, NULL); ++#endif + + /* the queue is updated by other threads */ + UI_MSG_LOCK; +@@ -285,7 +292,11 @@ int ui_msg_flush(int max) + + UI_MSG_UNLOCK; + ++#ifndef __ANDROID__ + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old); ++#else ++ sigprocmask(SIG_UNBLOCK, &pthread_cancel_block, NULL); ++#endif + + /* returns the number of displayed messages */ + return i;