$OpenBSD$
--- popup.c.orig	Mon Feb 14 19:49:38 2011
+++ popup.c	Mon Feb 14 19:52:06 2011
@@ -56,6 +56,8 @@ void ShowComputerAnswerToDoubling ();
 int  DoublePopup		  ();
 void Info			  ();
 
+#define LINESIZ 512
+
 void CreateXGammonPopup (X11SET *X11Set)
 {
 	Arg from[1];
@@ -166,7 +168,7 @@ void ShowComputerAnswerToDoubling (int accept)
 		toplevel = Player[0].X11Set.toplevel;
 
 	/* first here this message */
-	sprintf (add_text, "%s doubles.\n", Player[turn-1].name);
+	snprintf (add_text, LINESIZ, "%s doubles.\n", Player[turn-1].name);
 	AppendDialogText (LOWER, add_text);
 
 	XtSetArg (arg[0], XtNx, &x);
@@ -196,9 +198,9 @@ void ShowComputerAnswerToDoubling (int accept)
 	if (accept) {
 		doubler.value *= 2;
 		DrawDoubler (doubler.value, doubler.owner);
-		sprintf (add_text, "%s accepts the double.\n\n", Player[other-1].name);
+		snprintf (add_text, LINESIZ, "%s accepts the double.\n\n", Player[other-1].name);
 	} else {
-		sprintf (add_text, "%s gives up.\n\n", Player[other-1].name);
+		snprintf (add_text, LINESIZ, "%s gives up.\n\n", Player[other-1].name);
 	}
 	AppendDialogText (LOWER, add_text);
 	XtPopdown (popup_shell);
@@ -226,7 +228,7 @@ int DoublePopup (void)
 
 
 	/* first from here this message */
-	sprintf (add_text,"%s doubles.\n", Player[turn-1].name);
+	snprintf (add_text, LINESIZ, "%s doubles.\n", Player[turn-1].name);
 	AppendDialogText (LOWER, add_text);
 
 	XtSetArg(arg[0], XtNx, &x);
@@ -242,10 +244,10 @@ int DoublePopup (void)
 	form = XtCreateManagedWidget ("form", formWidgetClass, popup_shell, NULL, 0);
 
 	if (Player[0].type == HUMAN && Player[1].type == HUMAN) {
-		if (turn == BLACK) strcpy (label_string, "  white player:  \n  do you accept doubling?  ");
-		else		   strcpy (label_string, "  black player:  \n  do you accept doubling?  ");
+		if (turn == BLACK) strlcpy (label_string, "  white player:  \n  do you accept doubling?  ", 128);
+		else		   strlcpy (label_string, "  black player:  \n  do you accept doubling?  ", 128);
 	} else {
-		strcpy (label_string, "  I'd like to double  \n  do you accept?  ");
+		strlcpy (label_string, "  I'd like to double  \n  do you accept?  ", 128);
 	}
 
 	XtSetArg (arg[0], XtNlabel, label_string);
@@ -271,7 +273,7 @@ int DoublePopup (void)
 	        XtAppNextEvent (app_con, &event);
 	        if (event.type == ButtonRelease) {
 		   if (event.xbutton.window == XtWindow (resign)) {
-			sprintf (add_text, "%s gives up. %s wins %d point\n\n", Player[other-1].name, Player[turn-1].name, doubler.value);
+			snprintf (add_text, LINESIZ, "%s gives up. %s wins %d point\n\n", Player[other-1].name, Player[turn-1].name, doubler.value);
 			AppendDialogText (LOWER, add_text);
 	        	XtDispatchEvent (&event);
 			ret = RESIGN;
@@ -280,7 +282,7 @@ int DoublePopup (void)
 		   else if (event.xbutton.window == XtWindow (accept)) {
 			doubler.value *= 2;
 			DrawDoubler (doubler.value, doubler.owner);
-			sprintf (add_text,"%s accepts the double.\n\n", Player[other-1].name);
+			snprintf (add_text, LINESIZ, "%s accepts the double.\n\n", Player[other-1].name);
 			AppendDialogText (LOWER, add_text);
 	        	XtDispatchEvent (&event);
 			ret = ACCEPT;
