openbsd-ports/devel/gputils/patches/patch-gpasm_macro_c

47 lines
1.6 KiB
Plaintext

$OpenBSD: patch-gpasm_macro_c,v 1.2 2004/01/30 01:01:11 naddy Exp $
--- gpasm/macro.c.orig 2004-01-21 17:17:52.000000000 +1100
+++ gpasm/macro.c 2004-01-25 20:43:22.000000000 +1100
@@ -150,9 +150,9 @@ node_to_string(struct pnode *p)
switch(p->tag) {
case constant:
if (p->value.constant < 0) {
- sprintf(constant_buffer, "-%#x", -p->value.constant);
+ snprintf(constant_buffer, sizeof(constant_buffer), "-%#x", -p->value.constant);
} else {
- sprintf(constant_buffer, "%#x", p->value.constant);
+ snprintf(constant_buffer, sizeof(constant_buffer), "%#x", p->value.constant);
}
cat_string(constant_buffer);
break;
@@ -230,12 +230,12 @@ void setup_macro(struct macro_head *h, i
/* Copy the macro body to a buffer. */
-void copy_macro_body(struct macro_body *b, char *buffer)
+void copy_macro_body(struct macro_body *b, char *buffer, size_t sizeof_buffer)
{
while (b) {
if (b->src_line != NULL) {
- strcat(buffer, b->src_line);
- strcat(buffer, "\n");
+ strlcat(buffer, b->src_line, sizeof_buffer);
+ strlcat(buffer, "\n", sizeof_buffer);
}
b = b->next;
}
@@ -265,10 +265,10 @@ make_macro_buffer(struct macro_head *h)
/* Allocate memory for the new buffer. yy_delete_buffer frees it */
macro_src = (char *)calloc(sizeof(char), macro_src_size);
- macro_src[0] = '\0';
-
- /* build the string to be scanned */
- copy_macro_body(h->body, macro_src);
+ if (macro_src) {
+ /* build the string to be scanned */
+ copy_macro_body(h->body, macro_src, macro_src_size);
+ }
return macro_src;
}