浏览代码

pkg/aaparser: support parsing version like "3.0.0-beta1"

Fix #41517

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
Akihiro Suda 4 年之前
父节点
当前提交
ee079e4692
共有 2 个文件被更改,包括 17 次插入0 次删除
  1. 3 0
      pkg/aaparser/aaparser.go
  2. 14 0
      pkg/aaparser/aaparser_test.go

+ 3 - 0
pkg/aaparser/aaparser.go

@@ -56,6 +56,9 @@ func parseVersion(output string) (int, error) {
 	words := strings.Split(lines[0], " ")
 	words := strings.Split(lines[0], " ")
 	version := words[len(words)-1]
 	version := words[len(words)-1]
 
 
+	// trim "-beta1" suffix from version="3.0.0-beta1" if exists
+	version = strings.SplitN(version, "-", 2)[0]
+
 	// split by major minor version
 	// split by major minor version
 	v := strings.Split(version, ".")
 	v := strings.Split(version, ".")
 	if len(v) == 0 || len(v) > 3 {
 	if len(v) == 0 || len(v) > 3 {

+ 14 - 0
pkg/aaparser/aaparser_test.go

@@ -59,6 +59,20 @@ Copyright 2009-2012 Canonical Ltd.
 `,
 `,
 			version: 314159,
 			version: 314159,
 		},
 		},
+		{
+			output: `AppArmor parser version 3.0.0-beta1
+Copyright (C) 1999-2008 Novell Inc.
+Copyright 2009-2018 Canonical Ltd.
+`,
+			version: 300000,
+		},
+		{
+			output: `AppArmor parser version 3.0.0-beta1-foo-bar
+Copyright (C) 1999-2008 Novell Inc.
+Copyright 2009-2018 Canonical Ltd.
+`,
+			version: 300000,
+		},
 	}
 	}
 
 
 	for _, v := range versions {
 	for _, v := range versions {