projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: iterator.c BT_SEEK_RESTORE: check return value
[babeltrace.git]
/
lib
/
iterator.c
diff --git
a/lib/iterator.c
b/lib/iterator.c
index bcb77d8843b2eca392ebb0517bafd934e3f5bcea..2dbd77c0df1ee1de769401f5e05e7102fd2b7142 100644
(file)
--- a/
lib/iterator.c
+++ b/
lib/iterator.c
@@
-67,7
+67,7
@@
static int stream_read_event(struct ctf_file_stream *sin)
/*
* returns true if a < b, false otherwise.
*/
/*
* returns true if a < b, false otherwise.
*/
-int stream_compare(void *a, void *b)
+
static
int stream_compare(void *a, void *b)
{
struct ctf_file_stream *s_a = a, *s_b = b;
{
struct ctf_file_stream *s_a = a, *s_b = b;
@@
-192,6
+192,9
@@
int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos)
struct trace_collection *tc;
int i, ret;
struct trace_collection *tc;
int i, ret;
+ if (!iter || !iter_pos)
+ return -EINVAL;
+
switch (iter_pos->type) {
case BT_SEEK_RESTORE:
if (!iter_pos->u.restore)
switch (iter_pos->type) {
case BT_SEEK_RESTORE:
if (!iter_pos->u.restore)
@@
-237,7
+240,10
@@
int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos)
stream_pos->cur_index,
stream_pos->offset, stream->real_timestamp);
stream_pos->cur_index,
stream_pos->offset, stream->real_timestamp);
- stream_read_event(saved_pos->file_stream);
+ ret = stream_read_event(saved_pos->file_stream);
+ if (ret != 0) {
+ goto error;
+ }
/* Add to heap */
ret = heap_insert(iter->stream_heap,
/* Add to heap */
ret = heap_insert(iter->stream_heap,
@@
-349,11
+355,15
@@
error_heap_init:
struct bt_iter_pos *bt_iter_get_pos(struct bt_iter *iter)
{
struct bt_iter_pos *pos;
struct bt_iter_pos *bt_iter_get_pos(struct bt_iter *iter)
{
struct bt_iter_pos *pos;
- struct trace_collection *tc
= iter->ctx->tc
;
+ struct trace_collection *tc;
struct ctf_file_stream *file_stream = NULL, *removed;
struct ptr_heap iter_heap_copy;
int ret;
struct ctf_file_stream *file_stream = NULL, *removed;
struct ptr_heap iter_heap_copy;
int ret;
+ if (!iter)
+ return NULL;
+
+ tc = iter->ctx->tc;
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_RESTORE;
pos->u.restore = g_new0(struct bt_saved_pos, 1);
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_RESTORE;
pos->u.restore = g_new0(struct bt_saved_pos, 1);
@@
-412,6
+422,9
@@
struct bt_iter_pos *bt_iter_create_time_pos(struct bt_iter *iter,
{
struct bt_iter_pos *pos;
{
struct bt_iter_pos *pos;
+ if (!iter)
+ return NULL;
+
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_TIME;
pos->u.seek_time = timestamp;
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_TIME;
pos->u.seek_time = timestamp;
@@
-429,6
+442,9
@@
static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
{
int ret = 0;
{
int ret = 0;
+ if (!file_stream || !begin_pos)
+ return -EINVAL;
+
switch (begin_pos->type) {
case BT_SEEK_CUR:
/*
switch (begin_pos->type) {
case BT_SEEK_CUR:
/*
@@
-459,6
+475,9
@@
int bt_iter_init(struct bt_iter *iter,
int i, stream_id;
int ret = 0;
int i, stream_id;
int ret = 0;
+ if (!iter || !ctx)
+ return -EINVAL;
+
if (ctx->current_iterator) {
ret = -1;
goto error_ctx;
if (ctx->current_iterator) {
ret = -1;
goto error_ctx;
@@
-544,6
+563,9
@@
struct bt_iter *bt_iter_create(struct bt_context *ctx,
struct bt_iter *iter;
int ret;
struct bt_iter *iter;
int ret;
+ if (!ctx)
+ return NULL;
+
iter = g_new0(struct bt_iter, 1);
ret = bt_iter_init(iter, ctx, begin_pos, end_pos);
if (ret) {
iter = g_new0(struct bt_iter, 1);
ret = bt_iter_init(iter, ctx, begin_pos, end_pos);
if (ret) {
@@
-555,6
+577,7
@@
struct bt_iter *bt_iter_create(struct bt_context *ctx,
void bt_iter_fini(struct bt_iter *iter)
{
void bt_iter_fini(struct bt_iter *iter)
{
+ assert(iter);
if (iter->stream_heap) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
if (iter->stream_heap) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
@@
-565,6
+588,7
@@
void bt_iter_fini(struct bt_iter *iter)
void bt_iter_destroy(struct bt_iter *iter)
{
void bt_iter_destroy(struct bt_iter *iter)
{
+ assert(iter);
bt_iter_fini(iter);
g_free(iter);
}
bt_iter_fini(iter);
g_free(iter);
}
@@
-574,6
+598,9
@@
int bt_iter_next(struct bt_iter *iter)
struct ctf_file_stream *file_stream, *removed;
int ret;
struct ctf_file_stream *file_stream, *removed;
int ret;
+ if (!iter)
+ return -EINVAL;
+
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
This page took
0.026849 seconds
and
4
git commands to generate.