tMerge pull request #261 from Narrat/missing_lsof_stuff_2 - tomb - the crypto undertaker HTML git clone git://parazyd.org/tomb.git DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit 5f71b486df105f7104d881ef1536511fa781390c DIR parent 9fa55d1165941beee5eeea9b37261a0661b32b3b HTML Author: Jaromil <jaromil@dyne.org> Date: Sun, 14 May 2017 09:47:28 +0200 Merge pull request #261 from Narrat/missing_lsof_stuff_2 Missing lsof stuff Diffstat: M extras/test/10_operations.sh | 11 +++++++++++ M extras/test/Makefile | 2 +- A extras/test/close_block.c | 41 +++++++++++++++++++++++++++++++ M extras/test/setup | 1 + M tomb | 2 +- 5 files changed, 55 insertions(+), 2 deletions(-) --- DIR diff --git a/extras/test/10_operations.sh b/extras/test/10_operations.sh t@@ -21,4 +21,15 @@ test_expect_success 'Testing open in read only mode' ' chmod +w $tomb ' +if test_have_prereq LSOF; then + gcc -Wall -o $TMP/close_block $TEST_HOME/close_block.c + test_expect_success 'Testing functionality of the slam operation (use of lsof)' ' + mkdir $TMP/testmount && + tt_open $TMP/testmount --tomb-pwd $DUMMYPASS && + tt_set_ownership $TMP/testmount && + $TMP/close_block $TMP/testmount/occupied 20 & + tt slam + ' +fi + test_done DIR diff --git a/extras/test/Makefile b/extras/test/Makefile t@@ -24,7 +24,7 @@ RM ?= rm -f PROVE ?= prove AGGREGATE_SCRIPT ?= aggregate-results DEFAULT_TEST_TARGET ?= test -TEST_OPTS ?= --verbose --immediate --chain-lint --root=/tmp/tomb/sharness +TEST_OPTS ?= --verbose --immediate --root=/tmp/tomb/sharness T = $(sort $(wildcard *.sh)) DIR diff --git a/extras/test/close_block.c b/extras/test/close_block.c t@@ -0,0 +1,41 @@ +/* + * Small program which simply opens a file in a tomb to block the + * $ tomb close + * operation + * + * Hard coded assumption on command line arguments + * 2) Path to open + * 3) How long to open the file (in seconds and can be optional) + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + + +int main(int argc, char const *argv[]) { + FILE *file_ptr; + unsigned int to_wait=10; + + if ( argc < 2 ) { + fprintf(stderr, "Usage: %s path [time]\n", argv[0]); + exit(EXIT_FAILURE); + } + + if ( argc == 3 ) { + to_wait = atoi(argv[2]); + } + + file_ptr = fopen(argv[1],"w"); + + if ( file_ptr == NULL ) { + fprintf(stderr, "Error while opening the file.\n"); + exit(EXIT_FAILURE); + } + + sleep(to_wait); + + fclose(file_ptr); + + return 0; +} DIR diff --git a/extras/test/setup b/extras/test/setup t@@ -51,6 +51,7 @@ command -v steghide > /dev/null && test_set_prereq STEGHIDE command -v e2fsck resize2fs > /dev/null && test_set_prereq RESIZER command -v tomb-kdb-pbkdf2 > /dev/null && test_set_prereq KDF command -v qrencode > /dev/null && test_set_prereq QRENCODE +command -v lsof > /dev/null && test_set_prereq LSOF # GnuPG config DIR diff --git a/tomb b/tomb t@@ -782,7 +782,7 @@ function _print() { _list_optional_tools() { typeset -a _deps _deps=(gettext dcfldd wipe steghide) - _deps+=(resize2fs tomb-kdb-pbkdf2 qrencode swish-e unoconv) + _deps+=(resize2fs tomb-kdb-pbkdf2 qrencode swish-e unoconv lsof) for d in $_deps; do _print "`which $d`" done