cfb6182a3f
Submitted by Andrew Dalgleish <openbsd@ajd.net.au>. GPUTILS is a collection of tools for the Microchip (TM) PIC microcontrollers. It includes gpasm, gplink, and gplib.
62 lines
1.9 KiB
Plaintext
62 lines
1.9 KiB
Plaintext
$OpenBSD: patch-libgputils_gpwriteobj_c,v 1.1.1.1 2003/11/03 01:02:36 naddy Exp $
|
|
--- libgputils/gpwriteobj.c.orig 2003-10-14 23:02:28.000000000 +1000
|
|
+++ libgputils/gpwriteobj.c 2003-10-14 23:26:36.000000000 +1000
|
|
@@ -33,6 +33,7 @@ _gp_coffgen_addstring(char *name, char *
|
|
{
|
|
int nbytes;
|
|
int offset;
|
|
+ size_t sizeof_name = strlen(name) + 1;
|
|
|
|
assert(name != NULL);
|
|
|
|
@@ -40,11 +41,11 @@ _gp_coffgen_addstring(char *name, char *
|
|
offset = nbytes = gp_getl32(&table[0]);
|
|
|
|
/* check the length against the max string table size */
|
|
- nbytes += strlen(name) + 1;
|
|
+ nbytes += sizeof_name;
|
|
assert(!(nbytes > MAX_STRING_TABLE));
|
|
|
|
/* copy the string to the table */
|
|
- strcpy(&table[offset], name);
|
|
+ memmove(&table[offset], name, sizeof_name);
|
|
|
|
/* write the new byte count */
|
|
gp_putl32(&table[0], nbytes);
|
|
@@ -53,7 +54,7 @@ _gp_coffgen_addstring(char *name, char *
|
|
}
|
|
|
|
static void
|
|
-_gp_coffgen_addname(char *name, char *ptr, char *table)
|
|
+_gp_coffgen_addname(char *name, char *ptr, size_t sizeof_ptr, char *table)
|
|
{
|
|
int length;
|
|
int offset;
|
|
@@ -65,7 +66,7 @@ _gp_coffgen_addname(char *name, char *pt
|
|
|
|
if (length < 9) {
|
|
/* The string will fit in the structure. */
|
|
- strncpy(ptr, name, 8);
|
|
+ strlcpy(ptr, name, sizeof_ptr);
|
|
} else {
|
|
offset = _gp_coffgen_addstring(name, table);
|
|
|
|
@@ -118,7 +119,7 @@ _gp_coffgen_write_scnhdr(gp_section_type
|
|
{
|
|
char name[8];
|
|
|
|
- _gp_coffgen_addname(section->name, &name[0], table);
|
|
+ _gp_coffgen_addname(section->name, name, sizeof(name), table);
|
|
gp_fputvar(&name[0], 8, fp);
|
|
gp_fputl32(section->address, fp);
|
|
gp_fputl32(section->address, fp);
|
|
@@ -266,7 +267,7 @@ _gp_coffgen_write_symbols(gp_object_type
|
|
|
|
while(current != NULL) {
|
|
|
|
- _gp_coffgen_addname(current->name, &name[0], table);
|
|
+ _gp_coffgen_addname(current->name, name, sizeof(name), table);
|
|
|
|
gp_fputvar(&name[0], 8, fp);
|
|
gp_fputl32(current->value, fp);
|