mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 12:33:44 +02:00
Proper handling of NULL entry for etherType in rules table.
This commit is contained in:
parent
fb4c3dd8d4
commit
38d34a7495
1 changed files with 9 additions and 3 deletions
|
@ -415,9 +415,15 @@ NetworkController::ResultCode SqliteNetworkController::doNetworkConfigRequest(co
|
||||||
sqlite3_reset(_sGetEtherTypesFromRuleTable);
|
sqlite3_reset(_sGetEtherTypesFromRuleTable);
|
||||||
sqlite3_bind_text(_sGetEtherTypesFromRuleTable,1,network.id,16,SQLITE_STATIC);
|
sqlite3_bind_text(_sGetEtherTypesFromRuleTable,1,network.id,16,SQLITE_STATIC);
|
||||||
while (sqlite3_step(_sGetEtherTypesFromRuleTable) == SQLITE_ROW) {
|
while (sqlite3_step(_sGetEtherTypesFromRuleTable) == SQLITE_ROW) {
|
||||||
int et = sqlite3_column_int(_sGetEtherTypesFromRuleTable,0);
|
if (sqlite3_column_type(_sGetEtherTypesFromRuleTable,0) == SQLITE_NULL) {
|
||||||
if ((et >= 0)&&(et <= 0xffff))
|
allowedEtherTypes.clear();
|
||||||
allowedEtherTypes.push_back(et);
|
allowedEtherTypes.push_back(0); // NULL 'allow' matches ANY
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
int et = sqlite3_column_int(_sGetEtherTypesFromRuleTable,0);
|
||||||
|
if ((et >= 0)&&(et <= 0xffff))
|
||||||
|
allowedEtherTypes.push_back(et);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
std::sort(allowedEtherTypes.begin(),allowedEtherTypes.end());
|
std::sort(allowedEtherTypes.begin(),allowedEtherTypes.end());
|
||||||
allowedEtherTypes.erase(std::unique(allowedEtherTypes.begin(),allowedEtherTypes.end()),allowedEtherTypes.end());
|
allowedEtherTypes.erase(std::unique(allowedEtherTypes.begin(),allowedEtherTypes.end()),allowedEtherTypes.end());
|
||||||
|
|
Loading…
Add table
Reference in a new issue