Small rule compiler fix with tag defaults.

This commit is contained in:
Adam Ierymenko 2017-03-28 21:50:44 -07:00
parent 855361b5b8
commit b959148447
2 changed files with 4 additions and 7 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "zerotier-rule-compiler", "name": "zerotier-rule-compiler",
"version": "1.2.0-1", "version": "1.2.2-1",
"description": "ZeroTier Rule Script Compiler", "description": "ZeroTier Rule Script Compiler",
"main": "cli.js", "main": "cli.js",
"scripts": { "scripts": {

View File

@ -762,7 +762,7 @@ function compile(src,rules,caps,tags)
return [ tag[k][1],tag[k][2],'Duplicate tag default directive.' ]; return [ tag[k][1],tag[k][2],'Duplicate tag default directive.' ];
if ((k + 1) >= tag.length) if ((k + 1) >= tag.length)
return [ tag[k][1],tag[k][2],'Missing value for default.' ]; return [ tag[k][1],tag[k][2],'Missing value for default.' ];
dfl = tag[++k][0]||null; dfl = tag[++k][0]||0;
} else if (tkeyword === 'flag') { } else if (tkeyword === 'flag') {
if ((k + 2) >= tag.length) if ((k + 2) >= tag.length)
return [ tag[k][1],tag[k][2],'Missing tag flag name or bit index.' ]; return [ tag[k][1],tag[k][2],'Missing tag flag name or bit index.' ];
@ -806,7 +806,7 @@ function compile(src,rules,caps,tags)
if (id < 0) if (id < 0)
return [ tag[0][1],tag[0][2],'Tag definition is missing a numeric ID.' ]; return [ tag[0][1],tag[0][2],'Tag definition is missing a numeric ID.' ];
if (dfl) { if (dfl !== null) {
let dfl2 = enums[dfl]; let dfl2 = enums[dfl];
if (typeof dfl2 === 'number') { if (typeof dfl2 === 'number') {
dfl = dfl2; dfl = dfl2;
@ -815,10 +815,7 @@ function compile(src,rules,caps,tags)
if (typeof dfl2 === 'number') { if (typeof dfl2 === 'number') {
dfl = dfl2; dfl = dfl2;
} else { } else {
dfl = _parseNum(dfl)||0; dfl = Math.abs(_parseNum(dfl)||0) & 0xffffffff;
if (dfl < 0)
dfl = 0;
else dfl &= 0xffffffff;
} }
} }
} }