Hi Jakie, I replied only to the list but you look not subscribed? so sending you this again just in case.. Thanks, Kazu -----Original Message----- > -----Original Message----- > > From: Jackie Liu <liuyun01@xxxxxxxxxx> > > > > Some strange reasons may cause kcore to collect some strange > > entries of ikconfig, such as CONFIG_SECU+[some hex data] causes > > the 'val' to be NULL, and then crashes when strdup. > > > > Signed-off-by: Jackie Liu <liuyun01@xxxxxxxxxx> > > --- > > kernel.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/kernel.c b/kernel.c > > index 9871637..aa86f0d 100644 > > --- a/kernel.c > > +++ b/kernel.c > > @@ -10244,6 +10244,9 @@ static void add_ikconfig_entry(char *line, struct ikconfig_list *ent) > > sscanf(name, "CONFIG_%s", name); > > val = strtok_r(NULL, "", &tokptr); > > > > + if (!val) > > + return; > > + > > This looks harmless, but kt->ikconfig_ents is incremented unconditionally > in setup_ikconfig() and inconsistent with the following debug message > > if (setup_ikconfig(pos)) { > kt->ikconfig_flags |= IKCONFIG_LOADED; > if (CRASHDEBUG(1)) > fprintf(fp, > "ikconfig: %d valid configs.\n", > kt->ikconfig_ents); > > and it consumes an element of the ikconfig_all array needlessly, so > how about something like this?: > > if (!val) { > if (CRASHDEBUG(2)) > error(WARNING, "invalid ikconfig entry: %s\n", line); > return FALSE; > } > ... > return TRUE; > > and in setup_ikconfig(): > > if (add_ikconfig_entry(ent, &ikconfig_all[kt->ikconfig_ents]) > kt->ikconfig_ents++; > > Thanks, > Kazu > > > ent->name = strdup(name); > > ent->val = strdup(val); > > } > > -- > > 2.17.1 > > > > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility