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

Merge pull request #699 from chipitsine/master

Merge PR #699: src/Cedar/Hub: resolve potential null pointer dereference, remove unused functions
This commit is contained in:
Ilya Shipitsin 2018-09-14 00:16:06 +05:00 committed by GitHub
commit 8e3927f27c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 118 deletions

View File

@ -3023,7 +3023,7 @@ bool ApplyAccessListToStoredPacket(HUB *hub, SESSION *s, PKT *p)
if (pass) if (pass)
{ {
if (s != NULL && s->FirstTimeHttpRedirect && s->FirstTimeHttpAccessCheckIp != 0) if (s->FirstTimeHttpRedirect && s->FirstTimeHttpAccessCheckIp != 0)
{ {
if ((p->TypeL3 == L3_IPV4 || p->TypeL3 == L3_IPV6) && if ((p->TypeL3 == L3_IPV4 || p->TypeL3 == L3_IPV6) &&
p->TypeL4 == L4_TCP) p->TypeL4 == L4_TCP)
@ -3135,39 +3135,6 @@ bool IsTcpPacketNcsiHttpAccess(PKT *p)
return false; return false;
} }
// Set the URL to which to redirect first
bool SetSessionFirstRedirectHttpUrl(SESSION *s, char *url)
{
URL_DATA d;
IP ip;
// Validate arguments
if (s == NULL || url == NULL || IsEmptyStr(url))
{
return false;
}
if (ParseUrl(&d, url, false, NULL) == false)
{
return false;
}
if (StrToIP(&ip, d.HostName) == false)
{
return false;
}
if (IsIP4(&ip) == false)
{
return false;
}
s->FirstTimeHttpAccessCheckIp = IPToUINT(&ip);
StrCpy(s->FirstTimeHttpRedirectUrl, sizeof(s->FirstTimeHttpRedirectUrl), url);
s->FirstTimeHttpRedirect = true;
return true;
}
// Adding Access List // Adding Access List
void AddAccessList(HUB *hub, ACCESS *a) void AddAccessList(HUB *hub, ACCESS *a)
{ {
@ -3383,35 +3350,6 @@ UINT64 UsernameToInt64(char *name)
return ret; return ret;
} }
// Search the session from the session pointer
SESSION *GetSessionByPtr(HUB *hub, void *ptr)
{
// Validate arguments
if (hub == NULL || ptr == NULL)
{
return NULL;
}
LockList(hub->SessionList);
{
UINT i;
for (i = 0;i < LIST_NUM(hub->SessionList);i++)
{
SESSION *s = LIST_DATA(hub->SessionList, i);
if (s == (SESSION *)ptr)
{
// Found
AddRef(s->ref);
UnlockList(hub->SessionList);
return s;
}
}
}
UnlockList(hub->SessionList);
return NULL;
}
// Search the session from the session name // Search the session from the session name
SESSION *GetSessionByName(HUB *hub, char *name) SESSION *GetSessionByName(HUB *hub, char *name)
{ {
@ -3908,26 +3846,6 @@ LABEL_TRY_AGAIN:
return true; return true;
} }
// VGS: Setting for embedding UA tag
void VgsSetEmbTag(bool b)
{
g_vgs_emb_tag = b;
}
// VGS: Setting for the User-Agent value
void VgsSetUserAgentValue(char *str)
{
// Validate arguments
if (str == NULL || StrLen(str) != 8)
{
Zero(vgs_ua_str, sizeof(vgs_ua_str));
}
else
{
StrCpy(vgs_ua_str, sizeof(vgs_ua_str), str);
}
}
// Checking algorithm to prevent broadcast-storm // Checking algorithm to prevent broadcast-storm
// If broadcast from a specific endpoint came frequently, filter it // If broadcast from a specific endpoint came frequently, filter it
bool CheckBroadcastStorm(HUB *hub, SESSION *s, PKT *p) bool CheckBroadcastStorm(HUB *hub, SESSION *s, PKT *p)
@ -3952,7 +3870,7 @@ bool CheckBroadcastStorm(HUB *hub, SESSION *s, PKT *p)
return true; return true;
} }
if (hub != NULL && hub->Option != NULL) if (hub->Option != NULL)
{ {
strict = hub->Option->BroadcastLimiterStrictMode; strict = hub->Option->BroadcastLimiterStrictMode;
no_heavy = hub->Option->DoNotSaveHeavySecurityLogs; no_heavy = hub->Option->DoNotSaveHeavySecurityLogs;
@ -5621,7 +5539,7 @@ bool StorePacketFilterByPolicy(SESSION *s, PKT *p)
hub = s->Hub; hub = s->Hub;
if (hub->Option != NULL) if (hub != NULL && hub->Option != NULL)
{ {
no_heavy = hub->Option->DoNotSaveHeavySecurityLogs; no_heavy = hub->Option->DoNotSaveHeavySecurityLogs;
} }
@ -6659,34 +6577,6 @@ void SetRadiusServerEx(HUB *hub, char *name, UINT port, char *secret, UINT inter
Unlock(hub->RadiusOptionLock); Unlock(hub->RadiusOptionLock);
} }
// Get the difference between the traffic data
void CalcTrafficEntryDiff(TRAFFIC_ENTRY *diff, TRAFFIC_ENTRY *old, TRAFFIC_ENTRY *current)
{
// Validate arguments
Zero(diff, sizeof(TRAFFIC_ENTRY));
if (old == NULL || current == NULL || diff == NULL)
{
return;
}
if (current->BroadcastCount >= old->BroadcastCount)
{
diff->BroadcastCount = current->BroadcastCount - old->BroadcastCount;
}
if (current->BroadcastBytes >= old->BroadcastBytes)
{
diff->BroadcastBytes = current->BroadcastBytes - old->BroadcastBytes;
}
if (current->UnicastCount >= old->UnicastCount)
{
diff->UnicastCount = current->UnicastCount - old->UnicastCount;
}
if (current->UnicastBytes >= old->UnicastBytes)
{
diff->UnicastBytes = current->UnicastBytes - old->UnicastBytes;
}
}
// Add the traffic information for Virtual HUB // Add the traffic information for Virtual HUB
void IncrementHubTraffic(HUB *h) void IncrementHubTraffic(HUB *h)
{ {

View File

@ -547,7 +547,6 @@ bool StorePacketFilter(SESSION *s, PKT *packet);
void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet, bool is_flooding, bool no_check_acl); void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet, bool is_flooding, bool no_check_acl);
void SetHubOnline(HUB *h); void SetHubOnline(HUB *h);
void SetHubOffline(HUB *h); void SetHubOffline(HUB *h);
SESSION *GetSessionByPtr(HUB *hub, void *ptr);
SESSION *GetSessionByName(HUB *hub, char *name); SESSION *GetSessionByName(HUB *hub, char *name);
int CompareIpTable(void *p1, void *p2); int CompareIpTable(void *p1, void *p2);
bool StorePacketFilterByPolicy(SESSION *s, PKT *p); bool StorePacketFilterByPolicy(SESSION *s, PKT *p);
@ -566,7 +565,6 @@ void InitAccessList(HUB *hub);
void FreeAccessList(HUB *hub); void FreeAccessList(HUB *hub);
void AddAccessList(HUB *hub, ACCESS *a); void AddAccessList(HUB *hub, ACCESS *a);
void AddAccessListEx(HUB *hub, ACCESS *a, bool no_sort, bool no_reassign_id); void AddAccessListEx(HUB *hub, ACCESS *a, bool no_sort, bool no_reassign_id);
bool SetSessionFirstRedirectHttpUrl(SESSION *s, char *url);
bool IsTcpPacketNcsiHttpAccess(PKT *p); bool IsTcpPacketNcsiHttpAccess(PKT *p);
UINT64 UsernameToInt64(char *name); UINT64 UsernameToInt64(char *name);
void MakeSimpleUsernameRemoveNtDomain(char *dst, UINT dst_size, char *src); void MakeSimpleUsernameRemoveNtDomain(char *dst, UINT dst_size, char *src);
@ -638,10 +636,7 @@ USERLIST *FindUserList(LIST *o, char *filename);
bool IsUserMatchInUserList(LIST *o, char *filename, UINT64 user_hash); bool IsUserMatchInUserList(LIST *o, char *filename, UINT64 user_hash);
bool IsUserMatchInUserListWithCacheExpires(LIST *o, char *filename, UINT64 user_hash, UINT64 lifetime); bool IsUserMatchInUserListWithCacheExpires(LIST *o, char *filename, UINT64 user_hash, UINT64 lifetime);
bool IsUserMatchInUserListWithCacheExpiresAcl(LIST *o, char *name_in_acl, UINT64 user_hash, UINT64 lifetime); bool IsUserMatchInUserListWithCacheExpiresAcl(LIST *o, char *name_in_acl, UINT64 user_hash, UINT64 lifetime);
void CalcTrafficEntryDiff(TRAFFIC_ENTRY *diff, TRAFFIC_ENTRY *old, TRAFFIC_ENTRY *current);
bool CheckMaxLoggedPacketsPerMinute(SESSION *s, UINT max_packets, UINT64 now); bool CheckMaxLoggedPacketsPerMinute(SESSION *s, UINT max_packets, UINT64 now);
void VgsSetUserAgentValue(char *str);
void VgsSetEmbTag(bool b);
EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username); EAP_CLIENT *HubNewEapClient(CEDAR *cedar, char *hubname, char *client_ip_str, char *username);
#endif // HUB_H #endif // HUB_H