openscap 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/openscap/ds/arf.rb +32 -3
- data/lib/openscap/ds/sds.rb +58 -0
- data/lib/openscap/openscap.rb +6 -2
- data/lib/openscap/source.rb +45 -5
- data/lib/openscap/text.rb +55 -0
- data/lib/openscap/version.rb +1 -1
- data/lib/openscap/{helper.rb → xccdf.rb} +6 -6
- data/lib/openscap/xccdf/benchmark.rb +62 -0
- data/lib/openscap/xccdf/profile.rb +43 -0
- data/lib/openscap/xccdf/ruleresult.rb +71 -0
- data/lib/openscap/xccdf/testresult.rb +114 -0
- data/test/common/testcase.rb +11 -0
- data/test/data/invalid.xml +20 -0
- data/test/data/testresult.xml +225 -0
- data/test/data/xccdf.xml +3043 -17
- data/test/ds/arf_test.rb +36 -10
- data/test/ds/sds_test.rb +79 -0
- data/test/integration/arf_waiver_test.rb +99 -0
- data/test/source_test.rb +56 -1
- data/test/text_test.rb +28 -0
- data/test/xccdf/benchmark_test.rb +48 -0
- data/test/xccdf/profile_test.rb +29 -0
- data/test/xccdf/testresult_test.rb +106 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22bf07db627e929232b8e13998a9dcc1697c6499
|
4
|
+
data.tar.gz: 44893a70952b97513875e80270852f3bdd5e40b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9ae19a6ec32d41bd800a656457417d14e5360b5a9ba394258eb7d2d13ff95b7c32f4d9d793d3cce0ccefec580376a68840767f1855b8a8ff0ee2be1119babf5
|
7
|
+
data.tar.gz: 246fe898e061abca50b86328d1ed89a5a360cec810d3624f45d72890e10e5be710cc03356b5d3f4c35208dec973ac93ed50b1aba6f909a9a620bfb82757375c0
|
data/README.md
CHANGED
@@ -7,7 +7,8 @@ A FFI wrapper around the OpenSCAP library.
|
|
7
7
|
|
8
8
|
Features/problems
|
9
9
|
-------------
|
10
|
-
Current version supports minimal set of functions needed to build own scanner.
|
10
|
+
Current version supports minimal set of functions needed to build own scanner. This module
|
11
|
+
is self documented by its test suite.
|
11
12
|
|
12
13
|
Sample Scanner Implementation
|
13
14
|
-------------
|
data/lib/openscap/ds/arf.rb
CHANGED
@@ -9,15 +9,24 @@
|
|
9
9
|
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
10
|
#
|
11
11
|
|
12
|
+
require 'openscap/ds/sds'
|
12
13
|
require 'openscap/source'
|
14
|
+
require 'openscap/xccdf/testresult'
|
13
15
|
require 'openscap/libc'
|
14
16
|
|
15
17
|
module OpenSCAP
|
16
18
|
module DS
|
17
19
|
class Arf
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
attr_reader :source
|
21
|
+
|
22
|
+
def initialize(param)
|
23
|
+
case param
|
24
|
+
when String, Hash
|
25
|
+
@source = OpenSCAP::Source.new(param)
|
26
|
+
@session = OpenSCAP.ds_rds_session_new_from_source @source.raw
|
27
|
+
else
|
28
|
+
raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::DS:Arf with '#{param}'"
|
29
|
+
end
|
21
30
|
if @session.null?
|
22
31
|
OpenSCAP.raise!
|
23
32
|
end
|
@@ -29,6 +38,23 @@ module OpenSCAP
|
|
29
38
|
@source.destroy()
|
30
39
|
end
|
31
40
|
|
41
|
+
def test_result(id=nil)
|
42
|
+
source = OpenSCAP.ds_rds_session_select_report(@session, id)
|
43
|
+
OpenSCAP.raise!() if source.nil?
|
44
|
+
OpenSCAP::Xccdf::TestResult.new(source)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_result=(tr)
|
48
|
+
source = tr.source
|
49
|
+
OpenSCAP.raise! unless OpenSCAP.ds_rds_session_replace_report_with_source(@session, source.raw) == 0
|
50
|
+
end
|
51
|
+
|
52
|
+
def report_request(id=nil)
|
53
|
+
source_p = OpenSCAP.ds_rds_session_select_report_request(@session, id)
|
54
|
+
source = OpenSCAP::Source.new source_p
|
55
|
+
OpenSCAP::DS::Sds.new(source)
|
56
|
+
end
|
57
|
+
|
32
58
|
def html
|
33
59
|
html_p = OpenSCAP.ds_rds_session_get_html_report @session
|
34
60
|
OpenSCAP.raise! if OpenSCAP.error?
|
@@ -42,5 +68,8 @@ module OpenSCAP
|
|
42
68
|
|
43
69
|
attach_function :ds_rds_session_new_from_source, [:pointer], :pointer
|
44
70
|
attach_function :ds_rds_session_free, [:pointer], :void
|
71
|
+
attach_function :ds_rds_session_select_report, [:pointer, :string], :pointer
|
72
|
+
attach_function :ds_rds_session_replace_report_with_source, [:pointer, :pointer], :int
|
73
|
+
attach_function :ds_rds_session_select_report_request, [:pointer, :string], :pointer
|
45
74
|
attach_function :ds_rds_session_get_html_report, [:pointer], :pointer
|
46
75
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap/source'
|
13
|
+
|
14
|
+
module OpenSCAP
|
15
|
+
module DS
|
16
|
+
class Sds
|
17
|
+
attr_reader :raw
|
18
|
+
|
19
|
+
def initialize(param)
|
20
|
+
@raw = case param
|
21
|
+
when OpenSCAP::Source
|
22
|
+
@raw = OpenSCAP.ds_sds_session_new_from_source param.raw
|
23
|
+
when Hash
|
24
|
+
@raw = OpenSCAP.ds_sds_session_new_from_source param[:source].raw
|
25
|
+
end
|
26
|
+
OpenSCAP.raise! if @raw.null?
|
27
|
+
end
|
28
|
+
|
29
|
+
def select_checklist(p={})
|
30
|
+
source_p = OpenSCAP.ds_sds_session_select_checklist(@raw, p[:datastream_id], p[:component_id], nil)
|
31
|
+
OpenSCAP::Source.new source_p
|
32
|
+
end
|
33
|
+
|
34
|
+
def select_checklist!(p={})
|
35
|
+
checklist = select_checklist(p)
|
36
|
+
OpenSCAP.raise! if checklist.nil? or checklist.raw.null?
|
37
|
+
return checklist
|
38
|
+
end
|
39
|
+
|
40
|
+
def html_guide(profile=nil)
|
41
|
+
html = OpenSCAP.ds_sds_session_get_html_guide(@raw, profile)
|
42
|
+
OpenSCAP.raise! if html.nil?
|
43
|
+
return html
|
44
|
+
end
|
45
|
+
|
46
|
+
def destroy
|
47
|
+
OpenSCAP.ds_sds_session_free(@raw)
|
48
|
+
@raw = nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
attach_function :ds_sds_session_new_from_source, [:pointer], :pointer
|
54
|
+
attach_function :ds_sds_session_free, [:pointer], :void
|
55
|
+
attach_function :ds_sds_session_select_checklist, [:pointer, :string, :string, :string], :pointer
|
56
|
+
attach_function :ds_sds_session_get_html_guide, [:pointer, :string], :string
|
57
|
+
|
58
|
+
end
|
data/lib/openscap/openscap.rb
CHANGED
@@ -24,10 +24,12 @@ module OpenSCAP
|
|
24
24
|
return err.null? ? nil : err.read_string()
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.raise!
|
27
|
+
def self.raise!(msg=nil)
|
28
28
|
err = get_full_error
|
29
29
|
if err.nil?
|
30
|
-
err = '(unknown error)'
|
30
|
+
err = msg.nil? ? '(unknown error)' : msg
|
31
|
+
else
|
32
|
+
err += "\n#{msg}"
|
31
33
|
end
|
32
34
|
raise OpenSCAPError, err
|
33
35
|
end
|
@@ -36,6 +38,8 @@ module OpenSCAP
|
|
36
38
|
attach_function :oscap_cleanup, [], :void
|
37
39
|
attach_function :oscap_get_version, [], :string
|
38
40
|
|
41
|
+
attach_function :oscap_document_type_to_string, [:int], :string
|
42
|
+
|
39
43
|
attach_function :oscap_err, [], :bool
|
40
44
|
attach_function :oscap_err_get_full_error, [], :pointer
|
41
45
|
private_class_method :oscap_err, :oscap_err_get_full_error
|
data/lib/openscap/source.rb
CHANGED
@@ -11,18 +11,42 @@
|
|
11
11
|
|
12
12
|
module OpenSCAP
|
13
13
|
class Source
|
14
|
-
def initialize(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def initialize(param)
|
15
|
+
case param
|
16
|
+
when nil
|
17
|
+
raise OpenSCAPError, "No filename specified!"
|
18
|
+
when String
|
19
|
+
@s = OpenSCAP.oscap_source_new_from_file(param)
|
20
|
+
when Hash
|
21
|
+
@s = OpenSCAP.oscap_source_new_from_memory param[:content], param[:content].length, param[:path]
|
22
|
+
when FFI::Pointer
|
23
|
+
@s = param
|
24
|
+
else
|
25
|
+
raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Source with '#{param}'"
|
19
26
|
end
|
27
|
+
OpenSCAP.raise! if @s.null?
|
28
|
+
end
|
29
|
+
|
30
|
+
def type
|
31
|
+
OpenSCAP.oscap_document_type_to_string(OpenSCAP.oscap_source_get_scap_type(@s))
|
32
|
+
end
|
33
|
+
|
34
|
+
def validate!
|
35
|
+
e = FFI::MemoryPointer.new(:char, 4096)
|
36
|
+
if 0 != OpenSCAP.oscap_source_validate(@s, XmlReporterCallback, e)
|
37
|
+
OpenSCAP.raise! e.read_string
|
38
|
+
end
|
39
|
+
|
20
40
|
end
|
21
41
|
|
22
42
|
def raw
|
23
43
|
@s
|
24
44
|
end
|
25
45
|
|
46
|
+
def save(filepath=nil)
|
47
|
+
OpenSCAP.raise! unless OpenSCAP.oscap_source_save_as(raw, filepath) == 0
|
48
|
+
end
|
49
|
+
|
26
50
|
def destroy
|
27
51
|
OpenSCAP.oscap_source_free(@s)
|
28
52
|
@s = nil
|
@@ -30,5 +54,21 @@ module OpenSCAP
|
|
30
54
|
end
|
31
55
|
|
32
56
|
attach_function :oscap_source_new_from_file, [:string], :pointer
|
57
|
+
attach_function :oscap_source_new_from_memory, [:string, :int, :string], :pointer
|
58
|
+
attach_function :oscap_source_get_scap_type, [:pointer], :int
|
33
59
|
attach_function :oscap_source_free, [:pointer], :void
|
60
|
+
attach_function :oscap_source_save_as, [:pointer, :string], :int
|
61
|
+
|
62
|
+
callback :xml_reporter, [:string, :int, :string, :pointer], :int
|
63
|
+
attach_function :oscap_source_validate, [:pointer, :xml_reporter, :pointer], :int
|
64
|
+
XmlReporterCallback = Proc.new do |filename, line_number, error_message, e|
|
65
|
+
offset = e.get_string(0).length
|
66
|
+
msg = "#{filename}:#{line_number}: #{error_message}"
|
67
|
+
if msg.length + offset + 1 < e.size
|
68
|
+
e.put_string(offset, msg)
|
69
|
+
0
|
70
|
+
else
|
71
|
+
1
|
72
|
+
end
|
73
|
+
end
|
34
74
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
module OpenSCAP
|
13
|
+
class Text
|
14
|
+
attr_reader :raw
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@raw = OpenSCAP.oscap_text_new
|
18
|
+
end
|
19
|
+
|
20
|
+
def text=(str)
|
21
|
+
OpenSCAP.raise! unless OpenSCAP.oscap_text_set_text(raw, str)
|
22
|
+
end
|
23
|
+
|
24
|
+
def text
|
25
|
+
OpenSCAP.oscap_text_get_text(raw)
|
26
|
+
end
|
27
|
+
|
28
|
+
def destroy
|
29
|
+
OpenSCAP.oscap_text_free(raw)
|
30
|
+
raw = nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class TextList
|
35
|
+
def initialize(oscap_text_iterator)
|
36
|
+
@raw = oscap_text_iterator
|
37
|
+
end
|
38
|
+
|
39
|
+
def plaintext(lang=nil)
|
40
|
+
OpenSCAP.oscap_textlist_get_preferred_plaintext @raw, lang
|
41
|
+
end
|
42
|
+
|
43
|
+
def destroy
|
44
|
+
OpenSCAP.oscap_text_iterator_free @raw
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
attach_function :oscap_text_new, [], :pointer
|
49
|
+
attach_function :oscap_text_set_text, [:pointer, :string], :bool
|
50
|
+
attach_function :oscap_text_get_text, [:pointer], :string
|
51
|
+
attach_function :oscap_text_free, [:pointer], :void
|
52
|
+
|
53
|
+
attach_function :oscap_textlist_get_preferred_plaintext, [:pointer, :string], :string
|
54
|
+
attach_function :oscap_text_iterator_free, [:pointer], :void
|
55
|
+
end
|
data/lib/openscap/version.rb
CHANGED
@@ -9,10 +9,10 @@
|
|
9
9
|
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
10
|
#
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
require 'openscap/openscap'
|
13
|
+
|
14
|
+
module OpenSCAP
|
15
|
+
module Xccdf
|
16
|
+
NUMERIC = :float
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap/source'
|
13
|
+
require 'openscap/xccdf/profile'
|
14
|
+
|
15
|
+
module OpenSCAP
|
16
|
+
module Xccdf
|
17
|
+
class Benchmark
|
18
|
+
attr_reader :raw
|
19
|
+
|
20
|
+
def initialize(p)
|
21
|
+
case p
|
22
|
+
when OpenSCAP::Source
|
23
|
+
@raw = OpenSCAP.xccdf_benchmark_import_source p.raw
|
24
|
+
else
|
25
|
+
raise OpenSCAP::OpenSCAPError,
|
26
|
+
"Cannot initialize OpenSCAP::Xccdf::Benchmark with '#{p}'"
|
27
|
+
end
|
28
|
+
OpenSCAP.raise! if @raw.null?
|
29
|
+
end
|
30
|
+
|
31
|
+
def profiles
|
32
|
+
@profiles ||= profiles_init
|
33
|
+
end
|
34
|
+
|
35
|
+
def destroy
|
36
|
+
OpenSCAP.xccdf_benchmark_free @raw
|
37
|
+
@raw = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def profiles_init
|
42
|
+
profiles = {}
|
43
|
+
profit = OpenSCAP.xccdf_benchmark_get_profiles raw
|
44
|
+
while OpenSCAP.xccdf_profile_iterator_has_more profit
|
45
|
+
profile_p = OpenSCAP.xccdf_profile_iterator_next profit
|
46
|
+
profile = OpenSCAP::Xccdf::Profile.new profile_p
|
47
|
+
profiles[profile.id] = profile
|
48
|
+
end
|
49
|
+
OpenSCAP.xccdf_profile_iterator_free profit
|
50
|
+
profiles
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
attach_function :xccdf_benchmark_import_source, [:pointer], :pointer
|
56
|
+
attach_function :xccdf_benchmark_free, [:pointer], :void
|
57
|
+
|
58
|
+
attach_function :xccdf_benchmark_get_profiles, [:pointer], :pointer
|
59
|
+
attach_function :xccdf_profile_iterator_has_more, [:pointer], :bool
|
60
|
+
attach_function :xccdf_profile_iterator_next, [:pointer], :pointer
|
61
|
+
attach_function :xccdf_profile_iterator_free, [:pointer], :void
|
62
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap/text'
|
13
|
+
|
14
|
+
module OpenSCAP
|
15
|
+
module Xccdf
|
16
|
+
class Profile
|
17
|
+
attr_reader :raw
|
18
|
+
|
19
|
+
def initialize(p)
|
20
|
+
case p
|
21
|
+
when FFI::Pointer
|
22
|
+
@raw = p
|
23
|
+
else
|
24
|
+
raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Xccdf::Profile with #{p}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def id
|
29
|
+
OpenSCAP.xccdf_profile_get_id raw
|
30
|
+
end
|
31
|
+
|
32
|
+
def title(prefered_lang=nil)
|
33
|
+
textlist = OpenSCAP::TextList.new(OpenSCAP.xccdf_profile_get_title(@raw))
|
34
|
+
title = textlist.plaintext(prefered_lang)
|
35
|
+
textlist.destroy
|
36
|
+
return title
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
attach_function :xccdf_profile_get_id, [:pointer], :string
|
42
|
+
attach_function :xccdf_profile_get_title, [:pointer], :pointer
|
43
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2014 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This software is licensed to you under the GNU General Public License,
|
5
|
+
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
|
6
|
+
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
|
7
|
+
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
|
8
|
+
# along with this software; if not, see
|
9
|
+
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'openscap/exceptions'
|
13
|
+
require 'openscap/text'
|
14
|
+
|
15
|
+
module OpenSCAP
|
16
|
+
module Xccdf
|
17
|
+
class RuleResult
|
18
|
+
def initialize(t)
|
19
|
+
case t
|
20
|
+
when FFI::Pointer
|
21
|
+
@rr = t
|
22
|
+
else
|
23
|
+
raise OpenSCAP::OpenSCAPError, "Cannot initialize TestResult with #{t}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def id
|
28
|
+
OpenSCAP.xccdf_rule_result_get_idref @rr
|
29
|
+
end
|
30
|
+
|
31
|
+
def result
|
32
|
+
OpenSCAP.xccdf_test_result_type_get_text \
|
33
|
+
OpenSCAP.xccdf_rule_result_get_result(@rr)
|
34
|
+
end
|
35
|
+
|
36
|
+
def override!(param)
|
37
|
+
if OpenSCAP::XccdfResult[param[:new_result]] > OpenSCAP::XccdfResult[:fixed]
|
38
|
+
raise OpenSCAPError, "Could not recognize result type: '#{param[:new_result]}'"
|
39
|
+
end
|
40
|
+
t = OpenSCAP::Text.new
|
41
|
+
t.text = param[:raw_text]
|
42
|
+
if !OpenSCAP.xccdf_rule_result_override(@rr,
|
43
|
+
OpenSCAP::XccdfResult[param[:new_result]],
|
44
|
+
param[:time], param[:authority], t.raw)
|
45
|
+
OpenSCAP.raise!
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def destroy
|
50
|
+
OpenSCAP.xccdf_rule_result_free @rr
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
attach_function :xccdf_rule_result_get_idref, [:pointer], :string
|
56
|
+
attach_function :xccdf_rule_result_free, [:pointer], :void
|
57
|
+
attach_function :xccdf_rule_result_get_result, [:pointer], :int
|
58
|
+
attach_function :xccdf_test_result_type_get_text, [:int], :string
|
59
|
+
|
60
|
+
XccdfResult = enum(:pass, 1,
|
61
|
+
:fail,
|
62
|
+
:error,
|
63
|
+
:unknown,
|
64
|
+
:notapplicable,
|
65
|
+
:notchecked,
|
66
|
+
:notselected,
|
67
|
+
:informational,
|
68
|
+
:fixed)
|
69
|
+
attach_function :xccdf_rule_result_override,
|
70
|
+
[:pointer, XccdfResult, :string, :string, :pointer], :bool
|
71
|
+
end
|