hdt: Fixing buffer corruption in PXE menu
authorErwan Velu <erwanaliasr1@gmail.com>
Fri, 15 Apr 2011 19:26:52 +0000 (21:26 +0200)
committerErwan Velu <erwanaliasr1@gmail.com>
Fri, 15 Apr 2011 19:26:52 +0000 (21:26 +0200)
Jim Cromie reported that PXE menu behave like :

gPXE Detected: ]No

This commit avoid this buffer corruption.

com32/hdt/hdt-menu-pxe.c

index 426bfe0..12d8b11 100644 (file)
@@ -34,7 +34,7 @@ void compute_PXE(struct s_my_menu *menu, struct s_hardware *hardware)
 {
     char buffer[SUBMENULEN + 1];
     char infobar[STATLEN + 1];
-    char gpxe[4];
+    char gpxe[4]={0};
 
     if (hardware->is_pxe_valid == false)
        return;
@@ -113,8 +113,8 @@ void compute_PXE(struct s_my_menu *menu, struct s_hardware *hardware)
     add_item(buffer, infobar, OPT_INACTIVE, NULL, 0);
     menu->items_count++;
 
-    if (is_gpxe()) strcat(gpxe,"Yes");
-    else strcat (gpxe,"No");
+    if (is_gpxe()) snprintf(gpxe,sizeof(gpxe),"%s","Yes");
+    else snprintf (gpxe, sizeof(gpxe), "%s", "No");
 
     snprintf(buffer, sizeof buffer, "gPXE Detected: %s", gpxe);
     snprintf(infobar, sizeof infobar, "gPXE Detected: %s", gpxe);