Skip to content

Commit 66e7413

Browse files
authored
Merge pull request #1480 from jan-cerny/yamlfilecontent_probe
yamlfilecontent probe
2 parents 8102d7b + aa5164e commit 66e7413

22 files changed

+1065
-13
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "yaml-filter"]
2+
path = yaml-filter
3+
url = https://github.com/OpenSCAP/yaml-filter.git

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,15 @@ if(GCRYPT_FOUND OR NSS_FOUND)
164164
set(CRYPTO_FOUND TRUE)
165165
endif()
166166

167+
find_package(Libyaml)
168+
if(EXISTS ${CMAKE_SOURCE_DIR}/yaml-filter/CMakeLists.txt)
169+
message(STATUS "yaml-filter was found")
170+
set(YAML_FILTER_FOUND TRUE)
171+
else()
172+
message(STATUS "yaml-filter was not found")
173+
set(YAML_FILTER_FOUND FALSE)
174+
endif()
175+
167176
check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME)
168177
check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN)
169178
check_function_exists(memalign HAVE_MEMALIGN)
@@ -235,6 +244,7 @@ cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT "Independent t
235244
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT54 "Independent textfilecontent54 probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
236245
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_VARIABLE "Independent variable probe" ON "ENABLE_PROBES_INDEPENDENT" OFF)
237246
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT "Independent xmlfilecontent probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
247+
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT "Independent yamlfilecontent probe" ON "ENABLE_PROBES_INDEPENDENT; LIBYAML_FOUND; YAML_FILTER_FOUND; NOT WIN32" OFF)
238248

