fix crashes 7 (#20224)
more checks in njfv2idx_find_and_acquire_j2_header()
Costa Tsaousis committed
May 2, 2025 at 16:57 UTC
8640e0495ae7f0e24ef4c4ba09fc741a8bef6b21
1 file changed
+9
-4
src/database/engine/journalfile.c
+9
-4
@@ -66,6 +66,8 @@ void journalfile_v1_generate_path(struct rrdengine_datafile *datafile, char *str
66
// ----------------------------------------------------------------------------
67
68
ALWAYS_INLINE struct rrdengine_datafile *njfv2idx_find_and_acquire_j2_header(NJFV2IDX_FIND_STATE *s) {
69
+ if (unlikely(!s)) return NULL;
70
+
71
struct rrdengine_datafile *datafile = NULL;
72
73
rw_spinlock_read_lock(&s->ctx->njfv2idx.spinlock);
@@ -106,14 +108,16 @@ ALWAYS_INLINE struct rrdengine_datafile *njfv2idx_find_and_acquire_j2_header(NJF
108
109
datafile = *PValue;
110
109
- if (!datafile || !datafile->journalfile) {
111
+ struct rrdengine_journalfile *journalfile = datafile->journalfile;
112
+
113
+ if (!datafile || !journalfile) {
114
datafile = NULL;
115
PValue = NULL;
116
continue;
117
}
118
115
- TIME_RANGE_COMPARE rc = is_page_in_time_range(datafile->journalfile->v2.first_time_s,
116
- datafile->journalfile->v2.last_time_s,
119
+ TIME_RANGE_COMPARE rc = is_page_in_time_range(journalfile->v2.first_time_s,
120
+ journalfile->v2.last_time_s,
121
s->wanted_start_time_s,
122
s->wanted_end_time_s);
123
@@ -135,7 +139,8 @@ ALWAYS_INLINE struct rrdengine_datafile *njfv2idx_find_and_acquire_j2_header(NJF
139
}
140
}
141
138
- if(datafile)
142
+ struct rrdengine_journalfile *journalfile = datafile->journalfile;
143
+ if(datafile && journalfile)
144
s->j2_header_acquired = journalfile_v2_data_acquire(datafile->journalfile, NULL,
145
s->wanted_start_time_s,
146
s->wanted_end_time_s);