[prev in list] [next in list] [prev in thread] [next in thread] 

List:       trousers-tech
Subject:    Re: [TrouSerS-tech] [PATCH] tcs_evlog_imaem.c fix
From:       Rajiv Andrade <srajiv () linux ! vnet ! ibm ! com>
Date:       2010-02-24 13:20:17
Message-ID: F7DAE6D8-DA8C-4978-A758-41682D59F4C1 () linux ! vnet ! ibm ! com
[Download RAW message or body]

Hi Seiji,

I see your point, but when I introduced this fread() return code checks =
I intended to make sure fread() had read the amount of data I said it =
to, so the fix would be exchange the nmemb and size fields. Let me know =
what you think.

Thanks,
Rajiv Andrade
IBM LTC Security Development

["0001-Fixed-fread-return-value-check.patch" (0001-Fixed-fread-return-value-check.patch)]

From a4d6983e2eb4f1419f58599fa9bc0a8b37d8e6c3 Mon Sep 17 00:00:00 2001
From: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
Date: Thu, 11 Feb 2010 13:07:10 -0200
Subject: [PATCH] Fixed fread() return value check.

Signed-off-by: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
---
 src/tcs/tcs_evlog_imaem.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/tcs/tcs_evlog_imaem.c b/src/tcs/tcs_evlog_imaem.c
