summaryrefslogtreecommitdiffstats
path: root/games/sxsame/files/patch-loadbmp.c
blob: 9d193e2ac01aa33e13f2c0d6458e4805afad47cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--- loadbmp.c.orig	Sun May  5 04:09:25 1996
+++ loadbmp.c	Tue Jul 11 21:30:24 2000
@@ -5,6 +5,9 @@
  * Copyleft  (c) 1994-1996  Software Research Academy                   *
  ************************************************************************/
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
 #include <X11/Xlib.h>
 #include "sxsame.h"
 
@@ -37,17 +40,24 @@
 	int c, c1,c2;
 	int width, height, planes, ncol;
 	int *col;
-	char fname[256];
+	char fname[MAXPATHLEN];
 
 	Pixmap w;
 	GC gc;
 	int i, j, k;
 
+	if (MAXPATHLEN <= strlen(bmpname) ) {
+		fprintf(stderr,"Error: BMP file name too long.\n");
+		return -1;
+	}
 	strcpy(fname,bmpname);
 	fp = fopen(fname,"rb");
 	if(fp == NULL)
 	{
-		sprintf(fname, "%s/%s", SAME_DIR, bmpname);
+		if (MAXPATHLEN <= snprintf(fname, MAXPATHLEN, "%s/%s", SAME_DIR, bmpname)) {
+			fprintf(stderr,"Error: BMP file name too long.\n");
+			return -1;
+		}
 		fp = fopen(fname, "r");
 		if(fp == NULL)
 		{
OpenPOWER on IntegriCloud