From owner-freebsd-bugs@FreeBSD.ORG Mon Mar 20 15:30:15 2006 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 96BE416A426 for ; Mon, 20 Mar 2006 15:30:15 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3667943D5A for ; Mon, 20 Mar 2006 15:30:13 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k2KFUCnm005197 for ; Mon, 20 Mar 2006 15:30:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k2KFUCeS005191; Mon, 20 Mar 2006 15:30:12 GMT (envelope-from gnats) Resent-Date: Mon, 20 Mar 2006 15:30:12 GMT Resent-Message-Id: <200603201530.k2KFUCeS005191@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Rudolf Cejka Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EDD3416A438 for ; Mon, 20 Mar 2006 15:22:49 +0000 (UTC) (envelope-from cejkar@fit.vutbr.cz) Received: from kazi.fit.vutbr.cz (kazi.fit.vutbr.cz [147.229.8.12]) by mx1.FreeBSD.org (Postfix) with ESMTP id 50D6743D55 for ; Mon, 20 Mar 2006 15:22:49 +0000 (GMT) (envelope-from cejkar@fit.vutbr.cz) Received: from kazi.fit.vutbr.cz (localhost [127.0.0.1]) by kazi.fit.vutbr.cz (envelope-from cejkar@fit.vutbr.cz) (8.13.5/8.13.5) with ESMTP id k2KFMlmc015963 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 20 Mar 2006 16:22:47 +0100 (CET) Received: (from cejkar@localhost) by kazi.fit.vutbr.cz (8.13.5/8.13.1/Submit) id k2KFMlWV015962; Mon, 20 Mar 2006 16:22:47 +0100 (CET) (envelope-from cejkar) Message-Id: <200603201522.k2KFMlWV015962@kazi.fit.vutbr.cz> Date: Mon, 20 Mar 2006 16:22:47 +0100 (CET) From: Rudolf Cejka To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: bin/94735: [patch] NDIS driver plus wpa_supplicant does not work X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Rudolf Cejka List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Mar 2006 15:30:15 -0000 >Number: 94735 >Category: bin >Synopsis: [patch] NDIS driver plus wpa_supplicant does not work >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Mar 20 15:30:12 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Rudolf Cejka >Release: FreeBSD 5.3-STABLE i386 >Organization: FIT, Brno University of Technology, Czech Republic >Environment: FreeBSD 7.0-current Mar 17 2006 >Description: Function PacketGetAdapterNames() in usr.sbin/wpa/wpa_supplicant/Packet32.c has different semantics, than is expected by wpa_supplicant, which takes result == 0 as an error and result != 0 as a success. Unfortunately PacketGetAdapterNames() behaves in exactly different way. >How-To-Repeat: >Fix: --- usr.sbin/wpa/wpa_supplicant/Packet32.c.orig Mon Mar 20 16:07:18 2006 +++ usr.sbin/wpa/wpa_supplicant/Packet32.c Mon Mar 20 16:07:50 2006 @@ -246,15 +246,15 @@ mib[5] = 0; /* no flags */ if (sysctl (mib, 6, NULL, &needed, NULL, 0) < 0) - return(EIO); + return(0); buf = malloc (needed); if (buf == NULL) - return(ENOMEM); + return(0); if (sysctl (mib, 6, buf, &needed, NULL, 0) < 0) { free(buf); - return(EIO); + return(0); } lim = buf + needed; @@ -269,7 +269,7 @@ if (strnstr(sdl->sdl_data, "ndis", sdl->sdl_nlen)) { if ((spc + sdl->sdl_nlen) > *len) { free(buf); - return(ENOSPC); + return(0); } strncpy(plist, sdl->sdl_data, sdl->sdl_nlen); plist += (sdl->sdl_nlen + 1); @@ -302,7 +302,7 @@ if (strnstr(sdl->sdl_data, "ndis", sdl->sdl_nlen)) { if ((spc + sdl->sdl_nlen) > *len) { free(buf); - return(ENOSPC); + return(0); } strncpy(plist, sdl->sdl_data, sdl->sdl_nlen); plist += (sdl->sdl_nlen + 1); @@ -317,7 +317,7 @@ *len = spc + 1; - return(0); + return(1); } void PS: Here is another patch, if the bug is considered in wpa_supplicant: --- contrib/wpa_supplicant/driver_ndis.c.orig Mon Mar 20 16:00:40 2006 +++ contrib/wpa_supplicant/driver_ndis.c Mon Mar 20 16:01:40 2006 @@ -1429,7 +1429,7 @@ memset(names, 0, len); res = PacketGetAdapterNames(names, &len); - if (!res && len > 8192) { + if (res && len > 8192) { free(names); names = malloc(len); if (names == NULL) @@ -1438,7 +1438,7 @@ res = PacketGetAdapterNames(names, &len); } - if (!res) { + if (res) { wpa_printf(MSG_ERROR, "NDIS: Failed to get adapter list " "(PacketGetAdapterNames)"); free(names); >Release-Note: >Audit-Trail: >Unformatted: