@@ -104,10 +104,14 @@ int main(int argc, char **argv)
104104 .val = FENCEPOST_OPT_FLAG | offsetof(typeof(seg_map), x) }
105105 FENCEPOST_OPT (text_start ),
106106 FENCEPOST_OPT (text_end ),
107- FENCEPOST_OPT (reloc_tab_start ),
108- FENCEPOST_OPT (reloc_tab_end ),
109- FENCEPOST_OPT (reloc_tab_len_start ),
110- FENCEPOST_OPT (reloc_tab_len_end ),
107+ FENCEPOST_OPT (text_reloc_tab .start ),
108+ FENCEPOST_OPT (text_reloc_tab .end ),
109+ FENCEPOST_OPT (text_reloc_tab .len_start ),
110+ FENCEPOST_OPT (text_reloc_tab .len_end ),
111+ FENCEPOST_OPT (rodata_reloc_tab .start ),
112+ FENCEPOST_OPT (rodata_reloc_tab .end ),
113+ FENCEPOST_OPT (rodata_reloc_tab .len_start ),
114+ FENCEPOST_OPT (rodata_reloc_tab .len_end ),
111115 FENCEPOST_OPT (fips_text_start ),
112116 FENCEPOST_OPT (fips_text_end ),
113117 FENCEPOST_OPT (rodata_start ),
@@ -228,10 +232,14 @@ int main(int argc, char **argv)
228232
229233 if ((seg_map .text_start == ~0UL ) ||
230234 (seg_map .text_end == ~0UL ) ||
231- (seg_map .reloc_tab_start == ~0UL ) ||
232- (seg_map .reloc_tab_end == ~0UL ) ||
233- (seg_map .reloc_tab_len_start == ~0UL ) ||
234- (seg_map .reloc_tab_len_end == ~0UL ) ||
235+ (seg_map .text_reloc_tab .start == ~0UL ) ||
236+ (seg_map .text_reloc_tab .end == ~0UL ) ||
237+ (seg_map .text_reloc_tab .len_start == ~0UL ) ||
238+ (seg_map .text_reloc_tab .len_end == ~0UL ) ||
239+ (seg_map .rodata_reloc_tab .start == ~0UL ) ||
240+ (seg_map .rodata_reloc_tab .end == ~0UL ) ||
241+ (seg_map .rodata_reloc_tab .len_start == ~0UL ) ||
242+ (seg_map .rodata_reloc_tab .len_end == ~0UL ) ||
235243 (seg_map .fips_text_start == ~0UL ) ||
236244 (seg_map .fips_text_end == ~0UL ) ||
237245 (seg_map .rodata_start == ~0UL ) ||
@@ -267,12 +275,23 @@ int main(int argc, char **argv)
267275 exit (1 );
268276 }
269277
270- if ((seg_map .reloc_tab_start >= seg_map .reloc_tab_end ) ||
271- (seg_map .reloc_tab_end >= (unsigned long )st .st_size ) ||
272- (seg_map .reloc_tab_len_start >= seg_map .reloc_tab_len_end ) ||
273- (seg_map .reloc_tab_len_end >= (unsigned long )st .st_size ))
278+ if ((seg_map .text_reloc_tab . start >= seg_map .text_reloc_tab . end ) ||
279+ (seg_map .text_reloc_tab . end >= (unsigned long )st .st_size ) ||
280+ (seg_map .text_reloc_tab . len_start >= seg_map .text_reloc_tab . len_end ) ||
281+ (seg_map .text_reloc_tab . len_end >= (unsigned long )st .st_size ))
274282 {
275- fprintf (stderr , "%s: supplied reloc_tab fencepost(s) are out of bounds "
283+ fprintf (stderr , "%s: supplied text_reloc_tab fencepost(s) are out of bounds "
284+ "for supplied module %s with length %lu.\n" ,
285+ progname , mod_path , (unsigned long )st .st_size );
286+ exit (1 );
287+ }
288+
289+ if ((seg_map .rodata_reloc_tab .start >= seg_map .rodata_reloc_tab .end ) ||
290+ (seg_map .rodata_reloc_tab .end >= (unsigned long )st .st_size ) ||
291+ (seg_map .rodata_reloc_tab .len_start >= seg_map .rodata_reloc_tab .len_end ) ||
292+ (seg_map .rodata_reloc_tab .len_end >= (unsigned long )st .st_size ))
293+ {
294+ fprintf (stderr , "%s: supplied rodata_reloc_tab fencepost(s) are out of bounds "
276295 "for supplied module %s with length %lu.\n" ,
277296 progname , mod_path , (unsigned long )st .st_size );
278297 exit (1 );
@@ -291,10 +310,15 @@ int main(int argc, char **argv)
291310 seg_map .start = (unsigned long )mod_map ;
292311 seg_map .end = (unsigned long )mod_map + st .st_size ;
293312
294- seg_map .reloc_tab_start += (unsigned long )mod_map ;
295- seg_map .reloc_tab_end += (unsigned long )mod_map ;
296- seg_map .reloc_tab_len_start += (unsigned long )mod_map ;
297- seg_map .reloc_tab_len_end += (unsigned long )mod_map ;
313+ seg_map .text_reloc_tab .start += (unsigned long )mod_map ;
314+ seg_map .text_reloc_tab .end += (unsigned long )mod_map ;
315+ seg_map .text_reloc_tab .len_start += (unsigned long )mod_map ;
316+ seg_map .text_reloc_tab .len_end += (unsigned long )mod_map ;
317+
318+ seg_map .rodata_reloc_tab .start += (unsigned long )mod_map ;
319+ seg_map .rodata_reloc_tab .end += (unsigned long )mod_map ;
320+ seg_map .rodata_reloc_tab .len_start += (unsigned long )mod_map ;
321+ seg_map .rodata_reloc_tab .len_end += (unsigned long )mod_map ;
298322
299323 seg_map .verifyCore_start += (unsigned long )mod_map ;
300324 seg_map .verifyCore_end += (unsigned long )mod_map ;
0 commit comments