When reading an mountdata that has never been used, "llog_reader
CONFIGS/mountdata" command crashes with following output:
Header size :
500170753
Time : Wed Sep 4 00:57:37 6869
Number of records: 65534
Target uuid :
-----------------------
Segmentation fault
After apply this patch, llog_reader will print following message
and quit under this circumstance:
Header size :
500170753
Time : Wed Sep 4 00:57:37 6869
Number of records: 65534
Target uuid :
-----------------------
uninitialized llog record at index 0
Change-Id: I25147f7fd09c6d59ff0049bdb20ac1979cf43ee4
Signed-off-by: Li Xi <lixi@ddn.com>
Reviewed-on: https://review.whamcloud.com/35178
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
/* the llog header not countable here.*/
recs_num = count - 1;
- recs_buf = malloc(recs_num * sizeof(**recs_pr));
+ recs_buf = calloc(recs_num, sizeof(**recs_pr));
if (recs_buf == NULL) {
rc = -ENOMEM;
llapi_error(LLAPI_MSG_ERROR, rc,
int i, skip = 0;
for (i = 0; i < rec_number; i++) {
+ if (recs[i] == NULL) {
+ llapi_printf(LLAPI_MSG_NORMAL,
+ "uninitialized llog record at index %d\n",
+ i);
+ break;
+ }
printf("#%.2d (%.3d)", __le32_to_cpu(recs[i]->lrh_index),
__le32_to_cpu(recs[i]->lrh_len));