mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Update software version parsing and comparison to account for a third numeric subversion.
- $addl is also compared numerically now if the value is actually numeric.
This commit is contained in:
parent
a2556642e6
commit
ad9e2a143c
2 changed files with 38 additions and 13 deletions
|
@ -29,6 +29,8 @@ export {
|
||||||
minor: count &optional;
|
minor: count &optional;
|
||||||
## Minor subversion number
|
## Minor subversion number
|
||||||
minor2: count &optional;
|
minor2: count &optional;
|
||||||
|
## Minor updates number
|
||||||
|
minor3: count &optional;
|
||||||
## Additional version string (e.g. "beta42")
|
## Additional version string (e.g. "beta42")
|
||||||
addl: string &optional;
|
addl: string &optional;
|
||||||
} &log;
|
} &log;
|
||||||
|
@ -146,10 +148,10 @@ function parse(unparsed_version: string): Description
|
||||||
if ( /^[\/\-\._v\(]/ in sv )
|
if ( /^[\/\-\._v\(]/ in sv )
|
||||||
sv = strip(sub(version_parts[2], /^\(?[\/\-\._v\(]/, ""));
|
sv = strip(sub(version_parts[2], /^\(?[\/\-\._v\(]/, ""));
|
||||||
local version_numbers = split_n(sv, /[\-\._,\[\(\{ ]/, F, 3);
|
local version_numbers = split_n(sv, /[\-\._,\[\(\{ ]/, F, 3);
|
||||||
if ( 4 in version_numbers && version_numbers[4] != "" )
|
if ( 5 in version_numbers && version_numbers[5] != "" )
|
||||||
v$addl = strip(version_numbers[4]);
|
v$addl = strip(version_numbers[5]);
|
||||||
else if ( 3 in version_parts && version_parts[3] != "" &&
|
else if ( 3 in version_parts && version_parts[3] != "" &&
|
||||||
version_parts[3] != ")" )
|
version_parts[3] != ")" )
|
||||||
{
|
{
|
||||||
if ( /^[[:blank:]]*\([a-zA-Z0-9\-\._[:blank:]]*\)/ in version_parts[3] )
|
if ( /^[[:blank:]]*\([a-zA-Z0-9\-\._[:blank:]]*\)/ in version_parts[3] )
|
||||||
{
|
{
|
||||||
|
@ -177,7 +179,9 @@ function parse(unparsed_version: string): Description
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( 4 in version_numbers && version_numbers[4] != "" )
|
||||||
|
v$minor3 = extract_count(version_numbers[4]);
|
||||||
if ( 3 in version_numbers && version_numbers[3] != "" )
|
if ( 3 in version_numbers && version_numbers[3] != "" )
|
||||||
v$minor2 = extract_count(version_numbers[3]);
|
v$minor2 = extract_count(version_numbers[3]);
|
||||||
if ( 2 in version_numbers && version_numbers[2] != "" )
|
if ( 2 in version_numbers && version_numbers[2] != "" )
|
||||||
|
@ -332,8 +336,25 @@ function cmp_versions(v1: Version, v2: Version): int
|
||||||
return v1?$minor2 ? 1 : -1;
|
return v1?$minor2 ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( v1?$minor3 && v2?$minor3 )
|
||||||
|
{
|
||||||
|
if ( v1$minor3 < v2$minor3 )
|
||||||
|
return -1;
|
||||||
|
if ( v1$minor3 > v2$minor3 )
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( !v1?$minor3 && !v2?$minor3 )
|
||||||
|
{ }
|
||||||
|
else
|
||||||
|
return v1?$minor3 ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
if ( v1?$addl && v2?$addl )
|
if ( v1?$addl && v2?$addl )
|
||||||
|
{
|
||||||
return strcmp(v1$addl, v2$addl);
|
return strcmp(v1$addl, v2$addl);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !v1?$addl && !v2?$addl )
|
if ( !v1?$addl && !v2?$addl )
|
||||||
|
@ -341,6 +362,9 @@ function cmp_versions(v1: Version, v2: Version): int
|
||||||
else
|
else
|
||||||
return v1?$addl ? 1 : -1;
|
return v1?$addl ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# A catcher return that should never be reached...hopefully
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function software_endpoint_name(id: conn_id, host: addr): string
|
function software_endpoint_name(id: conn_id, host: addr): string
|
||||||
|
@ -351,10 +375,11 @@ function software_endpoint_name(id: conn_id, host: addr): string
|
||||||
# Convert a version into a string "a.b.c-x".
|
# Convert a version into a string "a.b.c-x".
|
||||||
function software_fmt_version(v: Version): string
|
function software_fmt_version(v: Version): string
|
||||||
{
|
{
|
||||||
return fmt("%d.%d.%d%s",
|
return fmt("%s%s%s%s%s",
|
||||||
v?$major ? v$major : 0,
|
v?$major ? fmt("%d", v$major) : "0",
|
||||||
v?$minor ? v$minor : 0,
|
v?$minor ? fmt(".%d", v$minor) : "",
|
||||||
v?$minor2 ? v$minor2 : 0,
|
v?$minor2 ? fmt(".%d", v$minor2) : "",
|
||||||
|
v?$minor3 ? fmt(".%d", v$minor3) : "",
|
||||||
v?$addl ? fmt("-%s", v$addl) : "");
|
v?$addl ? fmt("-%s", v$addl) : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ global matched_software: table[string] of Software::Description = {
|
||||||
["Java1.2.2-JDeveloper"] =
|
["Java1.2.2-JDeveloper"] =
|
||||||
[$name="Java", $version=[$major=1,$minor=2,$minor2=2,$addl="JDeveloper"], $unparsed_version=""],
|
[$name="Java", $version=[$major=1,$minor=2,$minor2=2,$addl="JDeveloper"], $unparsed_version=""],
|
||||||
["Java/1.6.0_13"] =
|
["Java/1.6.0_13"] =
|
||||||
[$name="Java", $version=[$major=1,$minor=6,$minor2=0,$addl="13"], $unparsed_version=""],
|
[$name="Java", $version=[$major=1,$minor=6,$minor2=0,$minor3=13], $unparsed_version=""],
|
||||||
["Python-urllib/3.1"] =
|
["Python-urllib/3.1"] =
|
||||||
[$name="Python-urllib", $version=[$major=3,$minor=1], $unparsed_version=""],
|
[$name="Python-urllib", $version=[$major=3,$minor=1], $unparsed_version=""],
|
||||||
["libwww-perl/5.820"] =
|
["libwww-perl/5.820"] =
|
||||||
|
@ -39,9 +39,9 @@ global matched_software: table[string] of Software::Description = {
|
||||||
["The Bat! (v2.00.9) Personal"] =
|
["The Bat! (v2.00.9) Personal"] =
|
||||||
[$name="The Bat!", $version=[$major=2,$minor=0,$minor2=9,$addl="Personal"], $unparsed_version=""],
|
[$name="The Bat!", $version=[$major=2,$minor=0,$minor2=9,$addl="Personal"], $unparsed_version=""],
|
||||||
["Flash/10,2,153,1"] =
|
["Flash/10,2,153,1"] =
|
||||||
[$name="Flash", $version=[$major=10,$minor=2,$minor2=153,$addl="1"], $unparsed_version=""],
|
[$name="Flash", $version=[$major=10,$minor=2,$minor2=153,$minor3=1], $unparsed_version=""],
|
||||||
["mt2/1.2.3.967 Oct 13 2010-13:40:24 ord-pixel-x2 pid 0x35a3 13731"] =
|
["mt2/1.2.3.967 Oct 13 2010-13:40:24 ord-pixel-x2 pid 0x35a3 13731"] =
|
||||||
[$name="mt2", $version=[$major=1,$minor=2,$minor2=3,$addl="967"], $unparsed_version=""],
|
[$name="mt2", $version=[$major=1,$minor=2,$minor2=3,$minor3=967,$addl="Oct"], $unparsed_version=""],
|
||||||
["CacheFlyServe v26b"] =
|
["CacheFlyServe v26b"] =
|
||||||
[$name="CacheFlyServe", $version=[$major=26,$addl="b"], $unparsed_version=""],
|
[$name="CacheFlyServe", $version=[$major=26,$addl="b"], $unparsed_version=""],
|
||||||
["Apache/2.0.46 (Win32) mod_ssl/2.0.46 OpenSSL/0.9.7b mod_jk2/2.0.4"] =
|
["Apache/2.0.46 (Win32) mod_ssl/2.0.46 OpenSSL/0.9.7b mod_jk2/2.0.4"] =
|
||||||
|
@ -54,7 +54,7 @@ global matched_software: table[string] of Software::Description = {
|
||||||
["Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5"] =
|
["Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5"] =
|
||||||
[$name="Safari", $version=[$major=5,$minor=0,$minor2=2,$addl="Mobile"], $unparsed_version=""],
|
[$name="Safari", $version=[$major=5,$minor=0,$minor2=2,$addl="Mobile"], $unparsed_version=""],
|
||||||
["Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16"] =
|
["Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16"] =
|
||||||
[$name="Chrome", $version=[$major=10,$minor=0,$minor2=648,$addl="205"], $unparsed_version=""],
|
[$name="Chrome", $version=[$major=10,$minor=0,$minor2=648,$minor3=205], $unparsed_version=""],
|
||||||
["Opera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01"] =
|
["Opera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01"] =
|
||||||
[$name="Opera", $version=[$major=11,$minor=1], $unparsed_version=""],
|
[$name="Opera", $version=[$major=11,$minor=1], $unparsed_version=""],
|
||||||
["Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.11) Gecko/20101013 Lightning/1.0b2 Thunderbird/3.1.5"] =
|
["Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.11) Gecko/20101013 Lightning/1.0b2 Thunderbird/3.1.5"] =
|
||||||
|
@ -62,7 +62,7 @@ global matched_software: table[string] of Software::Description = {
|
||||||
["iTunes/9.0 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/531.9"] =
|
["iTunes/9.0 (Macintosh; Intel Mac OS X 10.5.8) AppleWebKit/531.9"] =
|
||||||
[$name="iTunes", $version=[$major=9,$minor=0,$addl="Macintosh"], $unparsed_version=""],
|
[$name="iTunes", $version=[$major=9,$minor=0,$addl="Macintosh"], $unparsed_version=""],
|
||||||
["Java1.3.1_04"] =
|
["Java1.3.1_04"] =
|
||||||
[$name="Java", $version=[$major=1,$minor=3,$minor2=1,$addl="04"], $unparsed_version=""],
|
[$name="Java", $version=[$major=1,$minor=3,$minor2=1,$minor3=4], $unparsed_version=""],
|
||||||
["Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"] =
|
["Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"] =
|
||||||
[$name="Safari", $version=[$major=4,$minor=0,$addl="Mobile"], $unparsed_version=""],
|
[$name="Safari", $version=[$major=4,$minor=0,$addl="Mobile"], $unparsed_version=""],
|
||||||
["Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"] =
|
["Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"] =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue