ID:335 - Check return value of fseek(), prevent segfault

Commit adds a check as a workaround for segfault reported in ID:335. However,
the proper fix is to rewrite parts of lib/ipmi_hpmfwupg.c not to put whole
firmware image into memory. Also, MD5 checksum part needs to be rewritten,
because it won't work for large firmware images.
This commit is contained in:
Zdenek Styblik 2016-06-09 11:48:29 +02:00
parent a203644728
commit 6d8ad594cc

View File

@ -1399,7 +1399,12 @@ HpmfwupgGetBufferFromFile(char *imageFilename,
return HPMFWUPG_ERROR; return HPMFWUPG_ERROR;
} }
/* Get the raw data in file */ /* Get the raw data in file */
fseek(pImageFile, 0, SEEK_END); ret = fseek(pImageFile, 0, SEEK_END);
if (ret != 0) {
lprintf(LOG_ERR, "Failed to seek in the image file '%s'",
imageFilename);
return HPMFWUPG_ERROR;
}
pFwupgCtx->imageSize = ftell(pImageFile); pFwupgCtx->imageSize = ftell(pImageFile);
pFwupgCtx->pImageData = malloc(sizeof(unsigned char)*pFwupgCtx->imageSize); pFwupgCtx->pImageData = malloc(sizeof(unsigned char)*pFwupgCtx->imageSize);
if (pFwupgCtx->pImageData == NULL) { if (pFwupgCtx->pImageData == NULL) {