summaryrefslogtreecommitdiff
path: root/games/sxsame/files/patch-ag
diff options
context:
space:
mode:
Diffstat (limited to 'games/sxsame/files/patch-ag')
-rw-r--r--games/sxsame/files/patch-ag71
1 files changed, 71 insertions, 0 deletions
diff --git a/games/sxsame/files/patch-ag b/games/sxsame/files/patch-ag
new file mode 100644
index 000000000000..7641c57c7e0f
--- /dev/null
+++ b/games/sxsame/files/patch-ag
@@ -0,0 +1,71 @@
+--- loaddata.c.orig Sun May 5 04:09:25 1996
++++ loaddata.c Tue Jul 11 21:32:34 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 "config.h"
+ #include "sxsame.h"
+
+@@ -25,7 +28,7 @@
+ DataFile ***data;
+ {
+ FILE *fp;
+- char fname[256];
++ char fname[MAXPATHLEN];
+ char buf[256];
+ char str1[256];
+ char str2[256];
+@@ -34,11 +37,18 @@
+ char *p;
+ int i;
+
++ if (MAXPATHLEN <= strlen(entry_name)) {
++ fprintf(stderr,"Error: data file name too long.\n");
++ return 0;
++ }
+ strcpy(fname,entry_name);
+ fp = fopen(fname, "r");
+ if(fp == NULL)
+ {
+- sprintf(fname, "%s/%s", SAME_DIR, entry_name);
++ if (MAXPATHLEN <= snprintf(fname, MAXPATHLEN ,"%s/%s", SAME_DIR, entry_name)) {
++ fprintf(stderr,"Error: data file name too long.\n");
++ return 0;
++ }
+ fp = fopen(fname, "r");
+ if(fp == NULL)
+ return(0);
+@@ -81,7 +91,7 @@
+ char *fname;
+ {
+ FILE *fp;
+- char tmpfname[256];
++ char tmpfname[MAXPATHLEN];
+ char buf[256];
+ char str1[256],str2[256];
+ int val, i, j;
+@@ -94,7 +104,7 @@
+ {
+ for(j=0;j<5;j++)
+ {
+- data->xpm_data[i][j] == 0;
++ data->xpm_data[i][j] = 0;
+ }
+ }
+ data->bg_data = 0;
+@@ -103,7 +113,10 @@
+ fp = fopen(fname,"r");
+ if(fp == NULL)
+ {
+- sprintf(tmpfname, "%s/%s", SAME_DIR, fname);
++ if (MAXPATHLEN <= snprintf(tmpfname, MAXPATHLEN, "%s/%s", SAME_DIR, fname)) {
++ fprintf(stderr,"Error: data file name too long.\n", fname);
++ return -1;
++ }
+ fp = fopen(tmpfname, "r");
+ if(fp == NULL)
+ {