Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp3541745ybv; Mon, 10 Feb 2020 01:46:58 -0800 (PST) X-Google-Smtp-Source: APXvYqxYlUwgKNfc0qJbwGduG5u81zk7Yezz+5KrTjKLTcHqs9zX0SX3liWG1Yd5WMbLC/04hvVn X-Received: by 2002:aca:3d7:: with SMTP id 206mr313467oid.98.1581328018122; Mon, 10 Feb 2020 01:46:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581328018; cv=none; d=google.com; s=arc-20160816; b=iHBSYcHKjWZeenNBp4oTCtHDELxniWnngNwefq136+AItluMa7n50/cMqE9lkngK8S UI2ilASIWizDYJ2O+AXzC7QvrXThLygi6jqIYug4DJeVjMN+eZ+CD4gbdGOzc6mQWMpi iX2/DNqxyFZbhAE+SdyVUeDznxxP5EHviPuCXrQcIc/YOpVyRyonTpEKwkZSTwg7yT8M GC9Sv6RDtfEj5KcIb7ISZtxb+COrvOz7bhAAg9vz6TKqSuieasiTJaqC0ugZIazrXMHs 7wvgIQjw9iV5zC4xCvHqZuKCzLoEZLoOkwOEWN8S3R9LPPFCvSf0BUlN2YRyz8yFvLzq raiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=YD2oU3C6AmTzm4XsxVooBWs62SDESoaPRFHMpy1LKLQ=; b=vJSGhxO6kWwgEu8+7s44E1QJeUSF0Iup9iMfWPD2TbG0fUSyqC6eHjz20+5IVvyZOy HRspiO4XjAqDaHizV9Ezob29dMf1LVxegbxxha0aU3vGftVIg1q3o1zo+iQx16bEq6CL rfMqkjW1UsSaNL3En/Ww7oZapvjPh3hzRNuZsSGiYNyTP//wJsj9o3UBl6hu5ZRfkVZQ g8UU94ma+GsPxibsdN1HTGtynImj7xAL/6B7AT10XreMc9pbUxnjJT49hgFNCtXYJHeP HgPGpawTdlvhdK4Q1E4ZAMCBN3DHaR4IqYF6YvGvGlCVj4Ip+n2GeppSYp45iTIGs9df dlhA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d197si7385504oig.115.2020.02.10.01.46.46; Mon, 10 Feb 2020 01:46:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727369AbgBJJqZ (ORCPT + 99 others); Mon, 10 Feb 2020 04:46:25 -0500 Received: from smail.rz.tu-ilmenau.de ([141.24.186.67]:52014 "EHLO smail.rz.tu-ilmenau.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726961AbgBJJqZ (ORCPT ); Mon, 10 Feb 2020 04:46:25 -0500 Received: from isengard.fritz.box (unknown [84.174.247.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smail.rz.tu-ilmenau.de (Postfix) with ESMTPSA id 122EA580074; Mon, 10 Feb 2020 10:46:23 +0100 (CET) From: Markus Theil To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, Markus Theil Subject: [PATCH 2/2] iw: scan: better length checks in print_wifi_wps() Date: Mon, 10 Feb 2020 10:46:19 +0100 Message-Id: <20200210094619.14416-2-markus.theil@tu-ilmenau.de> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200210094619.14416-1-markus.theil@tu-ilmenau.de> References: <20200210094619.14416-1-markus.theil@tu-ilmenau.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Signed-off-by: Markus Theil --- scan.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scan.c b/scan.c index a5beb0e..dbfe44c 100644 --- a/scan.c +++ b/scan.c @@ -1829,6 +1829,11 @@ static void print_wifi_wps(const uint8_t type, uint8_t len, const uint8_t *data, switch (subtype) { case 0x104a: tab_on_first(&first); + if (sublen < 1) { + printf("\t * Version: (invalid " + "length %d)\n", sublen); + break; + } printf("\t * Version: %d.%d\n", data[4] >> 4, data[4] & 0xF); break; case 0x1011: @@ -1861,6 +1866,11 @@ static void print_wifi_wps(const uint8_t type, uint8_t len, const uint8_t *data, printf("\t * Model Number: %.*s\n", sublen, data + 4); break; case 0x103b: { + if (sublen < 1) { + printf("\t * Response Type: (invalid " + "length %d)\n", sublen); + break; + } __u8 val = data[4]; tab_on_first(&first); printf("\t * Response Type: %d%s\n", @@ -1874,6 +1884,11 @@ static void print_wifi_wps(const uint8_t type, uint8_t len, const uint8_t *data, break; } case 0x1041: { + if (sublen < 1) { + printf("\t * Selected Registrar: (invalid " + "length %d)\n", sublen); + break; + } __u8 val = data[4]; tab_on_first(&first); printf("\t * Selected Registrar: 0x%x\n", val); @@ -1884,6 +1899,11 @@ static void print_wifi_wps(const uint8_t type, uint8_t len, const uint8_t *data, printf("\t * Serial Number: %.*s\n", sublen, data + 4); break; case 0x1044: { + if (sublen < 1) { + printf("\t * Wi-Fi Protected Setup State: (invalid " + "length %d)\n", sublen); + break; + } __u8 val = data[4]; tab_on_first(&first); printf("\t * Wi-Fi Protected Setup State: %d%s%s\n", @@ -1928,6 +1948,11 @@ static void print_wifi_wps(const uint8_t type, uint8_t len, const uint8_t *data, } case 0x1008: case 0x1053: { + if (sublen < 2) { + printf("\t * Config methods: (invalid " + "length %d)\n", sublen); + break; + } __u16 meth = (data[4] << 8) + data[5]; bool comma = false; tab_on_first(&first); -- 2.25.0