diff options
| author | Odd Stranne <odd@mullvad.net> | 2020-02-18 21:35:47 +0100 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2020-02-19 21:36:04 +0100 |
| commit | 95334814183aad5dd7121f73019459bf8be8242b (patch) | |
| tree | 102b89b3db7af3fa3271cf2b03ec45f8b7bc15c1 | |
| parent | 3085bd30191a32e0b8331dd7c7ac933dd44262fd (diff) | |
| download | mullvadvpn-95334814183aad5dd7121f73019459bf8be8242b.tar.xz mullvadvpn-95334814183aad5dd7121f73019459bf8be8242b.zip | |
WINNET: Add parameter validation on public functions
| -rw-r--r-- | windows/winnet/src/winnet/winnet.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/windows/winnet/src/winnet/winnet.cpp b/windows/winnet/src/winnet/winnet.cpp index b71484bf7c..2a96d150ca 100644 --- a/windows/winnet/src/winnet/winnet.cpp +++ b/windows/winnet/src/winnet/winnet.cpp @@ -43,6 +43,11 @@ WinNet_EnsureBestMetric( {
try
{
+ if (nullptr == deviceAlias)
+ {
+ THROW_ERROR("Invalid argument: deviceAlias");
+ }
+
NetworkInterfaces interfaces;
return interfaces.SetBestMetricForInterfacesByAlias(deviceAlias) ?
WINNET_EBM_STATUS_METRIC_SET : WINNET_EBM_STATUS_METRIC_NO_CHANGE;
@@ -111,6 +116,11 @@ WinNet_GetTapInterfaceAlias( {
try
{
+ if (nullptr == alias)
+ {
+ THROW_ERROR("Invalid argument: alias");
+ }
+
const auto currentAlias = InterfaceUtils::GetTapInterfaceAlias();
auto stringBuffer = new wchar_t[currentAlias.size() + 1];
@@ -166,6 +176,11 @@ WinNet_ActivateConnectivityMonitor( THROW_ERROR("Cannot activate connectivity monitor twice");
}
+ if (nullptr == callback)
+ {
+ THROW_ERROR("Invalid argument: callback");
+ }
+
auto forwarder = [callback, callbackContext](bool connected)
{
callback(connected, callbackContext);
@@ -257,6 +272,11 @@ WinNet_AddRoutes( try
{
+ if (nullptr == routes)
+ {
+ THROW_ERROR("Invalid argument: routes");
+ }
+
g_RouteManager->addRoutes(winnet::ConvertRoutes(routes, numRoutes));
return true;
}
@@ -300,6 +320,11 @@ WinNet_DeleteRoutes( try
{
+ if (nullptr == routes)
+ {
+ THROW_ERROR("Invalid argument: routes");
+ }
+
g_RouteManager->deleteRoutes(winnet::ConvertRoutes(routes, numRoutes));
return true;
}
@@ -344,6 +369,16 @@ WinNet_RegisterDefaultRouteChangedCallback( try
{
+ if (nullptr == callback)
+ {
+ THROW_ERROR("Invalid argument: callback");
+ }
+
+ if (nullptr == registrationHandle)
+ {
+ THROW_ERROR("Invalid argument: registrationHandle");
+ }
+
auto forwarder = [callback, context](RouteManager::DefaultRouteChangedEventType eventType,
ADDRESS_FAMILY family, const std::optional<InterfaceAndGateway> &route)
{
@@ -469,6 +504,16 @@ WinNet_AddDeviceIpAddresses( {
try
{
+ if (nullptr == deviceAlias)
+ {
+ THROW_ERROR("Invalid argument: deviceAlias")
+ }
+
+ if (nullptr == addresses)
+ {
+ THROW_ERROR("Invalid argument: addresses")
+ }
+
NET_LUID luid;
if (0 != ConvertInterfaceAliasToLuid(deviceAlias, &luid))
|
