From mint-bounce@lists.fishpool.fi  Wed Jan 13 17:04:01 2010
X-Authenticated: #48718759
X-Provags-ID: V01U2FsdGVkX1/W7bpM8uvWabIEe4C86SPNYMXdKKWc/KSQdVfY8u
	90SgLW4GTOma/z
Message-ID: <827270.428042056-sendEmail@descaro>
From: "Helmut Karlowski" <hk10@gmx.de>
To: "alanh@fairlite.co.uk" <alanh@fairlite.co.uk>,
        "mint@lists.fishpool.fi" <mint@lists.fishpool.fi>
Cc: "hk10@gmx.de" <hk10@gmx.de>
Subject: [MiNT] patch:XaAES:xa_rsrc
Date: Wed, 13 Jan 2010 22:01:18 +0000
X-Mailer: sendEmail-1.55
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----MIME delimiter for sendEmail-495477.774254145"
X-Antivirus: avast! (VPS 100113-0, 13.01.2010), Outbound message
X-Antivirus-Status: Clean
X-Y-GMX-Trusted: 0
X-FuHaFi: 0.42
X-ecartis-version: Ecartis v1.0.0
Sender: mint-bounce@lists.fishpool.fi
Errors-to: mint-bounce@lists.fishpool.fi
X-original-sender: hk10@gmx.de
Precedence: bulk
List-help: <mailto:ecartis@lists.fishpool.fi?Subject=help>
List-unsubscribe: <mailto:mint-request@lists.fishpool.fi?Subject=unsubscribe>
List-Id: <mint.lists.fishpool.fi>
X-List-ID: <mint.lists.fishpool.fi>
List-subscribe: <mailto:mint-request@lists.fishpool.fi?Subject=subscribe>
List-owner: <mailto:tjhukkan@fishpool.fi>
List-post: <mailto:mint@lists.fishpool.fi>

This is a multi-part message in MIME format. To properly display this message you need a MIME-Version 1.0 compliant Email program.

------MIME delimiter for sendEmail-495477.774254145
Content-Type: text/plain;
  charset="iso-8859-1"
  Content-Transfer-Encoding: quoted-printable

----------------------------------------------------------------------------------
added another sanity-check while loading a resource-file
----------------------------------------------------------------------------------



------MIME delimiter for sendEmail-495477.774254145
Content-Type: text/plain;
 name="xa_rsrc.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="xa_rsrc.patch"

diff -u -B -I '$Id' src.cvs/xa_rsrc.c src.km/xa_rsrc.c
--- src.cvs/xa_rsrc.c	2010-01-04 23:31:12.000000000 +0100
+++ src.km/xa_rsrc.c	2010-01-13 22:28:28.375000000 +0100
@@ -751,6 +751,7 @@
 	RSHDR *hdr = NULL;
 	CICONBLK **cibh = NULL;
 	unsigned long osize = 0, size = 0, extra = 0;
+	unsigned long sz;
 	char *base = NULL, *end = NULL;
 	char *extra_ptr = NULL;
 	struct xa_rscs *rscs = NULL; 
@@ -813,7 +814,7 @@
 			extra_ptr = base + fsize + sizeof(RSXHDR);
 		}
 
-		size = kernel_read(f, base, fsize);
+		sz = size = kernel_read(f, base, fsize);
 		kernel_close(f);
 		if (size != fsize)
 		{
@@ -833,6 +834,17 @@
 		{
 			size = *(unsigned long *)(base + osize);
 		}
+		BLOG((0,"LoadResources:%s: size: (%ld,%ld)", fname, sz, size ));
+		if( size != sz )
+		{
+			DIAG((D_rsrc, client, "LoadResource(): Error loading file (size mismatch)"));
+			BLOG((1,"LoadResources:%s: wrong size (%ld,%ld)!", fname, sz, size ));
+			if (client == C.Aes || client == C.Hlp)
+				kfree(base);
+			else
+				ufree(base);
+			return NULL;
+		}
 		end = base + size;
 		/*
 		 * Ozk: Added 'flags' to xa_rscs structure, so we know
@@ -863,6 +875,15 @@
 			osize = (size + 1UL) & 0xfffffffeUL;
 			if (hdr->rsh_vrsn & 4)
 				size = *(unsigned long *)(base + osize);
+
+			/*	no chance to check for correct rsc-size if loaded from memory!
+			BLOG((0,"LoadResources:%s: size (%ld,%ld)!", fname, sz, size ));
+			if( size > sz )
+			{
+				BLOG((1,"LoadResources:%s: wrong size (%ld,%ld)!", fname, sz, size ));
+				return NULL;
+			}
+			*/
 			client->rsct++;
 			rscs = list_resource(client, base, 0);
 			end = base + size;
@@ -979,7 +1000,7 @@
 	fix_objects(client, rscs, cibh, vdih, base, (OBJECT *)(base + hdr->rsh_object), hdr->rsh_nobs);
 
 	fix_trees(client, base, (OBJECT **)(base + hdr->rsh_trindex), hdr->rsh_ntree, designWidth, designHeight);
-	
+
 	return (RSHDR *)base;
 }
 


------MIME delimiter for sendEmail-495477.774254145--


