From 2c8bf618b6bed4d7f241c20dec0f70bbd3fa3e39 Mon Sep 17 00:00:00 2001 From: wiire-a Date: Sat, 30 Dec 2017 18:01:27 +0100 Subject: [PATCH] Fixed segfault when -a is not supplied This is a quick fix. The code should be refactored and the logic adjusted. --- src/pixiewps.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pixiewps.c b/src/pixiewps.c index 456ebfc..99a1e5b 100644 --- a/src/pixiewps.c +++ b/src/pixiewps.c @@ -894,12 +894,6 @@ usage_err: return 0; } - /* Not all required arguments have been supplied */ - if (wps->pke == 0 || wps->e_hash1 == 0 || wps->e_hash2 == 0 || wps->e_nonce == 0) { - snprintf(wps->error, 256, "\n [!] Not all required arguments have been supplied!\n\n"); - goto usage_err; - } - /* If --dh-small is selected then no --pkr should be supplied */ if (wps->pkr && wps->small_dh_keys) { snprintf(wps->error, 256, "\n [!] Options --dh-small and --pkr are mutually exclusive!\n\n"); @@ -912,6 +906,14 @@ usage_err: goto usage_err; } + /* Not all required arguments have been supplied */ + if (!wps->pke || !wps->e_hash1 || !wps->e_hash2 || !wps->e_nonce || + (!wps->authkey && !((wps->small_dh_keys || check_small_dh_keys(wps->pkr)) + && wps->e_bssid && wps->r_nonce))) { + snprintf(wps->error, 256, "\n [!] Not all required arguments have been supplied!\n\n"); + goto usage_err; + } + /* Cannot specify --start or --end if --force is selected */ if (wps->bruteforce && ((start_p != (time_t) -1) || (end_p != (time_t) -1))) { snprintf(wps->error, 256, "\n [!] Cannot specify --start or --end if --force is selected!\n\n");