From ac6a6d0cd7e8f4f11c6d95d98a5bcd29fa2923e5 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 3 Dec 2020 13:12:12 +0000 Subject: [PATCH] Fail wsprd if data directory specified not accessible Also fixed trivial memory leak on error exit. --- lib/wsprd/wsprd.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/wsprd/wsprd.c b/lib/wsprd/wsprd.c index 522b7097f..8ef66fd19 100644 --- a/lib/wsprd/wsprd.c +++ b/lib/wsprd/wsprd.c @@ -875,10 +875,12 @@ int main(int argc, char *argv[]) } } - if( stackdecoder ) { - stack=calloc(stacksize,sizeof(struct snode)); + if( access(data_dir, R_OK | W_OK)) { + fprintf(stderr, "Error: inaccessible data directory: '%s'\n", data_dir); + usage(); + return EXIT_FAILURE; } - + if( optind+1 > argc) { usage(); return 1; @@ -886,6 +888,10 @@ int main(int argc, char *argv[]) ptr_to_infile=argv[optind]; } + if( stackdecoder ) { + stack=calloc(stacksize,sizeof(struct snode)); + } + // setup metric table for(i=0; i<256; i++) { mettab[0][i]=round( 10*(metric_tables[2][i]-bias) );