From: Mark Wielaard Date: Sun, 14 Oct 2018 15:29:51 +0000 (+0200) Subject: ar: Assume epoch if ar_date is bogus. X-Git-Tag: elfutils-0.175~28 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4cdb0fd0d3b4255a9994ce302d6df76d251f7b75;p=platform%2Fupstream%2Felfutils.git ar: Assume epoch if ar_date is bogus. If the ar header contains a bogus ar_date then in verbose mode we would get a NULL pointer from localtime. Just assume the entry was created during the epoch. https://sourceware.org/bugzilla/show_bug.cgi?id=23754 Signed-off-by: Mark Wielaard --- diff --git a/src/ChangeLog b/src/ChangeLog index d057669..40de5a0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2018-10-14 Mark Wielaard + * ar.c (do_oper_extract): Assume epoch if ar_date is bogus. + +2018-10-14 Mark Wielaard + * findtextrel.c (process_file): Check that sh_entsize is not zero. 2018-09-13 Mark Wielaard diff --git a/src/ar.c b/src/ar.c index 6f98f75..d70f1f4 100644 --- a/src/ar.c +++ b/src/ar.c @@ -539,8 +539,14 @@ do_oper_extract (int oper, const char *arfname, char **argv, int argc, else if (oper == oper_list) { char datestr[100]; - strftime (datestr, sizeof (datestr), "%b %e %H:%M %Y", - localtime (&arhdr->ar_date)); + struct tm *tp = localtime (&arhdr->ar_date); + if (tp == NULL) + { + time_t time = 0; + tp = localtime (&time); + } + + strftime (datestr, sizeof (datestr), "%b %e %H:%M %Y", tp); printf ("%c%c%c%c%c%c%c%c%c %u/%u %6ju %s %s\n", (arhdr->ar_mode & S_IRUSR) ? 'r' : '-',