mirror of
https://github.com/systemd/systemd
synced 2024-09-06 08:46:19 +00:00
stat-util: make sure inode_type_to_string() handles anonymous inodes in a reasonable way
This commit is contained in:
parent
1c248d7fb7
commit
7cff2b79f0
|
@ -535,6 +535,8 @@ const char* inode_type_to_string(mode_t m) {
|
|||
return "sock";
|
||||
}
|
||||
|
||||
/* Note anonmyous inodes in the kernel will have a zero type. Hence fstat() of an eventfd() will
|
||||
* return an .st_mode where we'll return NULL here! */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <linux/magic.h>
|
||||
#include <sched.h>
|
||||
#include <sys/eventfd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
|
@ -195,6 +196,21 @@ TEST(inode_type_from_string) {
|
|||
assert_se(inode_type_from_string(inode_type_to_string(*m)) == *m);
|
||||
}
|
||||
|
||||
TEST(anonymous_inode) {
|
||||
_cleanup_close_ int fd = -EBADF;
|
||||
|
||||
fd = eventfd(0, EFD_CLOEXEC);
|
||||
assert_se(fd >= 0);
|
||||
|
||||
/* Verify that we handle anonymous inodes correctly, i.e. those which have no file type */
|
||||
|
||||
struct stat st;
|
||||
assert_se(fstat(fd, &st) >= 0);
|
||||
assert_se((st.st_mode & S_IFMT) == 0);
|
||||
|
||||
assert_se(!inode_type_to_string(st.st_mode));
|
||||
}
|
||||
|
||||
TEST(fd_verify_linked) {
|
||||
_cleanup_(rm_rf_physical_and_freep) char *t = NULL;
|
||||
_cleanup_close_ int tfd = -EBADF, fd = -EBADF;
|
||||
|
|
Loading…
Reference in a new issue