patch-gnats_gen-closed-date_c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. $OpenBSD: patch-gnats_gen-closed-date_c,v 1.1 2003/08/25 23:35:06 brad Exp $
  2. --- gnats/gen-closed-date.c.orig Tue Oct 26 23:22:29 1999
  3. +++ gnats/gen-closed-date.c Wed Jul 2 13:23:13 2003
  4. @@ -70,9 +70,10 @@ void usage (), version ();
  5. static int
  6. get_closed ()
  7. {
  8. - char *final1, *final2, str[133], *from_start, *to_start, from[32], to[32];
  9. + char *final1, *final2, *from_start, *to_start, from[32], to[32];
  10. char *p, *c, *when_start, when[133], *new_audit, *copy_ptr;
  11. int len, from_len, to_len, closed_date_set = 0, changed_separator;
  12. + size_t audit_len;
  13. p = pr[AUDIT_TRAIL].value;
  14. @@ -83,7 +84,8 @@ get_closed ()
  15. return (1);
  16. }
  17. - new_audit = xmalloc (strlen (p) * 2);
  18. + audit_len = strlen (p) * 2;
  19. + new_audit = xmalloc (len);
  20. new_audit[0] = '\0';
  21. copy_ptr = p;
  22. @@ -105,8 +107,8 @@ get_closed ()
  23. } else {
  24. /* Change - to -> here */
  25. final1++;
  26. - strncat (new_audit, copy_ptr, final1 - copy_ptr);
  27. - strcat (new_audit, ">");
  28. + strncat (new_audit, copy_ptr, final1 - copy_ptr); /* XXX */
  29. + strlcat (new_audit, ">", audit_len);
  30. copy_ptr = final1;
  31. changed_separator = 1;
  32. }
  33. @@ -162,7 +164,7 @@ get_closed ()
  34. }
  35. } while (final1);
  36. - strcat (new_audit, copy_ptr);
  37. + strlcat (new_audit, copy_ptr, audit_len);
  38. xfree (pr[AUDIT_TRAIL].value);
  39. pr[AUDIT_TRAIL].value = new_audit;
  40. @@ -245,7 +247,7 @@ do_category (c)
  41. return;
  42. }
  43. - sprintf (path, "%s/%s/", gnats_root, c);
  44. + snprintf (path, len + 9, "%s/%s/", gnats_root, c);
  45. /* Process each file in the directory; ignore files that have periods
  46. in their names; either they're the . and .. dirs, or they're a
  47. @@ -254,7 +256,7 @@ do_category (c)
  48. if (strchr (next->d_name, '.') == NULL)
  49. {
  50. p = path + len - 1;
  51. - strcat (p, next->d_name);
  52. + strlcat (p, next->d_name, path + len + 9 - p);
  53. fp = fopen (path, "r");
  54. if (fp == (FILE *) NULL)
  55. @@ -378,7 +380,7 @@ get_categories ()
  56. Categories *c;
  57. if (! catfile)
  58. - sprintf (path, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
  59. + snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
  60. else
  61. path = catfile;
  62. @@ -415,7 +417,7 @@ main (argc, argv)
  63. int argc;
  64. char **argv;
  65. {
  66. - int optc, i;
  67. + int optc;
  68. Categories *clist, *c;
  69. program_name = (char *) basename (argv[0]);