size_ret = lttng_write(fd, &hdr, sizeof(hdr));
if (size_ret < sizeof(hdr)) {
PERROR("write index header");
- ret = -1;
goto error;
}
index_file->fd = fd;
int lttng_index_file_write(const struct lttng_index_file *index_file,
const struct ctf_packet_index *element)
{
+ int fd;
+ size_t len;
ssize_t ret;
- int fd = index_file->fd;
- size_t len = index_file->element_len;
+ assert(index_file);
assert(element);
+ fd = index_file->fd;
+ len = index_file->element_len;
+
if (fd < 0) {
goto error;
}
DBG("Index opening file %s in read only", fullpath);
read_fd = open(fullpath, O_RDONLY);
if (read_fd < 0) {
- if (errno == ENOENT) {
- ret = -ENOENT;
- } else {
- PERROR("opening index in read-only");
- }
+ PERROR("opening index in read-only");
goto error;
}
ERR("Invalid header version");
goto error_close;
}
+ if (element_len > sizeof(struct ctf_packet_index)) {
+ ERR("Index element length too long");
+ goto error_close;
+ }
index_file->fd = read_fd;
index_file->major = major;
PERROR("close read fd %d", read_fd);
}
}
- ret = -1;
error:
free(index_file);