diff options
author | tedu <tedu@openbsd.org> | 2016-10-16 21:44:43 +0000 |
---|---|---|
committer | tedu <tedu@openbsd.org> | 2016-10-16 21:44:43 +0000 |
commit | d95291fdb2dc9cc978800e30892fec18a8836db9 (patch) | |
tree | 11c724442e8c9b56ace39bbf4ef6d4b16621fe43 /usr.sbin/makefs | |
parent | remove GEMDOS code (diff) | |
download | wireguard-openbsd-d95291fdb2dc9cc978800e30892fec18a8836db9.tar.xz wireguard-openbsd-d95291fdb2dc9cc978800e30892fec18a8836db9.zip |
/* XXX bounds checking! */
very crudely fix a few strcpy and sprintf warnings.
leave the quality warnings.
Diffstat (limited to 'usr.sbin/makefs')
-rw-r--r-- | usr.sbin/makefs/cd9660.c | 32 | ||||
-rw-r--r-- | usr.sbin/makefs/ffs.c | 4 |
2 files changed, 19 insertions, 17 deletions
diff --git a/usr.sbin/makefs/cd9660.c b/usr.sbin/makefs/cd9660.c index 90394f30929..45060de81da 100644 --- a/usr.sbin/makefs/cd9660.c +++ b/usr.sbin/makefs/cd9660.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cd9660.c,v 1.3 2016/10/16 20:26:56 natano Exp $ */ +/* $OpenBSD: cd9660.c,v 1.4 2016/10/16 21:44:43 tedu Exp $ */ /* $NetBSD: cd9660.c,v 1.52 2015/12/24 15:52:37 christos Exp $ */ /* @@ -143,14 +143,14 @@ static void cd9660_convert_structure(iso9660_disk *, fsnode *, cd9660node *, int static void cd9660_free_structure(cd9660node *); static int cd9660_generate_path_table(iso9660_disk *); static int cd9660_level1_convert_filename(iso9660_disk *, const char *, char *, - int); + size_t, int); static int cd9660_level2_convert_filename(iso9660_disk *, const char *, char *, - int); + size_t, int); #if 0 static int cd9660_joliet_convert_filename(iso9660_disk *, const char *, char *, int); #endif -static int cd9660_convert_filename(iso9660_disk *, const char *, char *, int); +static int cd9660_convert_filename(iso9660_disk *, const char *, char *, size_t, int); static void cd9660_populate_dot_records(iso9660_disk *, cd9660node *); static int64_t cd9660_compute_offsets(iso9660_disk *, cd9660node *, int64_t); #if 0 @@ -232,7 +232,7 @@ cd9660_set_defaults(iso9660_disk *diskStructure) memset(diskStructure->primaryDescriptor.abstract_file_id, 0x20,37); memset(diskStructure->primaryDescriptor.bibliographic_file_id, 0x20,37); - strcpy(diskStructure->primaryDescriptor.system_id,"NetBSD"); + strlcpy(diskStructure->primaryDescriptor.system_id,"NetBSD", sizeof(diskStructure->primaryDescriptor.system_id)); cd9660_defaults_set = 1; @@ -820,7 +820,7 @@ cd9660_translate_node_common(iso9660_disk *diskStructure, cd9660node *newnode) memset(temp, 0, ISO_FILENAME_MAXLENGTH_WITH_PADDING); (void)cd9660_convert_filename(diskStructure, newnode->node->name, - temp, !(S_ISDIR(newnode->node->type))); + temp, sizeof temp, !(S_ISDIR(newnode->node->type))); flag = ISO_FLAG_CLEAR; if (S_ISDIR(newnode->node->type)) @@ -1139,7 +1139,7 @@ cd9660_rename_filename(iso9660_disk *diskStructure, cd9660node *iter, int num, while (digits > 0) { digit = (int)(temp / powers); temp = temp - digit * powers; - sprintf(&tmp[numbts] , "%d", digit); + snprintf(&tmp[numbts] , ISO_FILENAME_MAXLENGTH_WITH_PADDING - numbts, "%d", digit); digits--; numbts++; powers = powers / 10; @@ -1601,7 +1601,7 @@ cd9660_compute_full_filename(cd9660node *node, char *buf) /* NEW filename conversion method */ typedef int(*cd9660_filename_conversion_functor)(iso9660_disk *, const char *, - char *, int); + char *, size_t, int); /* @@ -1612,7 +1612,7 @@ typedef int(*cd9660_filename_conversion_functor)(iso9660_disk *, const char *, */ static int cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname, - char *newname, int is_file) + char *newname, size_t newnamelen, int is_file) { /* * ISO 9660 : 10.1 @@ -1623,6 +1623,7 @@ cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname, int namelen = 0; int extlen = 0; int found_ext = 0; + char *orignewname = newname; while (*oldname != '\0' && extlen < 3) { /* Handle period first, as it is special */ @@ -1664,7 +1665,7 @@ cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname, if (!found_ext && !diskStructure->omit_trailing_period) *newname++ = '.'; /* Add version */ - sprintf(newname, ";%i", 1); + snprintf(newname, newnamelen - (newname - orignewname), ";%i", 1); } return namelen + extlen + found_ext; } @@ -1672,7 +1673,7 @@ cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname, /* XXX bounds checking! */ static int cd9660_level2_convert_filename(iso9660_disk *diskStructure, const char *oldname, - char *newname, int is_file) + char *newname, size_t newnamelen, int is_file) { /* * ISO 9660 : 7.5.1 @@ -1686,6 +1687,7 @@ cd9660_level2_convert_filename(iso9660_disk *diskStructure, const char *oldname, int namelen = 0; int extlen = 0; int found_ext = 0; + char *orignewname = newname; while (*oldname != '\0' && namelen + extlen < 30) { /* Handle period first, as it is special */ @@ -1731,7 +1733,7 @@ cd9660_level2_convert_filename(iso9660_disk *diskStructure, const char *oldname, if (!found_ext && !diskStructure->omit_trailing_period) *newname++ = '.'; /* Add version */ - sprintf(newname, ";%i", 1); + snprintf(newname, newnamelen - (newname - orignewname), ";%i", 1); } return namelen + extlen + found_ext; } @@ -1756,7 +1758,7 @@ cd9660_joliet_convert_filename(iso9660_disk *diskStructure, const char *oldname, */ static int cd9660_convert_filename(iso9660_disk *diskStructure, const char *oldname, - char *newname, int is_file) + char *newname, size_t newnamelen, int is_file) { /* NEW */ cd9660_filename_conversion_functor conversion_function = 0; @@ -1764,7 +1766,7 @@ cd9660_convert_filename(iso9660_disk *diskStructure, const char *oldname, conversion_function = &cd9660_level1_convert_filename; else if (diskStructure->isoLevel == 2) conversion_function = &cd9660_level2_convert_filename; - return (*conversion_function)(diskStructure, oldname, newname, is_file); + return (*conversion_function)(diskStructure, oldname, newname, newnamelen, is_file); } int @@ -1975,7 +1977,7 @@ cd9660_create_virtual_entry(iso9660_disk *diskStructure, const char *name, temp->isoDirRecord = emalloc(sizeof(*temp->isoDirRecord)); cd9660_convert_filename(diskStructure, tfsnode->name, - temp->isoDirRecord->name, file); + temp->isoDirRecord->name, sizeof temp->isoDirRecord->name, file); temp->node = tfsnode; temp->parent = parent; diff --git a/usr.sbin/makefs/ffs.c b/usr.sbin/makefs/ffs.c index 0654244001e..2a82549a0d1 100644 --- a/usr.sbin/makefs/ffs.c +++ b/usr.sbin/makefs/ffs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ffs.c,v 1.4 2016/10/16 20:30:40 natano Exp $ */ +/* $OpenBSD: ffs.c,v 1.5 2016/10/16 21:44:43 tedu Exp $ */ /* $NetBSD: ffs.c,v 1.66 2015/12/21 00:58:08 christos Exp $ */ /* @@ -992,7 +992,7 @@ ffs_make_dirbuf(dirbuf_t *dbuf, const char *name, fsnode *node, int needswap) de.d_fileno = ufs_rw32(node->inode->ino, needswap); de.d_type = IFTODT(node->type); de.d_namlen = (uint8_t)strlen(name); - strcpy(de.d_name, name); + strlcpy(de.d_name, name, sizeof de.d_name); reclen = UFS_DIRSIZ(0, &de, needswap); de.d_reclen = ufs_rw16(reclen, needswap); |