openbsd-ports/devel/gputils/patches/patch-libgputils_gpwriteobj_c
naddy cfb6182a3f Import gputils 0.11.7.
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.
2003-11-03 01:02:34 +00:00

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);