35
34
#define OPT_INC (0x0001)
36
35
#define OPT_DEC (0x0002)
37
#define OPT_XATTR (0x0004)
39
37
void usage(char *name)
41
fprintf(stderr, "Usage: [-i | -d] [-x] file\n");
44
static int test_with_metadata_in_header(int fd, int flags)
46
unsigned char buffer[1];
48
if ((lseek(fd, (off_t)OFFSET, SEEK_SET)) < 0) {
49
fprintf(stderr, "Cannot lseek to offset %d: %s\n",
50
OFFSET, strerror(errno));
54
if (read(fd, buffer, sizeof(buffer)) != sizeof(buffer)) {
55
fprintf(stderr, "Failed to read\n");
65
if ((lseek(fd, (off_t)OFFSET, SEEK_SET)) < 0) {
66
fprintf(stderr, "Cannot lseek to offset %d: %s\n",
67
OFFSET, strerror(errno));
71
if (write(fd, buffer, sizeof(buffer)) != sizeof(buffer)) {
72
fprintf(stderr, "Failed to write\n");
79
static int test_with_metadata_in_xattr(int fd, int flags)
81
const char *name = "user.ecryptfs";
82
unsigned char *value = NULL;
83
ssize_t nread, size = 0;
86
size = fgetxattr(fd, name, value, size);
88
fprintf(stderr, "Cannot retrieve xattr size: %s\n",
96
"Cannot allocate memory to store the xattr value\n");
100
nread = fgetxattr(fd, name, value, size);
103
fprintf(stderr, "Cannot read xattr: %s\n",
106
fprintf(stderr, "Partial xattr read: %zu < %zu\n",
117
if (fsetxattr(fd, name, value, size, XATTR_REPLACE) < 0) {
118
fprintf(stderr, "Cannot write xattr: %s\n", strerror(errno));
39
fprintf(stderr, "Usage: [-i | -d] file\n");
131
43
* https://bugs.launchpad.net/ecryptfs/+bug/509180
175
if (flags & OPT_XATTR)
176
rc = test_with_metadata_in_xattr(fd, flags);
178
rc = test_with_metadata_in_header(fd, flags);
86
if ((lseek(fd, (off_t)OFFSET, SEEK_SET)) < 0) {
87
fprintf(stderr, "Cannot lseek to offset %d in %s : %s\n",
88
OFFSET, file, strerror(errno));
93
if (read(fd, buffer, sizeof(buffer)) != sizeof(buffer)) {
94
fprintf(stderr, "Failed to read\n");
105
if ((lseek(fd, (off_t)OFFSET, SEEK_SET)) < 0) {
106
fprintf(stderr, "Cannot lseek to offset %d in %s : %s\n",
107
OFFSET, file, strerror(errno));
112
if (write(fd, buffer, sizeof(buffer)) != sizeof(buffer)) {
113
fprintf(stderr, "Failed to write\n");
181
118
if (close(fd) < 0) {