Browse code

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

Fix #41517

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
(cherry picked from commit ee079e4692c26417eb4c711a1e489203624a6972)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Akihiro Suda authored on 2020/10/02 17:33:52
Showing 2 changed files
... ...
@@ -56,6 +56,9 @@ func parseVersion(output string) (int, error) {
56 56
 	words := strings.Split(lines[0], " ")
57 57
 	version := words[len(words)-1]
58 58
 
59
+	// trim "-beta1" suffix from version="3.0.0-beta1" if exists
60
+	version = strings.SplitN(version, "-", 2)[0]
61
+
59 62
 	// split by major minor version
60 63
 	v := strings.Split(version, ".")
61 64
 	if len(v) == 0 || len(v) > 3 {
... ...
@@ -59,6 +59,20 @@ Copyright 2009-2012 Canonical Ltd.
59 59
 `,
60 60
 			version: 314159,
61 61
 		},
62
+		{
63
+			output: `AppArmor parser version 3.0.0-beta1
64
+Copyright (C) 1999-2008 Novell Inc.
65
+Copyright 2009-2018 Canonical Ltd.
66
+`,
67
+			version: 300000,
68
+		},
69
+		{
70
+			output: `AppArmor parser version 3.0.0-beta1-foo-bar
71
+Copyright (C) 1999-2008 Novell Inc.
72
+Copyright 2009-2018 Canonical Ltd.
73
+`,
74
+			version: 300000,
75
+		},
62 76
 	}
63 77
 
64 78
 	for _, v := range versions {