Prevent reading of inode generation for special files in HMAC signing
Kernel API does not support at the momement reading of inode generation number of special files, so do not do it also when do HMAC signing. Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
This commit is contained in:
parent
fd08fdeeb5
commit
6c0ebe2be6
32
src/evmctl.c
32
src/evmctl.c
@ -1429,8 +1429,8 @@ out:
|
||||
static int calc_evm_hmac(const char *file, const char *keyfile, unsigned char *hash)
|
||||
{
|
||||
struct stat st;
|
||||
int fd, err = -1;
|
||||
uint32_t generation;
|
||||
int err = -1;
|
||||
uint32_t generation = 0;
|
||||
HMAC_CTX ctx;
|
||||
unsigned int mdlen;
|
||||
char **xattrname;
|
||||
@ -1456,24 +1456,26 @@ static int calc_evm_hmac(const char *file, const char *keyfile, unsigned char *h
|
||||
memcpy(evmkey, key, keylen);
|
||||
memset(evmkey + keylen, 0, sizeof(evmkey) - keylen);
|
||||
|
||||
fd = open(file, 0);
|
||||
if (fd < 0) {
|
||||
log_err("Unable to open %s\n", file);
|
||||
if (lstat(file, &st)) {
|
||||
log_err("lstat() failed\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (fstat(fd, &st)) {
|
||||
log_err("fstat() failed\n");
|
||||
goto out;
|
||||
if (S_ISREG(st.st_mode) || S_ISDIR(st.st_mode)) {
|
||||
/* we cannot at the momement to get generation of special files..
|
||||
* kernel API does not support it */
|
||||
int fd = open(file, 0);
|
||||
if (fd < 0) {
|
||||
log_err("Unable to open %s\n", file);
|
||||
goto out;
|
||||
}
|
||||
if (ioctl(fd, EXT34_IOC_GETVERSION, &generation)) {
|
||||
log_err("ioctl() failed\n");
|
||||
goto out;
|
||||
}
|
||||
close(fd);
|
||||
}
|
||||
|
||||
if (ioctl(fd, EXT34_IOC_GETVERSION, &generation)) {
|
||||
log_err("ioctl() failed\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
||||
log_info("generation: %u\n", generation);
|
||||
|
||||
list_size = llistxattr(file, list, sizeof(list));
|
||||
|
Loading…
x
Reference in New Issue
Block a user