X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Findex%2Findex.c;h=fae1bfd4bcabdd9ba90ee3600733264e581ec7dc;hp=b5591d137c923a97617005f9a85145e09264cba4;hb=cb523e0290a439cf57fa7823ffa78803500ba4c3;hpb=f8f3885cc52af9d3c951da78989d6f4a25270411 diff --git a/src/common/index/index.c b/src/common/index/index.c index b5591d137..fae1bfd4b 100644 --- a/src/common/index/index.c +++ b/src/common/index/index.c @@ -35,7 +35,7 @@ * * Return allocated struct lttng_index_file, NULL on error. */ -struct lttng_index_file *lttng_index_file_create(char *path_name, +struct lttng_index_file *lttng_index_file_create(const char *path_name, char *stream_name, int uid, int gid, uint64_t size, uint64_t count, uint32_t major, uint32_t minor) { @@ -96,7 +96,6 @@ struct lttng_index_file *lttng_index_file_create(char *path_name, 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; @@ -128,12 +127,16 @@ error: 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; } @@ -219,11 +222,7 @@ struct lttng_index_file *lttng_index_file_open(const char *path_name, 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; } @@ -245,6 +244,10 @@ struct lttng_index_file *lttng_index_file_open(const char *path_name, 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; @@ -263,7 +266,6 @@ error_close: PERROR("close read fd %d", read_fd); } } - ret = -1; error: free(index_file);