[Openvpn-devel,4/4] Detect missing TAP driver and bail out gracefully

Message ID 20181219202611.2144-4-simon@rozman.si
State New
Headers show
Series
  • [Openvpn-devel,1/4] Make DriverCertification MSI property public
Related show

Commit Message

Simon Rozman Dec. 19, 2018, 8:26 p.m.
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.
---
 src/tapctl/tap.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Patch

diff --git a/src/tapctl/tap.c b/src/tapctl/tap.c
index 790a4956..ed3c6e0b 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,