From: Simon Rozman Date: Wed, 19 Dec 2018 20:26:11 +0000 (+0100) Subject: Detect missing TAP driver and bail out gracefully X-Git-Tag: v2.5_beta1~346 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91bc1212b4b79ac9e2cbf6d345db5df716c42a5b;p=thirdparty%2Fopenvpn.git Detect missing TAP driver and bail out gracefully When no TUN/TAP driver is installed a interface cannot be created. This patch detects this condition and bails out with an error message. This also fixes a typo in one of the error messages. Acked-by: Gert Doering Message-Id: <20181219202611.2144-4-simon@rozman.si> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg18038.html Signed-off-by: Gert Doering --- diff --git a/src/tapctl/tap.c b/src/tapctl/tap.c index 790a49564..ed3c6e0bc 100644 --- a/src/tapctl/tap.c +++ b/src/tapctl/tap.c @@ -460,7 +460,7 @@ tap_create_interface( &devinfo_data)) { dwResult = GetLastError(); - msg(M_NONFATAL, "%s: SetupDiClassNameFromGuid failed", __FUNCTION__); + msg(M_NONFATAL, "%s: SetupDiCreateDeviceInfo failed", __FUNCTION__); goto cleanup_hDevInfoList; } @@ -596,6 +596,13 @@ tap_create_interface( free(drvinfo_detail_data); } + if (dwlDriverVersion == 0) + { + dwResult = ERROR_NOT_FOUND; + msg(M_NONFATAL, "%s: No driver for device \"%" PRIsLPTSTR "\" installed.", __FUNCTION__, szzHardwareIDs); + goto cleanup_DriverInfoList; + } + /* Call appropriate class installer. */ if (!SetupDiCallClassInstaller( DIF_REGISTERDEVICE,