Actions
Bug #5539
closedlandlock: coverity warnings
Affected Versions:
Effort:
Difficulty:
Label:
Description
** CID 1514671: Error handling issues (CHECKED_RETURN)
/src/util-landlock.c: 181 in LandlockSandboxing()
________________________________________________________________________________________________________
*** CID 1514671: Error handling issues (CHECKED_RETURN)
/src/util-landlock.c: 181 in LandlockSandboxing()
175 }
176
177 void LandlockSandboxing(SCInstance *suri)
178 {
179 /* Read configuration variable and exit if no enforcement */
180 int conf_status;
>>> CID 1514671: Error handling issues (CHECKED_RETURN)
>>> Calling "ConfGetBool" without checking return value (as is done elsewhere 30 out of 31 times).
181 ConfGetBool("security.landlock.enabled", &conf_status);
182 if (!conf_status) {
183 SCLogConfig("Landlock is not enabled in configuration");
184 return;
185 }
186 struct landlock_ruleset *ruleset = LandlockCreateRuleset();
** CID 1514670: Security best practices violations (TOCTOU)
/src/util-landlock.c: 204 in LandlockSandboxing()
________________________________________________________________________________________________________
*** CID 1514670: Security best practices violations (TOCTOU)
/src/util-landlock.c: 204 in LandlockSandboxing()
198 if (suri->run_mode == RUNMODE_PCAP_FILE) {
199 const char *pcap_file;
200 ConfGet("pcap-file.file", &pcap_file);
201 char *file_name = SCStrdup(pcap_file);
202 if (file_name != NULL) {
203 struct stat statbuf;
>>> CID 1514670: Security best practices violations (TOCTOU)
>>> Calling function "stat" to perform check on "file_name".
204 if (stat(file_name, &statbuf) != -1) {
205 if (S_ISDIR(statbuf.st_mode)) {
206 LandlockSandboxingReadPath(ruleset, file_name);
207 } else {
208 LandlockSandboxingReadPath(ruleset, dirname(file_name));
209 }
** CID 1514669: (CHECKED_RETURN)
/src/util-landlock.c: 248 in LandlockSandboxing()
/src/util-landlock.c: 200 in LandlockSandboxing()
________________________________________________________________________________________________________
*** CID 1514669: (CHECKED_RETURN)
/src/util-landlock.c: 248 in LandlockSandboxing()
242 } else {
243 LandlockSandboxingWritePath(ruleset, LOCAL_STATE_DIR "/run/suricata/");
244 }
245 }
246 if (suri->sig_file_exclusive == FALSE) {
247 const char *rule_path;
>>> CID 1514669: (CHECKED_RETURN)
>>> Calling "ConfGet" without checking return value (as is done elsewhere 87 out of 89 times).
248 ConfGet("default-rule-path", &rule_path);
249 if (rule_path) {
250 LandlockSandboxingReadPath(ruleset, rule_path);
251 }
252 }
253
/src/util-landlock.c: 200 in LandlockSandboxing()
194 if (stat(ConfigGetDataDirectory(), &sb) == 0) {
195 LandlockSandboxingAddRule(ruleset, ConfigGetDataDirectory(),
196 _LANDLOCK_SURI_ACCESS_FS_WRITE | _LANDLOCK_ACCESS_FS_READ);
197 }
198 if (suri->run_mode == RUNMODE_PCAP_FILE) {
199 const char *pcap_file;
>>> CID 1514669: (CHECKED_RETURN)
>>> Calling "ConfGet" without checking return value (as is done elsewhere 87 out of 89 times).
200 ConfGet("pcap-file.file", &pcap_file);
201 char *file_name = SCStrdup(pcap_file);
202 if (file_name != NULL) {
203 struct stat statbuf;
204 if (stat(file_name, &statbuf) != -1) {
205 if (S_ISDIR(statbuf.st_mode)) {
The retval checking is pretty trivial. Not sure how the TOCTOU would be solved in this case. @Philippe Antoine any thoughts?
Actions