index d0f5702..fbdd29a 100644
--- a/src/tcs/tcs_evlog_imaem.c
+++ b/src/tcs/tcs_evlog_imaem.c
@@ -127,26 +127,26 @@ ima_get_entries_by_pcr(FILE *handle, UINT32 pcr_index, UINT32 first,
 {
 		char digest[20];
 
-		if (fread(&len, sizeof(len), 1, fp) != (sizeof(len))) {
+		if (fread(&len, 1, sizeof(len), fp) != (sizeof(len))) {
 			LogError("Failed to read event log file");
 			result = TCSERR(TSS_E_INTERNAL_ERROR);
 			goto free_list;
 		}
 		
 		memset(name, 0, sizeof name);
-		if (fread(name, len, 1, fp) != len) {
+		if (fread(name, 1, len, fp) != len) {
 			LogError("Failed to read event log file");
 			result = TCSERR(TSS_E_INTERNAL_ERROR);
 			goto free_list;
 		}
-		if (fread(digest, sizeof digest, 1, fp) != (sizeof(digest))) {
+		if (fread(digest, 1, sizeof digest, fp) != (sizeof(digest))) {
 			LogError("Failed to read event log file");
 			result = TCSERR(TSS_E_INTERNAL_ERROR);
 			goto free_list;
 		}
 }
 		/* Get the template data namelen and data */
-		if (fread(&cur->event.ulEventLength, sizeof(int), 1, fp) != sizeof(int)) {
+		if (fread(&cur->event.ulEventLength, 1, sizeof(int), fp) != sizeof(int)) {
 			LogError("Failed to read event log file");
 			result = TCSERR(TSS_E_INTERNAL_ERROR);
 			goto free_list;
@@ -160,7 +160,7 @@ ima_get_entries_by_pcr(FILE *handle, UINT32 pcr_index, UINT32 first,
 			goto free_list;
 		}
 		memset(cur->event.rgbEvent, 0, cur->event.ulEventLength);
-		if (fread(cur->event.rgbEvent, cur->event.ulEventLength, 1, fp) != cur->event.ulEventLength) {
+		if (fread(cur->event.rgbEvent, 1, cur->event.ulEventLength, fp) != cur->event.ulEventLength) {
 			free(cur->event.rgbPcrValue);
 			LogError("Failed to read event log file");
 			result = TCSERR(TSS_E_INTERNAL_ERROR);
@@ -266,20 +266,20 @@ ima_get_entry(FILE *handle, UINT32 pcr_index, UINT32 *num, TSS_PCR_EVENT **ppEve
 				{
 					char digest[20];
 
-					if (fread(&len, sizeof(len), 1, fp) != sizeof(len)) {
+					if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) {
 						free(event);
 						LogError("Failed to read event log file");
 						result = TCSERR(TSS_E_INTERNAL_ERROR);
 						goto done;
 					}
 					memset(name, 0, sizeof name);
-					if (fread(name, len, 1, fp) != len) {
+					if (fread(name, 1, len, fp) != len) {
 						free(event);
 						LogError("Failed to read event log file");
 						result = TCSERR(TSS_E_INTERNAL_ERROR);
 						goto done;
 					}
-					if (fread(digest, sizeof(digest), 1, fp) != sizeof(digest)) {
+					if (fread(digest, 1, sizeof(digest), fp) != sizeof(digest)) {
 						free(event);
 						LogError("Failed to read event log file");
 						result = TCSERR(TSS_E_INTERNAL_ERROR);
@@ -287,7 +287,7 @@ ima_get_entry(FILE *handle, UINT32 pcr_index, UINT32 *num, TSS_PCR_EVENT **ppEve
 					}
 				}
 				/* Get the template data namelen and data */
-				if (fread(&event->ulEventLength, sizeof(int), 1, fp) != sizeof(int)) {
+				if (fread(&event->ulEventLength, 1, sizeof(int), fp) != sizeof(int)) {
 					free(event);
 					LogError("Failed to read event log file");
 					result = TCSERR(TSS_E_INTERNAL_ERROR);
@@ -303,7 +303,7 @@ ima_get_entry(FILE *handle, UINT32 pcr_index, UINT32 *num, TSS_PCR_EVENT **ppEve
 					goto done;
 				}
 				memset(event->rgbEvent, 0, event->ulEventLength);
-				if (fread(event->rgbEvent, event->ulEventLength, 1, fp) != event->ulEventLength ) {
+				if (fread(event->rgbEvent, 1, event->ulEventLength, fp) != event->ulEventLength ) {
 					free(event->rgbPcrValue);
 					free(event);
 					LogError("Failed to read event log file");
@@ -316,7 +316,7 @@ ima_get_entry(FILE *handle, UINT32 pcr_index, UINT32 *num, TSS_PCR_EVENT **ppEve
 				break;
 			}
 		}
-		if (fread(&len, sizeof(len), 1, fp) != sizeof(len)) {
+		if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) {
 			free(event->rgbPcrValue);
 			free(event);
 			LogError("Failed to read event log file");
@@ -324,7 +324,7 @@ ima_get_entry(FILE *handle, UINT32 pcr_index, UINT32 *num, TSS_PCR_EVENT **ppEve
 			goto done;
 		}
 		fseek(fp, len + 20, SEEK_CUR);
-		if (fread(&len, sizeof(len), 1, fp) != sizeof(len)) {
+		if (fread(&len, 1, sizeof(len), fp) != sizeof(len)) {
 			free(event->rgbPcrValue);
 			free(event);
 			LogError("Failed to read event log file");
-- 
1.6.6.1



On Feb 13, 2010, at 9:50 PM, Seiji Munetoh wrote:

> Rajiv,
> 
> Fix for tcs_evlog_imaem.c.
> The return of fread must be 1 since it use nmemb =1.
> and changed "int" to UINT32  to make sure some length (4 bytes).
> I tested this with Fedora 12, 2.6.31.12-174.2.3.fc12.x86_64 kernel.
> 
> Signed-off-by: Seiji Munetoh <seiji.munetoh@gmail.com>
> 
> regards,
> --
> Seiji Munetoh
> <IMA_eventlog.patch>------------------------------------------------------------------------------
> SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
> Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
> http://p.sf.net/sfu/solaris-dev2dev_______________________________________________
> TrouSerS-tech mailing list
> TrouSerS-tech@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/trousers-tech



------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev

_______________________________________________
TrouSerS-tech mailing list
TrouSerS-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/trousers-tech


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic