diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2018-10-18 10:39:18 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2018-10-18 10:39:18 +0200 |
commit | ed25e33899cb55377b1bc1f4f47625889bb52fa7 (patch) | |
tree | 9fff3babcce7d79c9cd5d3f768adb25ac262944b | |
parent | a182509960b87569402df5fec10700b163787d5c (diff) |
replaced ncurses ui sleep&ipc_msgcount check with ipc_msgrecv to fix issues with multithreading/multiprocess handling
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rwxr-xr-x | luks_test.sh | 7 | ||||
-rw-r--r-- | src/main.c | 4 | ||||
-rw-r--r-- | src/ui_nask.c | 4 |
3 files changed, 9 insertions, 6 deletions
diff --git a/luks_test.sh b/luks_test.sh index 98be5ea..0f9d0f8 100755 --- a/luks_test.sh +++ b/luks_test.sh @@ -25,11 +25,12 @@ if [ ! -w ${FILE} ] || [ `file ${FILE} | grep -qoE 'LUKS encrypted file' && echo /sbin/cryptsetup luksFormat ${FILE} fi +CS_OPEN_ARGS="-q -T1 open ${FILE} ${NAME}" if [ "x${DEBUG}" != "x" ]; then - sudo valgrind --log-file=valgrind.log src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup open ${FILE} ${NAME}" 2>./${NAME}_err.log || true - sudo valgrind --tool=helgrind --log-file=helgrind.log src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup open ${FILE} ${NAME}" 2>./${NAME}_err_hell.log || true + sudo valgrind --log-file=valgrind.log src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup ${CS_OPEN_ARGS}" 2>./${NAME}_err.log || true + sudo valgrind --tool=helgrind --log-file=helgrind.log src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup ${CS_OPEN_ARGS}" 2>./${NAME}_err_hell.log || true else - sudo src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup open ${FILE} ${NAME}" 2>./${NAME}_err.log + sudo src/naskpass -f ./${NAME}.fifo -c "/sbin/cryptsetup ${CS_OPEN_ARGS}" 2>./${NAME}_err.log fi set +e @@ -71,7 +71,11 @@ run_cryptcreate(char *pass, char *crypt_cmd) char *cmd; if (crypt_cmd == NULL || pass == NULL) return -1; +#ifdef DEBUG + if (asprintf(&cmd, "echo '%s' | %s 1>&2", pass, crypt_cmd) < 0) +#else if (asprintf(&cmd, "echo '%s' | %s >/dev/null 2>/dev/null", pass, crypt_cmd) < 0) +#endif return -2; retval = system(cmd); free(cmd); diff --git a/src/ui_nask.c b/src/ui_nask.c index 429e404..af3ac73 100644 --- a/src/ui_nask.c +++ b/src/ui_nask.c @@ -170,10 +170,8 @@ passwd_input_cb(WINDOW *wnd, void *data, int key) ui_ipc_msgrecv(MQ_IF, ipc_buf, 3); show_info_wnd(busywnd, "BUSY", ipc_buf, COLOR_PAIR(5), COLOR_PAIR(5), true, false); - sleep(2); - if (ui_ipc_msgcount(MQ_IF) > 0) { - ui_ipc_msgrecv(MQ_IF, ipc_buf, 3); + if (ui_ipc_msgrecv(MQ_IF, ipc_buf, 10) > 0) { show_info_wnd(errwnd, "ERROR", ipc_buf, COLOR_PAIR(4), COLOR_PAIR(4), true, true); while (ui_wgetchtest(1500, '\n') != DOUI_KEY) { }; } |