patch-gnats_pr_c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. $OpenBSD: patch-gnats_pr_c,v 1.3 2007/12/28 17:11:25 espie Exp $
  2. --- gnats/pr.c.orig Wed Mar 3 01:18:54 1999
  3. +++ gnats/pr.c Fri Dec 28 18:00:24 2007
  4. @@ -205,7 +205,7 @@ read_pr (fp, prune)
  5. u = unformatted + unformatted_len;
  6. }
  7. - strcat (u, pr[UNFORMATTED].value);
  8. + strlcat (u, pr[UNFORMATTED].value, unformatted + unformatted_size - u);
  9. xfree (pr[UNFORMATTED].value);
  10. }
  11. @@ -293,14 +293,14 @@ write_pr (fp, string)
  12. {
  13. if (pr[string].datatype == MultiText)
  14. {
  15. - sprintf (fmt, "%%s%s", ret);
  16. + snprintf (fmt, sizeof(fmt), "%%s%s", ret);
  17. fprintf (fp, fmt, pr[string].name, pr[string].value);
  18. write_multitext (fp, pr[i].value);
  19. MAYBE_NL(pr[string].value);
  20. }
  21. else
  22. {
  23. - sprintf (fmt, "%%-16s %%s%s", ret);
  24. + snprintf (fmt, sizeof(fmt), "%%-16s %%s%s", ret);
  25. fprintf (fp, fmt, pr[string].name, pr[string].value);
  26. }
  27. }
  28. @@ -338,7 +338,7 @@ write_pr_from_index (fp, name, value)
  29. char fmt[10], *t;
  30. time_t time;
  31. - sprintf (fmt, "%%-16s %%s%s", ret);
  32. + snprintf (fmt, sizeof(fmt), "%%-16s %%s%s", ret);
  33. if (pr[name].datatype == Date)
  34. {
  35. @@ -367,9 +367,9 @@ get_pr_enum_field (filename, default_value)
  36. int len = 0, capacity = 80;
  37. int meaningful_line;
  38. FILE *fp;
  39. - char c;
  40. + int c;
  41. - sprintf (path, "%s/gnats-adm/%s", gnats_root, filename);
  42. + snprintf (path, PATH_MAX, "%s/gnats-adm/%s", gnats_root, filename);
  43. fp = fopen (path, "r");
  44. if (fp == NULL)
  45. @@ -531,7 +531,7 @@ get_final_enum_value (list_str, default_value)
  46. char *default_value;
  47. {
  48. char *res = NULL;
  49. - char *tmp, *end;
  50. + char *tmp;
  51. if (list_str == NULL)
  52. return default_value;
  53. @@ -751,9 +751,9 @@ check_enum_types (check)
  54. {
  55. if (check)
  56. {
  57. - char *msg = (char *) xmalloc (100 + strlen (pr[i].value)
  58. - + strlen (pr[i].name)
  59. - + strlen (pr[i].default_value));
  60. + size_t len = 100 + strlen (pr[i].value) + strlen (pr[i].name)
  61. + + strlen (pr[i].default_value);
  62. + char *msg = (char *) xmalloc (len);
  63. if (bad_enums == NULL)
  64. bad_enums = bad_enums_end
  65. = (struct bad_enum *) xmalloc (sizeof (struct bad_enum));
  66. @@ -765,15 +765,15 @@ check_enum_types (check)
  67. }
  68. if (check == 1)
  69. - sprintf (msg,
  70. + snprintf (msg, len,
  71. "\tNote: There was a bad value `%s' for the field `%s'.\n\tIt was set to the default value of `%s'.\n",
  72. pr[i].value, pr[i].name, pr[i].default_value);
  73. else if (check == 2)
  74. {
  75. if (is_daemon)
  76. - sprintf (msg, "%s %s", pr[i].name, pr[i].value);
  77. + snprintf (msg, len, "%s %s", pr[i].name, pr[i].value);
  78. else
  79. - sprintf (msg, "%s %s\n", pr[i].name, pr[i].value);
  80. + snprintf (msg, len, "%s %s\n", pr[i].name, pr[i].value);
  81. }
  82. bad_enums_end->msg = msg;