From 6fc1cd8d0240203842ead4a592ce7a8c4c3d65eb Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Fri, 18 Nov 2022 00:28:19 +0200 Subject: 15190 libofmt: comparison of integers of different signs Reviewed by: Andy Stormont Reviewed by: Robert Mustacchi Approved by: Gordon Ross --- usr/src/lib/libofmt/common/ofmt.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/usr/src/lib/libofmt/common/ofmt.c b/usr/src/lib/libofmt/common/ofmt.c index 0b248b2b2d..eb3624a8c2 100644 --- a/usr/src/lib/libofmt/common/ofmt.c +++ b/usr/src/lib/libofmt/common/ofmt.c @@ -71,7 +71,7 @@ typedef struct ofmt_state_s { struct winsize os_winsize; int os_nrow; uint_t os_flags; - int os_nbad; + uint_t os_nbad; char **os_badfields; int os_maxnamelen; /* longest name (f. multiline) */ char os_fs; /* field seperator */ @@ -141,7 +141,7 @@ static split_t * split_fields(const ofmt_field_t *template, uint_t maxfields, uint_t maxcols) { split_t *sp; - int i, cols; + uint_t i, cols; sp = calloc(sizeof (split_t), 1); if (sp == NULL) @@ -311,7 +311,7 @@ void ofmt_close(ofmt_handle_t ofmt) { ofmt_state_t *os = ofmt; - int i; + uint_t i; if (os == NULL) return; @@ -402,7 +402,7 @@ ofmt_fit_width(split_t **spp, uint_t width, char *value, uint_t bufsize) { split_t *sp = *spp; char *ptr = value, *lim = ptr + bufsize; - int i, nextlen; + uint_t i, nextlen; if (sp == NULL) { sp = split_str(value, OFMT_MAX_ROWS); @@ -436,7 +436,7 @@ void ofmt_print(ofmt_handle_t ofmt, void *arg) { ofmt_state_t *os = ofmt; - int i; + uint_t i; char value[1024]; ofmt_field_t *of; boolean_t escsep, more_rows; @@ -525,7 +525,7 @@ void ofmt_print_header(ofmt_handle_t ofmt) { ofmt_state_t *os = ofmt; - int i; + uint_t i; ofmt_field_t *of = os->os_fields; boolean_t escsep = (os->os_nfields > 1); @@ -560,7 +560,7 @@ ofmt_strerror(ofmt_handle_t ofmt, ofmt_status_t error, char *buf, uint_t bufsize) { ofmt_state_t *os = ofmt; - int i; + uint_t i; const char *s; char ebuf[OFMT_BUFSIZE]; boolean_t parsable; -- cgit v1.2.3 From c8ed50c6d60fbb337f556eadef95cef18c28afa5 Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Sun, 20 Nov 2022 01:00:57 +0200 Subject: 15193 libdladm: sizeof-pointer-memaccess Reviewed by: Jason King Reviewed by: Yuri Pankov Reviewed by: Marco van Wieringen Approved by: Gordon Ross --- usr/src/lib/libdladm/common/libdlsim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr/src/lib/libdladm/common/libdlsim.c b/usr/src/lib/libdladm/common/libdlsim.c index 7b8c515875..c4d52abe60 100644 --- a/usr/src/lib/libdladm/common/libdlsim.c +++ b/usr/src/lib/libdladm/common/libdlsim.c @@ -386,7 +386,7 @@ dladm_simnet_info(dladm_handle_t handle, datalink_id_t simnet_id, if (class != DATALINK_CLASS_SIMNET) return (DLADM_STATUS_BADARG); - bzero(attrp, sizeof (attrp)); + bzero(attrp, sizeof (*attrp)); attrp->sna_link_id = simnet_id; if (flags & DLADM_OPT_ACTIVE) { -- cgit v1.2.3 From 0b49aa923f72d28badbed5f4d3ed43a816f07a39 Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Sat, 19 Nov 2022 16:59:15 +0200 Subject: 15197 libdladm: enumeration values not handled in switch Reviewed by: Marco van Wieringen Approved by: Gordon Ross --- usr/src/lib/libdladm/Makefile.com | 1 - usr/src/lib/libdladm/common/libdliptun.c | 2 ++ usr/src/lib/libdladm/common/libdlvnic.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/usr/src/lib/libdladm/Makefile.com b/usr/src/lib/libdladm/Makefile.com index 13a5e8384a..d766a381c2 100644 --- a/usr/src/lib/libdladm/Makefile.com +++ b/usr/src/lib/libdladm/Makefile.com @@ -44,7 +44,6 @@ SRCDIR = ../common CFLAGS += $(CCVERBOSE) CERRWARN += -_gcc=-Wno-parentheses -CERRWARN += -_gcc=-Wno-switch CERRWARN += -_gcc=-Wno-unused-label CERRWARN += $(CNOWARN_UNINIT) CPPFLAGS += -I$(SRCDIR) -D_REENTRANT diff --git a/usr/src/lib/libdladm/common/libdliptun.c b/usr/src/lib/libdladm/common/libdliptun.c index 8e4855fff5..cf1ab20ba3 100644 --- a/usr/src/lib/libdladm/common/libdliptun.c +++ b/usr/src/lib/libdladm/common/libdliptun.c @@ -122,6 +122,8 @@ i_iptun_kparams(dladm_handle_t handle, const iptun_params_t *params, case IPTUN_TYPE_IPV6: hints.ai_family = AF_INET6; break; + case IPTUN_TYPE_UNKNOWN: + return (DLADM_STATUS_BADIPTUNLADDR); } } diff --git a/usr/src/lib/libdladm/common/libdlvnic.c b/usr/src/lib/libdladm/common/libdlvnic.c index d76fcf0b08..30e9f1b986 100644 --- a/usr/src/lib/libdladm/common/libdlvnic.c +++ b/usr/src/lib/libdladm/common/libdlvnic.c @@ -148,6 +148,8 @@ i_dladm_vnic_create_sys(dladm_handle_t handle, dladm_vnic_attr_t *attr) bcopy(ioc.vc_mac_addr, attr->va_mac_addr, MAXMACADDRLEN); attr->va_mac_len = ioc.vc_mac_len; break; + default: + break; } return (status); } -- cgit v1.2.3 From eaf9751f5dce3a91368ffd99bccc978d5812e4fb Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Tue, 29 Nov 2022 13:52:50 +0200 Subject: 9293 bootadm: empty line between boot entries in menu.lst cause bootadm list-menu to segfault Reviewed by: Andrew Stormont Approved by: Dan McDonald --- usr/src/cmd/boot/bootadm/bootadm_loader.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/usr/src/cmd/boot/bootadm/bootadm_loader.c b/usr/src/cmd/boot/bootadm/bootadm_loader.c index e2d99b24b0..2d15fdbc42 100644 --- a/usr/src/cmd/boot/bootadm/bootadm_loader.c +++ b/usr/src/cmd/boot/bootadm/bootadm_loader.c @@ -325,29 +325,34 @@ menu_read(struct menu_lst *menu, char *menu_path) ret = BAM_ERROR; goto done; } + if (buf[0] == '\n') /* Skip empty lines */ + continue; + key = strtok(buf, " \n"); - if (strcmp(key, "title") != 0) { + if (key == NULL || strcmp(key, "title") != 0) { ret = BAM_ERROR; goto done; } value = strtok(NULL, " \n"); - if ((title = strdup(value)) == NULL) { + if (value == NULL || (title = strdup(value)) == NULL) { ret = BAM_ERROR; goto done; } - if (fgets(buf, PATH_MAX, fp) == NULL) { - ret = BAM_ERROR; - goto done; - } + do { + if (fgets(buf, PATH_MAX, fp) == NULL) { + ret = BAM_ERROR; + goto done; + } + } while (buf[0] == '\n'); /* Skip empty lines */ key = strtok(buf, " \n"); - if ((type = strdup(key)) == NULL) { + if (key == NULL || (type = strdup(key)) == NULL) { ret = BAM_ERROR; goto done; } value = strtok(NULL, " \n"); - if ((bootfs = strdup(value)) == NULL) { + if (value == NULL || (bootfs = strdup(value)) == NULL) { ret = BAM_ERROR; goto done; } -- cgit v1.2.3 From d094b9b6950402cc8187f6a82d3d403d3892e7e7 Mon Sep 17 00:00:00 2001 From: Toomas Soome Date: Tue, 29 Nov 2022 14:12:24 +0200 Subject: 15201 bootadm list-menu segfaults for non-existent datasets Reviewed by: Marcel Telka Reviewed by: Robert Mustacchi Reviewed by: Andrew Stormont Approved by: Dan McDonald --- usr/src/cmd/boot/bootadm/bootadm_loader.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/usr/src/cmd/boot/bootadm/bootadm_loader.c b/usr/src/cmd/boot/bootadm/bootadm_loader.c index 2d15fdbc42..a9dde19132 100644 --- a/usr/src/cmd/boot/bootadm/bootadm_loader.c +++ b/usr/src/cmd/boot/bootadm/bootadm_loader.c @@ -766,6 +766,11 @@ bam_mount_be(menu_entry_t *entry, char **dir) if (strcmp(be_node->be_root_ds, entry->me_bootfs) == 0) break; + if (be_node == NULL) { + ret = BE_ERR_BE_NOENT; + goto out; + } + if (nvlist_add_string(be_attrs, BE_ATTR_ORIG_BE_NAME, be_node->be_node_name) != 0) { ret = BE_ERR_NOMEM; @@ -843,7 +848,8 @@ list_menu_entry(menu_entry_t *entry, char *setting) (void) rmdir(dir); free(dir); } - bam_error(_("%s is not mounted\n"), entry->me_title); + bam_error(_("%s is not mounted: %s\n"), entry->me_title, + be_err_to_str(mounted)); return (BAM_ERROR); } -- cgit v1.2.3