mirror of
https://git.code.sf.net/p/linux-ima/ima-evm-utils
synced 2025-04-28 06:33:36 +02:00
ima-evm-utils: Add more error checking in add_file_hash
Check return value of fstat(2) in add_file_hash() and remove now unused get_fdsize(). Signed-off-by: Vitaly Chikunov <vt@altlinux.org> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
parent
08a51e7460
commit
a225728550
@ -116,20 +116,13 @@ const char *get_hash_algo_by_id(int algo)
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline off_t get_fdsize(int fd)
|
|
||||||
{
|
|
||||||
struct stat stats;
|
|
||||||
/* Need to know the file length */
|
|
||||||
fstat(fd, &stats);
|
|
||||||
return stats.st_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int add_file_hash(const char *file, EVP_MD_CTX *ctx)
|
static int add_file_hash(const char *file, EVP_MD_CTX *ctx)
|
||||||
{
|
{
|
||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
int err = -1, bs = DATA_SIZE;
|
int err = -1, bs = DATA_SIZE;
|
||||||
off_t size, len;
|
off_t size, len;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
struct stat stats;
|
||||||
|
|
||||||
fp = fopen(file, "r");
|
fp = fopen(file, "r");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
@ -143,7 +136,12 @@ static int add_file_hash(const char *file, EVP_MD_CTX *ctx)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size = get_fdsize(fileno(fp)); size; size -= len) {
|
if (fstat(fileno(fp), &stats) == -1) {
|
||||||
|
log_err("Failed to fstat: %s (%s)\n", file, strerror(errno));
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size = stats.st_size; size; size -= len) {
|
||||||
len = MIN(size, bs);
|
len = MIN(size, bs);
|
||||||
if (!fread(data, len, 1, fp)) {
|
if (!fread(data, len, 1, fp)) {
|
||||||
if (ferror(fp)) {
|
if (ferror(fp)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user