summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKinsey Moore <kinsey.moore@oarcorp.com>2024-01-23 13:25:45 -0600
committerJoel Sherrill <joel@rtems.org>2024-01-31 14:00:17 -0600
commit62e0ca8283603573d42a0f15da044cd406a2f00a (patch)
tree0cd06da968ca5abebde5532ad27b63f1f2fd4657
parentrtemsbsd/rc-conf: Avoid use after free (diff)
downloadrtems-libbsd-62e0ca8283603573d42a0f15da044cd406a2f00a.tar.bz2
rtemsbsd/rtems: Check function return values
-rw-r--r--rtemsbsd/rtems/rtems-bsd-rc-conf-net.c10
-rw-r--r--rtemsbsd/rtems/rtems-bsd-syscall-api.c9
-rw-r--r--rtemsbsd/rtems/rtems-kernel-init.c4
-rw-r--r--rtemsbsd/rtems/rtems-kernel-pager.c4
4 files changed, 18 insertions, 9 deletions
diff --git a/rtemsbsd/rtems/rtems-bsd-rc-conf-net.c b/rtemsbsd/rtems/rtems-bsd-rc-conf-net.c
index 23ee15db..8ffaa914 100644
--- a/rtemsbsd/rtems/rtems-bsd-rc-conf-net.c
+++ b/rtemsbsd/rtems/rtems-bsd-rc-conf-net.c
@@ -103,7 +103,9 @@ cloned_interfaces(rtems_bsd_rc_conf* rc_conf, rtems_bsd_rc_conf_argc_argv* aa)
"ifconfig", aa->argv[arg], "create", NULL
};
rtems_bsd_rc_conf_print_cmd(rc_conf, "cloning_interfaces", 3, ifconfg_args);
- rtems_bsd_command_ifconfig(3, (char**) ifconfg_args);
+ if (rtems_bsd_command_ifconfig(3, (char**) ifconfg_args)) {
+ return -1;
+ }
}
return 0;
@@ -377,7 +379,7 @@ defaultrouter(rtems_bsd_rc_conf* rc_conf, rtems_bsd_rc_conf_argc_argv* aa, bool
memset(&sin, 0, sizeof(sin));
memset(&rti_info[0], 0, sizeof(rti_info));
sin.sin_family = AF_INET;
- inet_pton(AF_INET, "0.0.0.0", &sin.sin_addr);
+ (void) inet_pton(AF_INET, "0.0.0.0", &sin.sin_addr);
r = rtems_get_route(&sin, rti_info);
if (r == 0 && rti_info[RTAX_GATEWAY] != NULL) {
@@ -710,9 +712,9 @@ run_dhcp(rtems_bsd_rc_conf* rc_conf, rtems_bsd_rc_conf_argc_argv* aa)
}
dd->config.priority = priority;
- rtems_bsd_rc_conf_find(rc_conf, "dhcpcd_options", dd->argc_argv);
+ r = rtems_bsd_rc_conf_find(rc_conf, "dhcpcd_options", dd->argc_argv);
- if (dd->argc_argv->argc > 0) {
+ if (r == 0 && dd->argc_argv->argc > 0) {
dd->config.argc = dd->argc_argv->argc;
dd->config.argv = dd->argc_argv->argv;
}
diff --git a/rtemsbsd/rtems/rtems-bsd-syscall-api.c b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
index 800aa323..bec03c57 100644
--- a/rtemsbsd/rtems/rtems-bsd-syscall-api.c
+++ b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
@@ -1322,9 +1322,12 @@ rtems_bsd_sysgen_vnstat(
if (vp == NULL)
error = EFAULT;
else {
- VOP_LOCK(vp, LK_SHARED);
- error = vn_stat(vp, buf, td->td_ucred, NOCRED, td);
- VOP_UNLOCK(vp, 0);
+ if (VOP_LOCK(vp, LK_SHARED) == 0) {
+ error = vn_stat(vp, buf, td->td_ucred, NOCRED, td);
+ VOP_UNLOCK(vp, 0);
+ } else {
+ error = ENOLCK;
+ }
}
if (RTEMS_BSD_SYSCALL_TRACE) {
printf("bsd: sys: vnstat: exit %p\n", vp);
diff --git a/rtemsbsd/rtems/rtems-kernel-init.c b/rtemsbsd/rtems/rtems-kernel-init.c
index 90a9c809..8ac2f59e 100644
--- a/rtemsbsd/rtems/rtems-kernel-init.c
+++ b/rtemsbsd/rtems/rtems-kernel-init.c
@@ -223,7 +223,9 @@ rtems_bsd_initialize(void)
return RTEMS_UNSATISFIED;
}
- mkdir("/etc", S_IRWXU | S_IRWXG | S_IRWXO);
+ if (mkdir("/etc", S_IRWXU | S_IRWXG | S_IRWXO) != 0) {
+ return RTEMS_UNSATISFIED;
+ }
sc = rtems_timer_initiate_server(rtems_bsd_get_task_priority(name),
rtems_bsd_get_task_stack_size(name), RTEMS_DEFAULT_ATTRIBUTES);
diff --git a/rtemsbsd/rtems/rtems-kernel-pager.c b/rtemsbsd/rtems/rtems-kernel-pager.c
index 5a48c2e8..d8febb03 100644
--- a/rtemsbsd/rtems/rtems-kernel-pager.c
+++ b/rtemsbsd/rtems/rtems-kernel-pager.c
@@ -85,7 +85,9 @@ pbuf_ctor(void *mem, int size, void *arg, int flags)
bp->b_ioflags = 0;
bp->b_iodone = NULL;
bp->b_error = 0;
- BUF_LOCK(bp, LK_EXCLUSIVE, NULL);
+ if (BUF_LOCK(bp, LK_EXCLUSIVE, NULL) != 0) {
+ return -1;
+ }
return (0);
}