239249
# UNIX PROBES
240250
cmake_dependent_option(OPENSCAP_PROBE_UNIX_DNSCACHE "Unix dnscache probe" ON "ENABLE_PROBES_UNIX" OFF)
@@ -358,6 +368,7 @@ message(STATUS " Independent sql57 probe (depends on opendbx): ${OPENSCAP_PROBE
358368
message(STATUS " Independent textfilecontent probe: ${OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT}")
359369
message(STATUS " Independent textfilecontent54 probe: ${OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT54}")
360370
message(STATUS " Independent xmlfilecontent probe: ${OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT}")
371+
message(STATUS " Independent yamlfilecontent probe (depends on libyaml, yaml-path): ${OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT}")
361372
message(STATUS " ")
362373

363374

@@ -526,6 +537,7 @@ include_directories(
526537
"src/XCCDF/public/"
527538
"src/XCCDF_POLICY/"
528539
"src/XCCDF_POLICY/public/"
540+
"yaml-filter"
529541
${CMAKE_BINARY_DIR} # config.h is generated to build directory
530542
${LIBXML2_INCLUDE_DIR}
531543
)
@@ -548,6 +560,11 @@ function(set_oscap_generic_properties TARGET_OBJECT)
548560
target_compile_definitions(${TARGET_OBJECT} PRIVATE OSCAP_BUILD_SHARED)
549561
endfunction()
550562

563+
if(OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT)
564+
add_library(yamlfilter_object OBJECT yaml-filter/yaml-path.c yaml-filter/yaml-path.h)
565+
set_oscap_generic_properties(yamlfilter_object)
566+
endif()
567+
551568
add_subdirectory("compat")
552569
add_subdirectory("src")
553570
add_subdirectory("utils")

cmake/FindLibyaml.cmake

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# - Try to find libyaml
2+
# Once done, this will define
3+
#
4+
# LIBYAML_FOUND - system has libyaml
5+
# LIBYAML_INCLUDE_DIRS - the libyaml include directories
6+
# LIBYAML_LIBRARIES - link these to use libyaml
7+
8+
include(LibFindMacros)
9+
10+
# Use pkg-config to get hints about paths
11+
libfind_pkg_check_modules(LIBYAML_PKGCONF yaml-0.1)
12+
13+
# Include dir
14+
find_path(LIBYAML_INCLUDE_DIR
15+
NAMES yaml.h
16+
PATHS ${LIBYAML_PKGCONF_INCLUDE_DIRS}
17+
)
18+
19+
# Finally the library itself
20+
find_library(LIBYAML_LIBRARY
21+
NAMES libyaml.so
22+
PATHS ${LIBYAML_PKGCONF_LIBRARY_DIRS}
23+
)
24+
25+
# Set the include dir variables and the libraries and let libfind_process do the rest.
26+
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
27+
set(LIBYAML_PROCESS_INCLUDES LIBYAML_INCLUDE_DIR)
28+
set(LIBYAML_PROCESS_LIBS LIBYAML_LIBRARY)
29+
libfind_process(LIBYAML)

config.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
#cmakedefine OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT54
9696
#cmakedefine OPENSCAP_PROBE_INDEPENDENT_VARIABLE
9797
#cmakedefine OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT
98+
#cmakedefine OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT
9899
#cmakedefine OPENSCAP_PROBE_LINUX_DPKGINFO
99100
#cmakedefine OPENSCAP_PROBE_LINUX_IFLISTENERS
100101
#cmakedefine OPENSCAP_PROBE_LINUX_INETLISTENINGSERVERS

docs/developer/developer.adoc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,15 @@ mkdir -p build
3131
.. Use fresh sources from git repository.
3232
+
3333
----
34-
$ git clone https://github.com/OpenSCAP/openscap.git
34+
$ git clone --recurse-submodules https://github.com/OpenSCAP/openscap.git
3535
$ cd openscap
3636
----
3737
+
3838

39+
NOTE: We include https://github.com/OpenSCAP/yaml-filter[yaml-filter] library
40+
as a git submodule. To get more information about using git submodules, read
41+
https://git-scm.com/book/en/v2/Git-Tools-Submodules[Git Tools - Submodules].
42+
3943
. *Get the build dependencies*
4044
+
4145
--
@@ -52,7 +56,7 @@ sudo yum install \
5256
cmake dbus-devel GConf2-devel libacl-devel libblkid-devel libcap-devel libcurl-devel \
5357
libgcrypt-devel libselinux-devel libxml2-devel libxslt-devel libattr-devel make openldap-devel \
5458
pcre-devel perl-XML-Parser perl-XML-XPath perl-devel python-devel rpm-devel swig \
55-
bzip2-devel gcc-c++
59+
bzip2-devel gcc-c++ libyaml-devel
5660
----
5761

5862
On Fedora 24+, the command to install the build dependencies is:
@@ -62,7 +66,7 @@ sudo yum install \
6266
cmake dbus-devel GConf2-devel libacl-devel libblkid-devel libcap-devel libcurl-devel \
6367
libgcrypt-devel libselinux-devel libxml2-devel libxslt-devel libattr-devel make openldap-devel \
6468
pcre-devel perl-XML-Parser perl-XML-XPath perl-devel python3-devel rpm-devel swig \
65-
bzip2-devel gcc-c++
69+
bzip2-devel gcc-c++ libyaml-devel
6670
----
6771

6872
On RHEL 8 / CentOS 8, the command to install the build dependencies is:
@@ -72,7 +76,7 @@ sudo yum install \
7276
cmake dbus-devel libacl-devel libblkid-devel libcap-devel libcurl-devel \
7377
libgcrypt-devel libselinux-devel libxml2-devel libxslt-devel libattr-devel make openldap-devel \
7478
pcre-devel perl-XML-Parser perl-XML-XPath perl-devel python36-devel rpm-devel swig \
75-
bzip2-devel gcc-c++
79+
bzip2-devel gcc-c++ libyaml-devel
7680
----
7781

7882
On Ubuntu 16.04, Debian 8 or Debian 9, the command to install the build dependencies is:
@@ -81,7 +85,7 @@ On Ubuntu 16.04, Debian 8 or Debian 9, the command to install the build dependen
8185
sudo apt-get install -y cmake libdbus-1-dev libdbus-glib-1-dev libcurl4-openssl-dev \
8286
libgcrypt20-dev libselinux1-dev libxslt1-dev libgconf2-dev libacl1-dev libblkid-dev \
8387
libcap-dev libxml2-dev libldap2-dev libpcre3-dev python-dev swig libxml-parser-perl \
84-
libxml-xpath-perl libperl-dev libbz2-dev librpm-dev g++ libapt-pkg-dev
88+
libxml-xpath-perl libperl-dev libbz2-dev librpm-dev g++ libapt-pkg-dev libyaml-dev
8589
----
8690

8791
When you have all the build dependencies installed you can build the library.

release_tools/README.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
. Clone a clean `openscap` repository:
1111

12-
git clone https://github.com/OpenSCAP/openscap.git
12+
git clone --recurse-submodules https://github.com/OpenSCAP/openscap.git
1313

1414
. Create `.env` file
1515
+

release_tools/release.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ make_dist()
101101
check_abi()
102102
{
103103
rpm -q abi-compliance-checker || sudo dnf install abi-compliance-checker
104-
test -d openscap-abi-check || git clone [email protected]:OpenSCAP/openscap-abi-check.git
104+
test -d openscap-abi-check || git clone --recurse-submodules [email protected]:OpenSCAP/openscap-abi-check.git
105105
openscap_git_branch=$(git branch | grep '^\* ' | cut -f2 -d' ')
106106
(
107107
cd openscap-abi-check

src/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ set(OBJECTS_TO_LINK_AGAINST
3131
if (TARGET "compat_object")
3232
list(APPEND OBJECTS_TO_LINK_AGAINST $<TARGET_OBJECTS:compat_object>)
3333
endif()
34+
if (TARGET "yamlfilter_object")
35+
list(APPEND OBJECTS_TO_LINK_AGAINST $<TARGET_OBJECTS:yamlfilter_object>)
36+
endif()
3437
if (ENABLE_PROBES)
3538
list(APPEND OBJECTS_TO_LINK_AGAINST
3639
$<TARGET_OBJECTS:probe_object>
@@ -121,6 +124,9 @@ endif()
121124
if(CAP_FOUND)
122125
target_link_libraries(openscap ${CAP_LIBRARIES})
123126
endif()
127+
if(LIBYAML_FOUND)
128+
target_link_libraries(openscap ${LIBYAML_LIBRARIES})
129+
endif()
124130

125131
if(WIN32)
126132
set(OPENSCAP_INSTALL_DESTINATION ".")

src/OVAL/oval_enumerations.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ static const struct oscap_string_map OVAL_SUBTYPE_INDEPENDENT_MAP[] = {
492492
{OVAL_INDEPENDENT_UNKNOWN, "unknown"},
493493
{OVAL_INDEPENDENT_VARIABLE, "variable"},
494494
{OVAL_INDEPENDENT_XML_FILE_CONTENT, "xmlfilecontent"},
495+
{OVAL_INDEPENDENT_YAML_FILE_CONTENT, "yamlfilecontent"},
495496
{OVAL_INDEPENDENT_SYSCHAR_SUBTYPE, "system_info"},
496497
{OVAL_INDEPENDENT_LDAP57, "ldap57"},
497498
{OVAL_INDEPENDENT_LDAP, "ldap"},

src/OVAL/probes/independent/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,12 @@ if(OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT)
8282
)
8383
endif()
8484

85+
if(OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT)
86+
list(APPEND INDEPENDENT_PROBES_SOURCES
87+
"yamlfilecontent_probe.c"
88+
"yamlfilecontent_probe.h"
89+
)
90+
endif()
91+
8592
add_library(independent_probes_object OBJECT ${INDEPENDENT_PROBES_SOURCES})
8693
set_oscap_generic_properties(independent_probes_object)

0 commit comments

Comments
 (0)