//\r
// Construct Map file Name \r
//\r
- strcpy (PeMapFileName, FileName);\r
+ if (strlen (FileName) >= MAX_LONG_FILE_PATH) {\r
+ return EFI_ABORTED;\r
+ }\r
+ strncpy (PeMapFileName, FileName, MAX_LONG_FILE_PATH - 1);\r
+ PeMapFileName[MAX_LONG_FILE_PATH - 1] = 0;\r
\r
//\r
// Change '\\' to '/', unified path format.\r
Cptr --;\r
}\r
*Cptr2 = '\0';\r
- strcpy (KeyWord, Cptr + 1);\r
+ if (strlen (Cptr + 1) >= MAX_LINE_LEN) {\r
+ return EFI_ABORTED;\r
+ }\r
+ strncpy (KeyWord, Cptr + 1, MAX_LINE_LEN - 1);\r
+ KeyWord[MAX_LINE_LEN - 1] = 0;\r
*Cptr2 = '.';\r
\r
//\r
//\r
// Construct the original efi file Name \r
//\r
- strcpy (PeFileName, FileName);\r
+ if (strlen (FileName) >= MAX_LONG_FILE_PATH) {\r
+ Error (NULL, 0, 2000, "Invalid", "The file name %s is too long.", FileName);\r
+ return EFI_ABORTED;\r
+ }\r
+ strncpy (PeFileName, FileName, MAX_LONG_FILE_PATH - 1);\r
+ PeFileName[MAX_LONG_FILE_PATH - 1] = 0;\r
Cptr = PeFileName + strlen (PeFileName);\r
while (*Cptr != '.') {\r
Cptr --;\r
//\r
// Construct the original efi file name \r
//\r
- strcpy (PeFileName, FileName);\r
+ if (strlen (FileName) >= MAX_LONG_FILE_PATH) {\r
+ Error (NULL, 0, 2000, "Invalid", "The file name %s is too long.", FileName);\r
+ return EFI_ABORTED;\r
+ }\r
+ strncpy (PeFileName, FileName, MAX_LONG_FILE_PATH - 1);\r
+ PeFileName[MAX_LONG_FILE_PATH - 1] = 0;\r
Cptr = PeFileName + strlen (PeFileName);\r
while (*Cptr != '.') {\r
Cptr --;\r