openbsd-ports/databases/gnats/patches/patch-gnats_files_c
2022-03-11 18:31:17 +00:00

127 lines
4.1 KiB
Plaintext

--- gnats/files.c.orig Sun Feb 11 22:36:25 2001
+++ gnats/files.c Fri Dec 28 18:00:24 2007
@@ -41,7 +41,7 @@ find_submitter (cptr, site)
if (site == NULL)
return -1;
- sprintf (path, "%s/gnats-adm/%s", gnats_root, SUBMITTERS);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, SUBMITTERS);
err = get_adm_record (path, array, site);
if (err == -1)
@@ -87,7 +87,7 @@ find_category (cptr, category)
char **array = (char **) alloca (NUM_CATEGORY_FIELDS * sizeof (char *));
int err;
- sprintf (path, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
err = get_adm_record (path, array, category);
if (err == -1)
@@ -143,7 +143,7 @@ find_responsible (responsible, person)
we don't end up with garbage. */
memset (array, 0, NUM_RESPONSIBLE_FIELDS * sizeof (char *));
- sprintf (path, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
err = get_adm_record (path, array, person);
xfree (path);
if (err == -1)
@@ -177,13 +177,15 @@ get_adm_record (fname, ptr, key)
char line[STR_MAX], temp[STR_MAX];
char *l, *l2;
char *keyed;
+ size_t keyedsize;
int err = -1, keyedlen;
/* append a delimiting ':' to the end of sting to make sure the match
is fully correct. */
- keyed = (char *) alloca (strlen(key) + 2);
- /* which is slower - strcpy/strcat or sprintf? */
- sprintf (keyed, "%s:", key);
+ keyedsize = strlen(key) + 2;
+ keyed = (char *) alloca (keyedsize);
+ /* which is slower - strlcpy/strlcat or snprintf? */
+ snprintf (keyed, keyedsize, "%s:", key);
keyedlen = strlen(keyed);
fp = fopen (fname,"r");
@@ -271,7 +273,7 @@ init_responsibles ()
char *path = (char *) alloca (PATH_MAX);
memset (array, 0, NUM_RESPONSIBLE_FIELDS * sizeof (char *));
- sprintf (path, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
fp = fopen (path, "r");
if (fp == NULL)
return 0;
@@ -358,7 +360,7 @@ init_classes ()
int i, nerrs = 0;
memset (array, 0, NUM_CLASS_FIELDS * sizeof (char *));
- sprintf (path, "%s/gnats-adm/%s", gnats_root, CLASSES);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, CLASSES);
fp = fopen (path, "r");
if (fp == NULL)
@@ -549,11 +551,11 @@ get_class_enum_field ()
line = xmalloc (totlen * sizeof(char));
line[0] = '\0';
c = class_chain;
- strcat (line, c->key);
+ strlcat (line, c->key, totlen);
for (c = c->next; c; c = c->next)
{
- strcat (line, " | ");
- strcat (line, c->key);
+ strlcat (line, " | ", totlen);
+ strlcat (line, c->key, totlen);
}
return line;
}
@@ -593,7 +595,7 @@ init_states ()
int i, nerrs = 0;
memset (array, 0, NUM_STATE_FIELDS * sizeof (char *));
- sprintf (path, "%s/gnats-adm/%s", gnats_root, STATES);
+ snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, STATES);
fp = fopen (path, "r");
if (fp == NULL)
@@ -779,11 +781,11 @@ get_state_enum_field ()
char line[STR_MAX];
line[0] = '\0';
s = state_chain;
- strcat (line, s->key);
+ strlcat (line, s->key, sizeof(line));
for (s = s->next; s; s = s->next)
{
- strcat (line, " | ");
- strcat (line, s->key);
+ strlcat (line, " | ", sizeof(line));
+ strlcat (line, s->key, sizeof(line));
}
return (strdup (line));
}
@@ -901,7 +903,7 @@ get_responsible_addr (full, strict, name)
{
address = (char *) xmalloc (STR_MAX);
if (full)
- sprintf (address, "%s:%s:%s", r->key, r->fullname, r->alias);
+ snprintf (address, STR_MAX, "%s:%s:%s", r->key, r->fullname, r->alias);
else
{
if (r->alias[0]
@@ -909,9 +911,9 @@ get_responsible_addr (full, strict, name)
added a space after the colon, we don't accept that as
an address. */
&& isalpha (r->alias[0]))
- sprintf (address, "%s", r->alias);
+ snprintf (address, STR_MAX, "%s", r->alias);
else
- sprintf (address, "%s", r->key);
+ snprintf (address, STR_MAX, "%s", r->key);
}
}