Unverified Commit e0c78f42 authored by 7c6f434c's avatar 7c6f434c Committed by GitHub
Browse files

xpilot-ng, bloodspilot-client, boodspilot-server: fix (#392353)

parents 395137ab 09972fbc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ stdenv.mkDerivation rec {
    sha256 = "1qwl95av5an2zl01m7saj6fyy49xpixga7gbn4lwbpgpqs1rbwxj";
  };

  patches = [ ./bloodspilot-sdl-window-fix.patch ];

  buildInputs = [
    libX11
    SDL
+95 −0
Original line number Diff line number Diff line
--- a/src/client/sdl/scrap.c	2012-09-02 11:25:23.000000000 +0200
+++ b/src/client/sdl/scrap.c	2025-03-23 12:01:51.968751308 +0100
@@ -71,13 +71,13 @@
 #if defined(X11_SCRAP)
 /* * */
 static Display *SDL_Display;
-static Window SDL_Window;
+static Window BloodsPilot_SDL_Window;
 static void (*Lock_Display) (void);
 static void (*Unlock_Display) (void);
 
 #elif defined(WIN_SCRAP)
 /* * */
-static HWND SDL_Window;
+static HWND BloodsPilot_SDL_Window;
 
 #elif defined(QNX_SCRAP)
 /* * */
@@ -274,7 +274,7 @@
 /* * */
 		if (info.subsystem == SDL_SYSWM_X11) {
 			SDL_Display = info.info.x11.display;
-			SDL_Window = info.info.x11.window;
+			BloodsPilot_SDL_Window = info.info.x11.window;
 			Lock_Display = info.info.x11.lock_func;
 			Unlock_Display = info.info.x11.unlock_func;
 
@@ -290,7 +290,7 @@
 
 #elif defined(WIN_SCRAP)
 /* * */
-		SDL_Window = info.window;
+		BloodsPilot_SDL_Window = info.window;
 		retval = 0;
 
 #elif defined(QNX_SCRAP)
@@ -310,12 +310,12 @@
 #if defined(X11_SCRAP)
 /* * */
 	Lock_Display();
-	retval = (XGetSelectionOwner(SDL_Display, XA_PRIMARY) != SDL_Window);
+	retval = (XGetSelectionOwner(SDL_Display, XA_PRIMARY) != BloodsPilot_SDL_Window);
 	Unlock_Display();
 
 #elif defined(WIN_SCRAP)
 /* * */
-	retval = (GetClipboardOwner() != SDL_Window);
+	retval = (GetClipboardOwner() != BloodsPilot_SDL_Window);
 
 #elif defined(QNX_SCRAP)
 /* * */
@@ -346,14 +346,14 @@
 				(unsigned char *) dst, dstlen);
 		free(dst);
 		if (lost_scrap())
-			XSetSelectionOwner(SDL_Display, XA_PRIMARY, SDL_Window,
+			XSetSelectionOwner(SDL_Display, XA_PRIMARY, BloodsPilot_SDL_Window,
 					   CurrentTime);
 		Unlock_Display();
 	}
 
 #elif defined(WIN_SCRAP)
 /* * */
-	if (OpenClipboard(SDL_Window)) {
+	if (OpenClipboard(BloodsPilot_SDL_Window)) {
 		HANDLE hMem;
 
 		hMem = GlobalAlloc((GMEM_MOVEABLE | GMEM_DDESHARE), dstlen);
@@ -441,7 +441,7 @@
 		Lock_Display();
 		owner = XGetSelectionOwner(SDL_Display, XA_PRIMARY);
 		Unlock_Display();
-		if ((owner == None) || (owner == SDL_Window)) {
+		if ((owner == None) || (owner == BloodsPilot_SDL_Window)) {
 			owner = DefaultRootWindow(SDL_Display);
 			selection1 = XA_CUT_BUFFER0;
 		}
@@ -449,7 +449,7 @@
 			int selection_response = 0;
 			SDL_Event event;
 
-			owner = SDL_Window;
+			owner = BloodsPilot_SDL_Window;
 			Lock_Display();
 			selection1 = XInternAtom(SDL_Display, "SDL_SELECTION", False);
 			XConvertSelection(SDL_Display, XA_PRIMARY, format,
@@ -485,7 +485,7 @@
 
 #elif defined(WIN_SCRAP)
 /* * */
-	if (IsClipboardFormatAvailable(format) && OpenClipboard(SDL_Window)) {
+	if (IsClipboardFormatAvailable(format) && OpenClipboard(BloodsPilot_SDL_Window)) {
 		HANDLE hMem;
 		char *src;
 
+40 −0
Original line number Diff line number Diff line
Fortify catches a possible strcpy overcopy, throw more space at it

--- a/src/server/contact.c	2010-05-24 14:51:41.000000000 +0200
+++ b/src/server/contact.c	2025-03-23 12:15:36.426805646 +0100
@@ -58,11 +58,11 @@
 
 struct queued_player {
 	struct queued_player *next;
-	char real_name[MAX_CHARS];
-	char nick_name[MAX_CHARS];
-	char disp_name[MAX_CHARS];
-	char host_name[MAX_CHARS];
-	char host_addr[24];
+	char real_name[MAX_CHARS + 32];
+	char nick_name[MAX_CHARS + 32];
+	char disp_name[MAX_CHARS + 32];
+	char host_name[MAX_CHARS + 32];
+	char host_addr[1056];
 	int32_t port;
 	team_t *team;
 	uint32_t version;
@@ -271,12 +271,12 @@
 	uint32_t my_magic;
 	uint16_t port;
 	char ch;
-	char real_name[MAX_CHARS];
-	char disp_name[MAX_CHARS];
-	char nick_name[MAX_CHARS];
-	char host_name[MAX_CHARS];
-	char host_addr[24];
-	char str[MSG_LEN];
+	char real_name[MAX_CHARS + 32 ];
+	char disp_name[MAX_CHARS + 32 ];
+	char nick_name[MAX_CHARS + 32 ];
+	char host_name[MAX_CHARS + 32 ];
+	char host_addr[1056];
+	char str[MSG_LEN + 32];
 
 	/*
 	 * Someone connected to us, now try and decipher the message :)
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {

  patches = [
    ./server-gcc5.patch
    ./bloodspilot-server-strcpy-fix.patch
  ];

  meta = with lib; {
+6 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
  fetchurl,
  libX11,
  libSM,
  libXext,
  SDL,
  libGLU,
  libGL,
@@ -23,6 +24,7 @@ stdenv.mkDerivation rec {
  buildInputs = [
    libX11
    libSM
    libXext
    SDL
    SDL_ttf
    SDL_image
@@ -33,7 +35,10 @@ stdenv.mkDerivation rec {
    libXxf86misc
  ];

  patches = [ ./xpilot-ng-gcc-14-fix.patch ];
  patches = [
    ./xpilot-ng-gcc-14-fix.patch
    ./xpilot-ng-sdl-window-fix.patch
  ];

  meta = with lib; {
    description = "Multiplayer X11 space combat game";
Loading