projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: out-of-bound memory access
[babeltrace.git]
/
formats
/
ctf
/
ctf.c
diff --git
a/formats/ctf/ctf.c
b/formats/ctf/ctf.c
index fb4ef730d7619c780c7797221ce625c755b08bd6..fb9b2333cf63180a208ace408b9d9b1b90deebc4 100644
(file)
--- a/
formats/ctf/ctf.c
+++ b/
formats/ctf/ctf.c
@@
-863,7
+863,6
@@
void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
struct ctf_file_stream *file_stream =
container_of(pos, struct ctf_file_stream, pos);
int ret;
struct ctf_file_stream *file_stream =
container_of(pos, struct ctf_file_stream, pos);
int ret;
- off_t off;
struct packet_index *packet_index, *prev_index;
switch (whence) {
struct packet_index *packet_index, *prev_index;
switch (whence) {
@@
-907,9
+906,11
@@
void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
}
pos->content_size = -1U; /* Unknown at this point */
pos->packet_size = WRITE_PACKET_LEN;
}
pos->content_size = -1U; /* Unknown at this point */
pos->packet_size = WRITE_PACKET_LEN;
- off = bt_posix_fallocate(pos->fd, pos->mmap_offset,
- pos->packet_size / CHAR_BIT);
- assert(off == 0);
+ do {
+ ret = bt_posix_fallocate(pos->fd, pos->mmap_offset,
+ pos->packet_size / CHAR_BIT);
+ } while (ret == EINTR);
+ assert(ret == 0);
pos->offset = 0;
} else {
read_next_packet:
pos->offset = 0;
} else {
read_next_packet:
@@
-935,6
+936,11
@@
void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
assert(0);
}
assert(0);
}
+ if (pos->cur_index >= pos->packet_index->len) {
+ pos->offset = EOF;
+ return;
+ }
+
packet_index = &g_array_index(pos->packet_index,
struct packet_index, pos->cur_index);
if (pos->cur_index > 0) {
packet_index = &g_array_index(pos->packet_index,
struct packet_index, pos->cur_index);
if (pos->cur_index > 0) {
@@
-947,11
+953,6
@@
void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
ctf_update_current_packet_index(&file_stream->parent,
prev_index, packet_index);
ctf_update_current_packet_index(&file_stream->parent,
prev_index, packet_index);
- if (pos->cur_index >= pos->packet_index->len) {
- pos->offset = EOF;
- return;
- }
-
/*
* We need to check if we are in trace read or called
* from packet indexing. In this last case, the
/*
* We need to check if we are in trace read or called
* from packet indexing. In this last case, the
This page took
0.023323 seconds
and
4
git commands to generate.