Page MenuHomeFreeBSD

D32579.diff
No OneTemporary

D32579.diff

diff --git a/sys/geom/label/g_label_msdosfs.c b/sys/geom/label/g_label_msdosfs.c
--- a/sys/geom/label/g_label_msdosfs.c
+++ b/sys/geom/label/g_label_msdosfs.c
@@ -50,6 +50,7 @@
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
+ size_t copysize;
g_topology_assert_not();
pp = cp->provider;
@@ -111,8 +112,9 @@
pp->name);
goto error;
}
- strlcpy(label, pfat_bsbpb->BS_VolLab,
- MIN(size, sizeof(pfat_bsbpb->BS_VolLab) + 1));
+ copysize = MIN(size - 1, sizeof(pfat_bsbpb->BS_VolLab));
+ memcpy(label, pfat_bsbpb->BS_VolLab, copysize);
+ label[copysize] = '\0';
} else if (UINT32BYTES(pfat32_bsbpb->BPB_FATSz32) != 0) {
uint32_t fat_FirstDataSector, fat_BytesPerSector, offset;
@@ -133,8 +135,10 @@
*/
if (strncmp(pfat32_bsbpb->BS_VolLab, LABEL_NO_NAME,
sizeof(pfat32_bsbpb->BS_VolLab)) != 0) {
- strlcpy(label, pfat32_bsbpb->BS_VolLab,
- MIN(size, sizeof(pfat32_bsbpb->BS_VolLab) + 1));
+ copysize = MIN(size - 1,
+ sizeof(pfat32_bsbpb->BS_VolLab) + 1);
+ memcpy(label, pfat32_bsbpb->BS_VolLab, copysize);
+ label[copysize] = '\0';
goto endofchecks;
}
@@ -184,9 +188,11 @@
*/
if (pfat_entry->DIR_Attr &
FAT_DES_ATTR_VOLUME_ID) {
- strlcpy(label, pfat_entry->DIR_Name,
- MIN(size,
- sizeof(pfat_entry->DIR_Name) + 1));
+ copysize = MIN(size - 1,
+ sizeof(pfat_entry->DIR_Name));
+ memcpy(label, pfat_entry->DIR_Name,
+ copysize);
+ label[copysize] = '\0';
goto endofchecks;
}
} while((uint8_t *)(++pfat_entry) <
diff --git a/usr.sbin/fstyp/msdosfs.c b/usr.sbin/fstyp/msdosfs.c
--- a/usr.sbin/fstyp/msdosfs.c
+++ b/usr.sbin/fstyp/msdosfs.c
@@ -48,6 +48,7 @@
FAT32_BSBPB *pfat32_bsbpb;
FAT_DES *pfat_entry;
uint8_t *sector0, *sector;
+ size_t copysize;
sector0 = NULL;
sector = NULL;
@@ -83,8 +84,9 @@
sizeof(pfat_bsbpb->BS_VolLab)) == 0) {
goto endofchecks;
}
- strlcpy(label, pfat_bsbpb->BS_VolLab,
- MIN(size, sizeof(pfat_bsbpb->BS_VolLab) + 1));
+ copysize = MIN(size - 1, sizeof(pfat_bsbpb->BS_VolLab));
+ memcpy(label, pfat_bsbpb->BS_VolLab, copysize);
+ label[copysize] = '\0';
} else if (UINT32BYTES(pfat32_bsbpb->BPB_FATSz32) != 0) {
uint32_t fat_FirstDataSector, fat_BytesPerSector, offset;
@@ -101,8 +103,10 @@
*/
if (strncmp(pfat32_bsbpb->BS_VolLab, LABEL_NO_NAME,
sizeof(pfat32_bsbpb->BS_VolLab)) != 0) {
- strlcpy(label, pfat32_bsbpb->BS_VolLab,
- MIN(size, sizeof(pfat32_bsbpb->BS_VolLab) + 1));
+ copysize = MIN(size - 1,
+ sizeof(pfat32_bsbpb->BS_VolLab) + 1);
+ memcpy(label, pfat32_bsbpb->BS_VolLab, copysize);
+ label[copysize] = '\0';
goto endofchecks;
}
@@ -146,9 +150,11 @@
*/
if (pfat_entry->DIR_Attr &
FAT_DES_ATTR_VOLUME_ID) {
- strlcpy(label, pfat_entry->DIR_Name,
- MIN(size,
- sizeof(pfat_entry->DIR_Name) + 1));
+ copysize = MIN(size - 1,
+ sizeof(pfat_entry->DIR_Name));
+ memcpy(label, pfat_entry->DIR_Name,
+ copysize);
+ label[copysize] = '\0';
goto endofchecks;
}
} while((uint8_t *)(++pfat_entry) <

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 2:48 PM (20 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16494915
Default Alt Text
D32579.diff (3 KB)

Event Timeline