diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2025-02-26 15:11:07 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2025-02-26 15:11:07 +0000 |
| commit | f3a43b3db881679d0b82b97f18871422050a5819 (patch) | |
| tree | de37ff422abe3a329fff80a6c29d864fb27ce16a | |
| parent | d42a73fb6a85b2dd4692cb003065be5c68863860 (diff) | |
ctld: Fail UCL configurations with a nested error
Errors from auth groups, portal groups, global luns, and targets were
not propagated out of the main loop.
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D49071
| -rw-r--r-- | usr.sbin/ctld/uclparse.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/usr.sbin/ctld/uclparse.c b/usr.sbin/ctld/uclparse.c index f8f8954304fa..2dc4872bee84 100644 --- a/usr.sbin/ctld/uclparse.c +++ b/usr.sbin/ctld/uclparse.c @@ -336,7 +336,9 @@ uclparse_toplevel(const ucl_object_t *top) if (obj->type == UCL_OBJECT) { iter = NULL; while ((child = ucl_iterate_object(obj, &iter, true))) { - uclparse_auth_group(ucl_object_key(child), child); + if (!uclparse_auth_group( + ucl_object_key(child), child)) + return (false); } } else { log_warnx("\"auth-group\" section is not an object"); @@ -348,7 +350,9 @@ uclparse_toplevel(const ucl_object_t *top) if (obj->type == UCL_OBJECT) { iter = NULL; while ((child = ucl_iterate_object(obj, &iter, true))) { - uclparse_portal_group(ucl_object_key(child), child); + if (!uclparse_portal_group( + ucl_object_key(child), child)) + return (false); } } else { log_warnx("\"portal-group\" section is not an object"); @@ -360,7 +364,9 @@ uclparse_toplevel(const ucl_object_t *top) if (obj->type == UCL_OBJECT) { iter = NULL; while ((child = ucl_iterate_object(obj, &iter, true))) { - uclparse_lun(ucl_object_key(child), child); + if (!uclparse_lun(ucl_object_key(child), + child)) + return (false); } } else { log_warnx("\"lun\" section is not an object"); @@ -379,8 +385,9 @@ uclparse_toplevel(const ucl_object_t *top) iter = NULL; while ((child = ucl_iterate_object(obj, &iter, true))) { - uclparse_target(ucl_object_key(child), - child); + if (!uclparse_target( + ucl_object_key(child), child)) + return (false); } } else { log_warnx("\"target\" section is not an object"); |
