diff options
author | ale <ale@FreeBSD.org> | 2005-09-17 19:28:01 +0800 |
---|---|---|
committer | ale <ale@FreeBSD.org> | 2005-09-17 19:28:01 +0800 |
commit | d5fc61bcbff8fc2b97df4e5873a30caa6fca636d (patch) | |
tree | 7911be40bb660c81284c98367b993033229e293f | |
parent | 2206b7a0326f2c9a440f208baf42342c36e05247 (diff) | |
download | freebsd-ports-gnome-d5fc61bcbff8fc2b97df4e5873a30caa6fca636d.tar.gz freebsd-ports-gnome-d5fc61bcbff8fc2b97df4e5873a30caa6fca636d.tar.zst freebsd-ports-gnome-d5fc61bcbff8fc2b97df4e5873a30caa6fca636d.zip |
Fix possible buffer overflows and fix core dump on 5.X.
Approved by: maintainer
-rw-r--r-- | games/tetrinet-x/Makefile | 1 | ||||
-rw-r--r-- | games/tetrinet-x/files/patch-src::main.c | 43 |
2 files changed, 31 insertions, 13 deletions
diff --git a/games/tetrinet-x/Makefile b/games/tetrinet-x/Makefile index 36c1f9b33bc4..3de7eab9d8dd 100644 --- a/games/tetrinet-x/Makefile +++ b/games/tetrinet-x/Makefile @@ -7,6 +7,7 @@ PORTNAME= tetrinet-x PORTVERSION= 1.13.16 +PORTREVISION= 1 CATEGORIES= games MASTER_SITES= http://www.giovannelli.it/~gmarco/files/ \ ftp://ftp.dementia.nu/tetrinet/servers/tetrix/ diff --git a/games/tetrinet-x/files/patch-src::main.c b/games/tetrinet-x/files/patch-src::main.c index a9939a7d746d..8f453d3fe036 100644 --- a/games/tetrinet-x/files/patch-src::main.c +++ b/games/tetrinet-x/files/patch-src::main.c @@ -1,6 +1,6 @@ --- src/main.c.orig Thu Dec 24 06:24:50 1998 -+++ src/main.c Thu Jun 17 10:06:39 2004 -@@ -319,12 +319,10 @@ ++++ src/main.c Sat Sep 17 13:24:27 2005 +@@ -319,40 +319,27 @@ /* lvprintf( priority, same as printf ) - Logs to the log IF priority is smaller */ /* or equal to game.verbose */ @@ -11,12 +11,22 @@ - char *format; va_list va; static char SBUF2[768];int priority; - va_start(va); - priority=va_arg(va,int);format=va_arg(va,char *); -+ va_list va; static char SBUF2[768]; -+ va_start(va, format); - vsprintf(SBUF2,format,va); - if (strlen(SBUF2)>512) - { -@@ -338,15 +336,14 @@ +- vsprintf(SBUF2,format,va); +- if (strlen(SBUF2)>512) +- { +- SBUF2[512]=0; /* truncate string. Of course, by now we have buffer overrun ;) */ +- } +- +- if (priority <= game.verbose) ++ if (priority <= game.verbose) { ++ va_list va; static char SBUF2[768]; ++ va_start(va, format); ++ vsnprintf(SBUF2, sizeof(SBUF2),format,va); + lprintf(SBUF2); +- +- va_end(va); ++ va_end(va); ++ } } /* lprintf( same as printf ) - Logs to the log. */ @@ -31,11 +41,18 @@ char *P; time_t cur_time; - va_start(va); +- format=va_arg(va,char *); +- vsprintf(SBUF2,format,va); +- if (strlen(SBUF2)>512) +- { +- SBUF2[512]=0; /* truncate string. Of course, by now we have buffer overrun ;) */ +- } + va_start(va, format); - format=va_arg(va,char *); - vsprintf(SBUF2,format,va); - if (strlen(SBUF2)>512) -@@ -2462,7 +2459,7 @@ ++ vsnprintf(SBUF2, sizeof(SBUF2),format,va); + + file_out = fopen(FILE_LOG,"a"); + if (file_out != NULL) +@@ -2462,7 +2449,7 @@ /* Winlist - Returns Winlist */ if (!strcasecmp(buf,"getwinlist")) { @@ -44,7 +61,7 @@ for(i=0;i<MAXWINLIST;i++) { if(winlist[i].inuse) -@@ -3071,4 +3068,4 @@ +@@ -3071,4 +3058,4 @@ } |