freebsd-ports/games/nethack34/files/patch-ah
Peter Pentchev cb0cbed40a Add a patch that fixes this particular misuse of strcat().
Remove the FORBIDDEN keyword with some apprehension: there might well
be other holes left :(
Bump PORTREVISION for the applied bug (and security-) fix.
2003-02-11 13:55:38 +00:00

20 lines
733 B
Text

--- src/topten.c Thu Mar 21 01:43:19 2002
+++ src/topten.c Tue Feb 11 15:36:23 2003
@@ -855,8 +855,15 @@
if (playerct < 1) Strcat(pbuf, "you.");
else {
if (playerct > 1) Strcat(pbuf, "any of ");
- for (i = 0; i < playerct; i++) {
- Strcat(pbuf, players[i]);
+ for (i = 0; i < playerct && strlen(pbuf) < sizeof(pbuf) - 2;
+ i++) {
+ size_t len = strlen(pbuf), rest;
+ if (strlen(players[i]) > sizeof(pbuf) - len - 2) {
+ rest = sizeof(pbuf) - strlen(pbuf) - 2;
+ memcpy(pbuf + len, players[i], rest);
+ pbuf[len + rest] = '\0';
+ } else
+ Strcat(pbuf, players[i]);
if (i < playerct-1) {
if (players[i][0] == '-' &&
index("pr", players[i][1]) && players[i][2] == 0)