summaryrefslogtreecommitdiffstats
path: root/usr.sbin/makefs
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2016-10-16 21:44:43 +0000
committertedu <tedu@openbsd.org>2016-10-16 21:44:43 +0000
commitd95291fdb2dc9cc978800e30892fec18a8836db9 (patch)
tree11c724442e8c9b56ace39bbf4ef6d4b16621fe43 /usr.sbin/makefs
parentremove GEMDOS code (diff)
downloadwireguard-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.c32
-rw-r--r--usr.sbin/makefs/ffs.c4
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);