diff --git a/.github/workflows/scripts/qemu-8-summary.sh b/.github/workflows/scripts/qemu-8-summary.sh index 39b3d124c794..65a270d433ca 100755 --- a/.github/workflows/scripts/qemu-8-summary.sh +++ b/.github/workflows/scripts/qemu-8-summary.sh @@ -7,6 +7,7 @@ set -eu # read our defined variables +test -f /var/tmp/env.txt || exit 0 source /var/tmp/env.txt cd $RESPATH diff --git a/lib/libefi/rdwr_efi.c b/lib/libefi/rdwr_efi.c index 0a93fd1338f6..c846da323ed8 100644 --- a/lib/libefi/rdwr_efi.c +++ b/lib/libefi/rdwr_efi.c @@ -217,81 +217,99 @@ efi_get_info(int fd, struct dk_cinfo *dki_info) goto error; if ((strncmp(dev_path, "/dev/sd", 7) == 0)) { - strcpy(dki_info->dki_cname, "sd"); + strlcpy(dki_info->dki_cname, "sd", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_SCSI_CCS; - rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", + rval = sscanf(dev_path, "/dev/%15[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/hd", 7) == 0)) { - strcpy(dki_info->dki_cname, "hd"); + strlcpy(dki_info->dki_cname, "hd", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_DIRECT; - rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", + rval = sscanf(dev_path, "/dev/%15[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/md", 7) == 0)) { - strcpy(dki_info->dki_cname, "pseudo"); + strlcpy(dki_info->dki_cname, "pseudo", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_MD; - strcpy(dki_info->dki_dname, "md"); - rval = sscanf(dev_path, "/dev/md%[0-9]p%hu", + strlcpy(dki_info->dki_dname, "md", + sizeof (dki_info->dki_dname)); + rval = sscanf(dev_path, "/dev/md%13[0-9]p%hu", dki_info->dki_dname + 2, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/vd", 7) == 0)) { - strcpy(dki_info->dki_cname, "vd"); + strlcpy(dki_info->dki_cname, "vd", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_MD; - rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", + rval = sscanf(dev_path, "/dev/%15[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/xvd", 8) == 0)) { - strcpy(dki_info->dki_cname, "xvd"); + strlcpy(dki_info->dki_cname, "xvd", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_MD; - rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", + rval = sscanf(dev_path, "/dev/%15[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/zd", 7) == 0)) { - strcpy(dki_info->dki_cname, "zd"); + strlcpy(dki_info->dki_cname, "zd", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_MD; - strcpy(dki_info->dki_dname, "zd"); - rval = sscanf(dev_path, "/dev/zd%[0-9]p%hu", + strlcpy(dki_info->dki_dname, "zd", + sizeof (dki_info->dki_dname)); + rval = sscanf(dev_path, "/dev/zd%13[0-9]p%hu", dki_info->dki_dname + 2, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/dm-", 8) == 0)) { - strcpy(dki_info->dki_cname, "pseudo"); + strlcpy(dki_info->dki_cname, "pseudo", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_VBD; - strcpy(dki_info->dki_dname, "dm-"); - rval = sscanf(dev_path, "/dev/dm-%[0-9]p%hu", + strlcpy(dki_info->dki_dname, "dm-", + sizeof (dki_info->dki_dname)); + rval = sscanf(dev_path, "/dev/dm-%12[0-9]p%hu", dki_info->dki_dname + 3, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/ram", 8) == 0)) { - strcpy(dki_info->dki_cname, "pseudo"); + strlcpy(dki_info->dki_cname, "pseudo", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_PCMCIA_MEM; - strcpy(dki_info->dki_dname, "ram"); - rval = sscanf(dev_path, "/dev/ram%[0-9]p%hu", + strlcpy(dki_info->dki_dname, "ram", + sizeof (dki_info->dki_dname)); + rval = sscanf(dev_path, "/dev/ram%12[0-9]p%hu", dki_info->dki_dname + 3, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/loop", 9) == 0)) { - strcpy(dki_info->dki_cname, "pseudo"); + strlcpy(dki_info->dki_cname, "pseudo", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_VBD; - strcpy(dki_info->dki_dname, "loop"); - rval = sscanf(dev_path, "/dev/loop%[0-9]p%hu", + strlcpy(dki_info->dki_dname, "loop", + sizeof (dki_info->dki_dname)); + rval = sscanf(dev_path, "/dev/loop%11[0-9]p%hu", dki_info->dki_dname + 4, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/nvme", 9) == 0)) { - strcpy(dki_info->dki_cname, "nvme"); + strlcpy(dki_info->dki_cname, "nvme", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_SCSI_CCS; - strcpy(dki_info->dki_dname, "nvme"); - (void) sscanf(dev_path, "/dev/nvme%[0-9]", + strlcpy(dki_info->dki_dname, "nvme", + sizeof (dki_info->dki_dname)); + (void) sscanf(dev_path, "/dev/nvme%11[0-9]", dki_info->dki_dname + 4); size_t controller_length = strlen( dki_info->dki_dname); - strcpy(dki_info->dki_dname + controller_length, - "n"); + strlcpy(dki_info->dki_dname + controller_length, + "n", sizeof (dki_info->dki_dname) - controller_length); rval = sscanf(dev_path, - "/dev/nvme%*[0-9]n%[0-9]p%hu", + "/dev/nvme%*[0-9]n%5[0-9]p%hu", dki_info->dki_dname + controller_length + 1, &dki_info->dki_partition); } else { - strcpy(dki_info->dki_dname, "unknown"); - strcpy(dki_info->dki_cname, "unknown"); + strlcpy(dki_info->dki_dname, "unknown", + sizeof (dki_info->dki_dname)); + strlcpy(dki_info->dki_cname, "unknown", + sizeof (dki_info->dki_cname)); dki_info->dki_ctype = DKC_UNKNOWN; }