$OpenBSD$
--- load.c.orig	Mon Feb 14 19:52:23 2011
+++ load.c	Mon Feb 14 19:55:11 2011
@@ -772,6 +772,8 @@ static int yyinput YY_PROTO(( void ));
 static int input YY_PROTO(( void ));
 #endif
 
+#define LINESIZ 512
+
 YY_DECL
     {
     register yy_state_type yy_current_state;
@@ -1242,11 +1244,11 @@ case 24:
 			have_tournament = 1;
 
 			if (strncmp (yytext, "money-game", 10) == 0) {
-				sprintf (add_text, "%s and %s play a money-game match", Player[0].name, Player[1].name);
+				snprintf (add_text, LINESIZ, "%s and %s play a money-game match", Player[0].name, Player[1].name);
 				tournament.winning_point = 0; 
 				gammon_resource.moneygame = 1;
 			} else {
-				sprintf (add_text, "%s and %s play a %d points match", Player[0].name, Player[1].name, tournament.winning_point);
+				snprintf (add_text, LINESIZ, "%s and %s play a %d points match", Player[0].name, Player[1].name, tournament.winning_point);
 				gammon_resource.moneygame = 0;
 				gammon_resource.winat = tournament.winning_point = atoi(yytext); 
 			}
@@ -1272,7 +1274,7 @@ case 25:
 			p = strstr(r, "has") + 4;
 			Player[1].points = atoi(p);
 		}
-		sprintf (add_text, "%s points: %d, %s points: %d", Player[1].name, Player[1].points, Player[0].name, Player[0].points);
+		snprintf (add_text, LINESIZ, "%s points: %d, %s points: %d", Player[1].name, Player[1].points, Player[0].name, Player[0].points);
 		AppendDialogText (UPPER, add_text);
 	}
 	YY_BREAK
@@ -1926,7 +1928,7 @@ void load (Widget w, XEvent *e, String *vector, Cardin
 		DrawDice        (turn);
 		DrawDoubler     (doubler.value, doubler.owner);
 
-		sprintf (add_text, "%s rolls %d and %d.\n", Player[turn-1].name, roll[0], roll[1]);
+		snprintf (add_text, LINESIZ, "%s rolls %d and %d.\n", Player[turn-1].name, roll[0], roll[1]);
 
 		AppendDialogText (LOWER, add_text);
 
