hdt: Fixing DMI memory corruption
authorErwan Velu <erwan.velu@free.fr>
Sun, 22 Feb 2009 21:58:54 +0000 (22:58 +0100)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 26 Feb 2009 04:58:44 +0000 (20:58 -0800)
com32/modules/dmi.c

index f307cdc..3cbc352 100644 (file)
@@ -318,14 +318,14 @@ int dmi_iterate(s_dmi *dmi) {
   char *p,*q;
 
   /* Cleaning structures */
-  memset(&(dmi->base_board),0,sizeof dmi->base_board);
-  memset(&(dmi->battery),0,sizeof dmi->battery);
-  memset(&(dmi->bios),0,sizeof dmi->bios);
-  memset(&(dmi->chassis),0,sizeof dmi->chassis);
+  memset(&dmi->base_board,0,sizeof (s_base_board));
+  memset(&dmi->battery,0,sizeof (s_battery));
+  memset(&dmi->bios,0,sizeof (s_bios));
+  memset(&dmi->chassis,0,sizeof (s_chassis));
   for (int i=0;i<MAX_DMI_MEMORY_ITEMS;i++)
-       memset(&(dmi->memory[i]),0,sizeof dmi->memory);
-  memset(&(dmi->processor),0,sizeof dmi->processor);
-  memset(&(dmi->system),0,sizeof dmi->system);
+       memset(&dmi->memory[i],0,sizeof (s_memory));
+  memset(&dmi->processor,0,sizeof (s_processor));
+  memset(&dmi->system,0,sizeof (s_system));
 
   /* Until we found this elements in the dmitable, we consider them as not filled */
   dmi->base_board.filled=false;
@@ -337,7 +337,6 @@ int dmi_iterate(s_dmi *dmi) {
   dmi->processor.filled=false;
   dmi->system.filled=false;
 
-
   p=(char *)0xF0000; /* The start address to look at the dmi table */
   for (q = p; q < p + 0x10000; q += 16) {
         memcpy(buf, q, 15);