This file is indexed.

/usr/include/openscap/oval_session.h is in libopenscap-dev 1.2.15-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/**
 * @addtogroup OVAL
 * @{
 * @addtogroup OVALSESSION
 * OVAL Session
 *
 * This is a high level API for OVAL Definition content evaluation, collection
 * of OVAL System Characteristics and analysing of OVAL Definitions and
 * collected OVAL System Characteristics.
 * @{
 *
 * @file
 */

/*
 * Copyright 2015 Red Hat Inc., Durham, North Carolina.
 * All Rights Reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Author:
 * 		Michal Šrubař <msrubar@redhat.com>
 */

#ifndef OVAL_SESSION_H_
#define OVAL_SESSION_H_
#include "oscap_download_cb.h"

/**
 * @struct oval_session
 * A structure encapsulating the context of OVAL operations.
 */
struct oval_session;

/**
 * Costructor of an \ref oval_session. It attempts to recognize a type of the
 * filename which has to be a source datastream or OVAL Definitions.
 *
 * @memberof oval_session
 * @param filename a path to an OVAL or source datastream file
 *
 * @returns a newly created \ref oval_session
 * @retval NULL in case of an error (use \ref oscap_err_desc or \ref
 * oscap_err_get_full_error to get more details)
 */
struct oval_session *oval_session_new(const char *filename);

/**
 * Set OVAL Variables.
 *
 * If a filename has been already set then it will be overwritten. If you pass
 * NULL as filename argument then the currently set variables will be freed.
 * Validation of the format will be perforemed when the \ref oval_session_load
 * is called.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param filename a path to an OVAL Variables file
 */
void oval_session_set_variables(struct oval_session *session, const char *filename);

/**
 * Set OVAL Directives
 *
 * If a filename has been already set then it will be overwritten. If you pass
 * NULL as filename argument then the currently set variables will be freed.
 * Validation of the format will be perforemed when the \ref oval_session_load
 * is called.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param filename a path to an OVAL Directives file
 */
void oval_session_set_directives(struct oval_session *session, const char *filename);

/**
 * Set XSD validation level.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param validate false value indicates to skip any XSD validation
 * @param full_validation true value indicates that every possible step will be validated by XSD
 */
void oval_session_set_validation(struct oval_session *session, bool validate, bool full_validation);

/**
 * Set ID of a specific OVAL Definition in an source datastream.
 *
 * If the ID has been already set then it will be overwritten. In case where
 * there are two OVALs in one datastream use \ref oval_session_set_component_id.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param id an id of a definition
 */
void oval_session_set_datastream_id(struct oval_session *session, const char *id);

/**
 * Set ID of a particular OVAL component if there are two OVALs in one
 * source datastream. If the ID has been already set then it will be
 * overwritten.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param id an id of a definition
 */
void oval_session_set_component_id(struct oval_session *session, const char *id);

/**
 * Set a name of the file that the the OVAL Results will be written into. If the
 * file's name has been already set for the current session then it will be
 * overwritten.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param filename a path to a new file
 */
void oval_session_set_results_export(struct oval_session *session, const char *filename);

/**
 * Set a name of the file that the the OVAL Results, converted to HTML format,
 * will be written into. If the file's name has been already set for the current
 * session then it will be overwritten.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param filename a path to a new file
 */
void oval_session_set_report_export(struct oval_session *session, const char *filename);

/**
 * Set XML validation reporter.
 *
 * This function is called when there is something invalid in input/output XML
 * file.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param fn pointer to XML reporter function
 */
void oval_session_set_xml_reporter(struct oval_session *session, xml_reporter fn);

/**
 * Load OVAL Definitions and bind OVAL Variables to it if provided. Validation
 * if performed automatically if you've set it with \ref
 * oval_session_set_validation. if the validation failed then the function will
 * print information about what line in what file isn't valid and why not.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 *
 * @retval 0 on success
 * @retval 1 on an internal error (use \ref oscap_err_desc or \ref
 * oscap_err_get_full_error to get more details)
 */
int oval_session_load(struct oval_session *session);

/**
 * Evaluate a specific OVAL Definition. The result of the evaluation will be
 * written into the result argument. You can convert it into a string
 * representation with \ref oval_result_get_text.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param probe_root FIXME:
 * @param id id of an OVAL Definition
 * @param result variable to write the result into
 *
 * @retval 0 on success
 * @retval 1 on an internal error (use \ref oscap_err_desc or \ref
 * oscap_err_get_full_error to get more details)
 */
int oval_session_evaluate_id(struct oval_session *session, char *probe_root, const char *id, oval_result_t *result);

/**
 * Evaluate OVAL Definitions. Optionally you can set a callback function which
 * will be called upon single evaluation. Use \ref oval_result_definition_get_id
 * to get the ID of the evaluated OVAL Definion and \ref
 * oval_result_definition_get_result, \ref oval_result_get_text to get a text
 * representation of the result.
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param probe_root FIXME:
 * @param fn a callback function
 * @param arg an optional argument for your callback function
 *
 * @retval 0 on success
 * @retval 1 on an internal error (use \ref oscap_err_desc or \ref
 * oscap_err_get_full_error to get more details)
 */
int oval_session_evaluate(struct oval_session *session, char *probe_root, agent_reporter fn, void *arg);

/**
 * Export result to a file. Results can be represented as OVAL System
 * Characteristics if analyse has been done or OVAL Results if evaluation or
 * collect has been done. If there aren't any filenames set or no operation was
 * performed then this function has no effect.
 *
 * Alse see:
 * \ref oval_session_set_results_export
 * \ref oval_session_set_report_export
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 *
 * @retval 0 on success
 * @retval 1 on an internal error (use \ref oscap_err_desc or \ref
 * oscap_err_get_full_error to get more details)
 */
int oval_session_export(struct oval_session *session);

/**
 * Set exporting of system characteristics in OVAL results
 *
 *
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param export false values indicated no system_characteristics in OVAL Results
 */
void oval_session_set_export_system_characteristics(struct oval_session *session, bool export);

/**
 * Set property of remote content.
 * @memberof oval_session
 * @param session an \ref oval_session
 * @param allowed Whether is download of remote resources allowed in this session (defaults to false)
 * @param callback used to notify user about download proceeds. This might be safely set
 * to NULL -- ignoring user notification.
 */
void oval_session_set_remote_resources(struct oval_session *session, bool allowed, download_progress_calllback_t callback);

/**
 * Destructor of an \ref oval_session.
 * @memberof oval_session
 * @param session an \ref oval_session to destroy
 */
void oval_session_free(struct oval_session *session);

#endif