1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-25 10:59:53 +03:00

Merge PR #686: src/Cedar/Server: resolve possible null reference exception, remove unused functions, variable, duplicate assignment and conditional

This commit is contained in:
Davide Beatrici 2018-09-01 19:29:25 +02:00 committed by GitHub
commit ecfde04182
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 223 deletions

View File

@ -204,38 +204,6 @@ bool SiTooManyUserObjectsInServer(SERVER *s, bool oneMore)
return false; return false;
} }
// Get the number of user objects that are registered in the VPN Server
UINT SiGetServerNumUserObjects(SERVER *s)
{
CEDAR *c;
UINT ret = 0;
// Validate arguments
if (s == NULL)
{
return 0;
}
c = s->Cedar;
LockList(c->HubList);
{
UINT i;
for (i = 0;i < LIST_NUM(c->HubList);i++)
{
HUB *h = LIST_DATA(c->HubList, i);
if (h->HubDb != NULL)
{
ret += LIST_NUM(h->HubDb->UserList);
}
}
}
UnlockList(c->HubList);
return ret;
}
typedef struct SI_DEBUG_PROC_LIST typedef struct SI_DEBUG_PROC_LIST
{ {
UINT Id; UINT Id;
@ -2431,34 +2399,6 @@ void SiUnlockListenerList(SERVER *s)
UnlockList(s->ServerListenerList); UnlockList(s->ServerListenerList);
} }
// Initialize the Bridge
void SiInitBridge(SERVER *s)
{
HUB *h;
HUB_OPTION o;
HUB_LOG g;
// Validate arguments
if (s == NULL)
{
return;
}
Zero(&o, sizeof(o));
o.MaxSession = 0;
h = NewHub(s->Cedar, SERVER_DEFAULT_BRIDGE_NAME, &o);
AddHub(s->Cedar, h);
h->Offline = true;
SetHubOnline(h);
// Log settings
SiSetDefaultLogSetting(&g);
SetHubLogSetting(h, &g);
ReleaseHub(h);
}
// Set the default value of the Virtual HUB options // Set the default value of the Virtual HUB options
void SiSetDefaultHubOption(HUB_OPTION *o) void SiSetDefaultHubOption(HUB_OPTION *o)
{ {
@ -2536,11 +2476,6 @@ void SiSetDefaultLogSetting(HUB_LOG *g)
g->PacketLogConfig[PACKET_LOG_DHCP] = PACKET_LOG_HEADER; g->PacketLogConfig[PACKET_LOG_DHCP] = PACKET_LOG_HEADER;
} }
// Test
void SiTest(SERVER *s)
{
}
// Set the initial configuration // Set the initial configuration
void SiLoadInitialConfiguration(SERVER *s) void SiLoadInitialConfiguration(SERVER *s)
{ {
@ -2827,25 +2762,6 @@ void SiSetAzureEnable(SERVER *s, bool enabled)
s->EnableVpnAzure = enabled; s->EnableVpnAzure = enabled;
} }
// Get the state of Enabled / Disabled of Azure Client
bool SiGetAzureEnable(SERVER *s)
{
// Validate arguments
if (s == NULL)
{
return false;
}
if (s->AzureClient != NULL)
{
return AcGetEnable(s->AzureClient);
}
else
{
return false;
}
}
// Apply the Config to the Azure Client // Apply the Config to the Azure Client
void SiApplyAzureConfig(SERVER *s, DDNS_CLIENT_STATUS *ddns_status) void SiApplyAzureConfig(SERVER *s, DDNS_CLIENT_STATUS *ddns_status)
{ {
@ -2896,7 +2812,6 @@ bool SiIsAzureSupported(SERVER *s)
bool SiLoadConfigurationCfg(SERVER *s, FOLDER *root) bool SiLoadConfigurationCfg(SERVER *s, FOLDER *root)
{ {
FOLDER *f1, *f2, *f3, *f4, *f5, *f6, *f7, *f8, *f; FOLDER *f1, *f2, *f3, *f4, *f5, *f6, *f7, *f8, *f;
bool is_vgs_enabled = false;
// Validate arguments // Validate arguments
if (s == NULL || root == NULL) if (s == NULL || root == NULL)
{ {
@ -3958,7 +3873,6 @@ void SiLoadHubAccessLists(HUB *h, FOLDER *f)
for (i = 0;i < t->NumTokens;i++) for (i = 0;i < t->NumTokens;i++)
{ {
char *name = t->Token[i]; char *name = t->Token[i];
UINT id = ToInt(name);
SiLoadHubAccessCfg(h, CfgGetFolder(f, name)); SiLoadHubAccessCfg(h, CfgGetFolder(f, name));
} }
@ -5712,7 +5626,6 @@ void SiLoadHubs(SERVER *s, FOLDER *f)
{ {
UINT i; UINT i;
FOLDER *hub_folder; FOLDER *hub_folder;
CEDAR *c;
TOKEN_LIST *t; TOKEN_LIST *t;
bool b = false; bool b = false;
// Validate arguments // Validate arguments
@ -5720,7 +5633,6 @@ void SiLoadHubs(SERVER *s, FOLDER *f)
{ {
return; return;
} }
c = s->Cedar;
t = CfgEnumFolderToTokenList(f); t = CfgEnumFolderToTokenList(f);
for (i = 0;i < t->NumTokens;i++) for (i = 0;i < t->NumTokens;i++)
@ -5764,7 +5676,6 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
char tmp[MAX_SIZE]; char tmp[MAX_SIZE];
X *x = NULL; X *x = NULL;
K *k = NULL; K *k = NULL;
UINT num_connections_per_ip = 0;
FOLDER *params_folder; FOLDER *params_folder;
UINT i; UINT i;
// Validate arguments // Validate arguments
@ -6263,7 +6174,6 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
Lock(c->lock); Lock(c->lock);
{ {
bool is_vgs_cert = false;
FOLDER *syslog_f; FOLDER *syslog_f;
Lock(s->Keep->lock); Lock(s->Keep->lock);
{ {
@ -6344,16 +6254,13 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
if (c->Bridge == false) if (c->Bridge == false)
{ {
OPENVPN_SSTP_CONFIG config;
// VPN over ICMP // VPN over ICMP
CfgAddBool(f, "EnableVpnOverIcmp", s->EnableVpnOverIcmp); CfgAddBool(f, "EnableVpnOverIcmp", s->EnableVpnOverIcmp);
// VPN over DNS // VPN over DNS
CfgAddBool(f, "EnableVpnOverDns", s->EnableVpnOverDns); CfgAddBool(f, "EnableVpnOverDns", s->EnableVpnOverDns);
}
if (c->Bridge == false)
{
OPENVPN_SSTP_CONFIG config;
SiGetOpenVPNAndSSTPConfig(s, &config); SiGetOpenVPNAndSSTPConfig(s, &config);
@ -6369,19 +6276,15 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
// Let the client not to send a signature // Let the client not to send a signature
CfgAddBool(f, "NoSendSignature", s->NoSendSignature); CfgAddBool(f, "NoSendSignature", s->NoSendSignature);
// Server certificate
b = XToBuf(c->ServerX, false);
CfgAddBuf(f, "ServerCert", b);
FreeBuf(b);
if (is_vgs_cert == false) // Server private key
{ b = KToBuf(c->ServerK, false, NULL);
// Server certificate CfgAddBuf(f, "ServerKey", b);
b = XToBuf(c->ServerX, false); FreeBuf(b);
CfgAddBuf(f, "ServerCert", b);
FreeBuf(b);
// Server private key
b = KToBuf(c->ServerK, false, NULL);
CfgAddBuf(f, "ServerKey", b);
FreeBuf(b);
}
// Traffic information // Traffic information
Lock(c->TrafficLock); Lock(c->TrafficLock);
@ -6703,16 +6606,6 @@ void StStartServer(bool bridge)
// StartCedarLog(); // StartCedarLog();
} }
// Get the server
SERVER *StGetServer()
{
if (server == NULL)
{
return NULL;
}
return server;
}
// Stop the server // Stop the server
void StStopServer() void StStopServer()
{ {
@ -7324,7 +7217,6 @@ void SiCalledEnumHub(SERVER *s, PACK *p, PACK *req)
{ {
UINT i; UINT i;
CEDAR *c; CEDAR *c;
UINT num = 0;
// Validate arguments // Validate arguments
if (s == NULL || p == NULL || req == NULL) if (s == NULL || p == NULL || req == NULL)
{ {
@ -8440,27 +8332,6 @@ void SiStopFarmControl(SERVER *s)
ReleaseThread(s->FarmControlThread); ReleaseThread(s->FarmControlThread);
} }
// HUB enumeration directive (asynchronous start)
void SiCallEnumHubBegin(SERVER *s, FARM_MEMBER *f)
{
// Validate arguments
if (s == NULL || f == NULL)
{
return;
}
}
// HUB enumeration directive (asynchronous end)
void SiCallEnumHubEnd(SERVER *s, FARM_MEMBER *f)
{
// Validate arguments
if (s == NULL || f == NULL)
{
return;
}
}
// HUB enumeration directive // HUB enumeration directive
void SiCallEnumHub(SERVER *s, FARM_MEMBER *f) void SiCallEnumHub(SERVER *s, FARM_MEMBER *f)
{ {
@ -9402,7 +9273,7 @@ void SiHubUpdateProc(HUB *h)
SERVER *s; SERVER *s;
UINT i; UINT i;
// Validate arguments // Validate arguments
if (h == NULL || h->Cedar->Server == NULL || h->Cedar->Server->ServerType != SERVER_TYPE_FARM_CONTROLLER) if (h == NULL || h->Cedar == NULL || h->Cedar->Server == NULL || h->Cedar->Server->ServerType != SERVER_TYPE_FARM_CONTROLLER)
{ {
return; return;
} }
@ -9919,62 +9790,6 @@ PACK *SiCalledTask(FARM_CONTROLLER *f, PACK *p, char *taskname)
return ret; return ret;
} }
// Call the task (asynchronous)
FARM_TASK *SiCallTaskAsyncBegin(FARM_MEMBER *f, PACK *p, char *taskname)
{
char tmp[MAX_PATH];
FARM_TASK *t;
// Validate arguments
if (f == NULL || p == NULL || taskname == NULL)
{
return NULL;
}
PackAddStr(p, "taskname", taskname);
Debug("Call Async Task [%s] (%s)\n", taskname, f->hostname);
Format(tmp, sizeof(tmp), "CLUSTER_CALL_ASYNC: Entering Call [%s] to %s", taskname, f->hostname);
SiDebugLog(f->Cedar->Server, tmp);
t = SiFarmServPostTask(f, p);
StrCpy(t->TaskName, sizeof(t->TaskName), taskname);
StrCpy(t->HostName, sizeof(t->HostName), f->hostname);
t->FarmMember = f;
return t;
}
// Get the results of the asynchronous task
PACK *SiCallTaskAsyncEnd(CEDAR *c, FARM_TASK *t)
{
PACK *p;
char taskname[MAX_PATH];
char hostname[MAX_PATH];
char tmp[MAX_SIZE];
// Validate arguments
if (t == NULL || c == NULL)
{
return NULL;
}
StrCpy(taskname, sizeof(taskname), t->TaskName);
StrCpy(hostname, sizeof(hostname), t->HostName);
p = SiFarmServWaitTask(t);
if (p == NULL)
{
Format(tmp, sizeof(tmp), "CLUSTER_CALL_ASYNC: Call ERROR [%s] to %s", taskname, hostname);
SiDebugLog(c->Server, tmp);
return NULL;
}
Format(tmp, sizeof(tmp), "CLUSTER_CALL_ASYNC: Retrieving Call Result [%s] to %s", taskname, hostname);
SiDebugLog(c->Server, tmp);
return p;
}
// Call the task // Call the task
PACK *SiCallTask(FARM_MEMBER *f, PACK *p, char *taskname) PACK *SiCallTask(FARM_MEMBER *f, PACK *p, char *taskname)
{ {
@ -10502,8 +10317,6 @@ void SiConnectToControllerThread(THREAD *thread, void *param)
server = f->Server; server = f->Server;
f->StartedTime = SystemTime64();
SLog(server->Cedar, "LS_FARM_CONNECT_1", server->ControllerName); SLog(server->Cedar, "LS_FARM_CONNECT_1", server->ControllerName);
first_failed = true; first_failed = true;
@ -10765,21 +10578,6 @@ void SiGetCurrentRegion(CEDAR *c, char *region, UINT region_size)
} }
} }
// Check the current region
bool SiCheckCurrentRegion(CEDAR *c, char *r)
{
char tmp[64];
// Validate arguments
if (c == NULL || r == NULL)
{
return false;
}
SiGetCurrentRegion(c, tmp, sizeof(tmp));
return (StrCmpi(r, tmp) == 0);
}
// Check whether some enterprise functions are restricted // Check whether some enterprise functions are restricted
// //
// ** Hints by Daiyuu Nobori, written on March 19, 2014 ** // ** Hints by Daiyuu Nobori, written on March 19, 2014 **

View File

@ -504,8 +504,6 @@ int CompareServerListener(void *p1, void *p2);
void SiStopAllListener(SERVER *s); void SiStopAllListener(SERVER *s);
void SiInitDefaultHubList(SERVER *s); void SiInitDefaultHubList(SERVER *s);
void SiSetDefaultHubOption(HUB_OPTION *o); void SiSetDefaultHubOption(HUB_OPTION *o);
void SiInitBridge(SERVER *s);
void SiTest(SERVER *s);
FOLDER *SiWriteConfigurationToCfg(SERVER *s); FOLDER *SiWriteConfigurationToCfg(SERVER *s);
bool SiLoadConfigurationCfg(SERVER *s, FOLDER *root); bool SiLoadConfigurationCfg(SERVER *s, FOLDER *root);
void SiWriteLocalBridges(FOLDER *f, SERVER *s); void SiWriteLocalBridges(FOLDER *f, SERVER *s);
@ -578,7 +576,6 @@ void SiRebootServer(bool bridge);
void SiRebootServerThread(THREAD *thread, void *param); void SiRebootServerThread(THREAD *thread, void *param);
void StInit(); void StInit();
void StFree(); void StFree();
SERVER *StGetServer();
void SiSetServerType(SERVER *s, UINT type, void SiSetServerType(SERVER *s, UINT type,
UINT ip, UINT num_port, UINT *ports, UINT ip, UINT num_port, UINT *ports,
char *controller_name, UINT controller_port, UCHAR *password, UINT weight, bool controller_only); char *controller_name, UINT controller_port, UCHAR *password, UINT weight, bool controller_only);
@ -591,8 +588,6 @@ FARM_TASK *SiFarmServPostTask(FARM_MEMBER *f, PACK *request);
PACK *SiFarmServWaitTask(FARM_TASK *t); PACK *SiFarmServWaitTask(FARM_TASK *t);
PACK *SiExecTask(FARM_MEMBER *f, PACK *p); PACK *SiExecTask(FARM_MEMBER *f, PACK *p);
PACK *SiCallTask(FARM_MEMBER *f, PACK *p, char *taskname); PACK *SiCallTask(FARM_MEMBER *f, PACK *p, char *taskname);
FARM_TASK *SiCallTaskAsyncBegin(FARM_MEMBER *f, PACK *p, char *taskname);
PACK *SiCallTaskAsyncEnd(CEDAR *c, FARM_TASK *t);
void SiAcceptTasksFromController(FARM_CONTROLLER *f, SOCK *sock); void SiAcceptTasksFromController(FARM_CONTROLLER *f, SOCK *sock);
void SiAcceptTasksFromControllerMain(FARM_CONTROLLER *f, SOCK *sock); void SiAcceptTasksFromControllerMain(FARM_CONTROLLER *f, SOCK *sock);
PACK *SiCalledTask(FARM_CONTROLLER *f, PACK *p, char *taskname); PACK *SiCalledTask(FARM_CONTROLLER *f, PACK *p, char *taskname);
@ -630,8 +625,6 @@ void SiCalledEnumHub(SERVER *s, PACK *p, PACK *req);
void SiPackAddCreateHub(PACK *p, HUB *h); void SiPackAddCreateHub(PACK *p, HUB *h);
FARM_MEMBER *SiGetHubHostingMember(SERVER *s, HUB *h, bool admin_mode, CONNECTION *c); FARM_MEMBER *SiGetHubHostingMember(SERVER *s, HUB *h, bool admin_mode, CONNECTION *c);
void SiCallEnumHub(SERVER *s, FARM_MEMBER *f); void SiCallEnumHub(SERVER *s, FARM_MEMBER *f);
void SiCallEnumHubBegin(SERVER *s, FARM_MEMBER *f);
void SiCallEnumHubEnd(SERVER *s, FARM_MEMBER *f);
void SiStartFarmControl(SERVER *s); void SiStartFarmControl(SERVER *s);
void SiStopFarmControl(SERVER *s); void SiStopFarmControl(SERVER *s);
void SiFarmControlThread(THREAD *thread, void *param); void SiFarmControlThread(THREAD *thread, void *param);
@ -726,7 +719,6 @@ void SiAddHubCreateHistory(SERVER *s, char *name);
void SiDelHubCreateHistory(SERVER *s, char *name); void SiDelHubCreateHistory(SERVER *s, char *name);
bool SiIsHubRegistedOnCreateHistory(SERVER *s, char *name); bool SiIsHubRegistedOnCreateHistory(SERVER *s, char *name);
UINT SiGetServerNumUserObjects(SERVER *s);
bool SiTooManyUserObjectsInServer(SERVER *s, bool oneMore); bool SiTooManyUserObjectsInServer(SERVER *s, bool oneMore);
void SiGetOpenVPNAndSSTPConfig(SERVER *s, OPENVPN_SSTP_CONFIG *c); void SiGetOpenVPNAndSSTPConfig(SERVER *s, OPENVPN_SSTP_CONFIG *c);
@ -740,12 +732,10 @@ bool SiIsAzureEnabled(SERVER *s);
bool SiIsAzureSupported(SERVER *s); bool SiIsAzureSupported(SERVER *s);
void SiApplyAzureConfig(SERVER *s, DDNS_CLIENT_STATUS *ddns_status); void SiApplyAzureConfig(SERVER *s, DDNS_CLIENT_STATUS *ddns_status);
void SiSetAzureEnable(SERVER *s, bool enabled); void SiSetAzureEnable(SERVER *s, bool enabled);
bool SiGetAzureEnable(SERVER *s);
void SiUpdateCurrentRegion(CEDAR *c, char *region, bool force_update); void SiUpdateCurrentRegion(CEDAR *c, char *region, bool force_update);
void SiGetCurrentRegion(CEDAR *c, char *region, UINT region_size); void SiGetCurrentRegion(CEDAR *c, char *region, UINT region_size);
bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c); bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c);
bool SiCheckCurrentRegion(CEDAR *c, char *r);
#endif // SERVER_H #endif // SERVER_H