aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2018-10-18 10:39:18 +0200
committerToni Uhlig <matzeton@googlemail.com>2018-10-18 10:39:18 +0200
commited25e33899cb55377b1bc1f4f47625889bb52fa7 (patch)
tree9fff3babcce7d79c9cd5d3f768adb25ac262944b
parenta182509960b87569402df5fec10700b163787d5c (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-xluks_test.sh7
-rw-r--r--src/main.c4
-rw-r--r--src/ui_nask.c4
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
diff --git a/src/main.c b/src/main.c
index 1715dbb..1975499 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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) { };
}