From ee25b232b47c741712e3576bf992d64d7c82ceac Mon Sep 17 00:00:00 2001 From: William Djupström via Toybox Date: Tue, 9 Jun 2020 15:56:25 +0200 Subject: tar: fix bugs with adding hardlinks to archive --- toys/posix/tar.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'toys/posix') diff --git a/toys/posix/tar.c b/toys/posix/tar.c index 77dd6fe9..b257a34f 100644 --- a/toys/posix/tar.c +++ b/toys/posix/tar.c @@ -246,7 +246,8 @@ static int add_to_tar(struct dirtree *node) i = 1; } else { // first time we've seen it. Store as normal file, but remember it. - if (!(TT.hlc&255)) TT.hlx = xrealloc(TT.hlx, TT.hlc+256); + if (!(TT.hlc&255)) + TT.hlx = xrealloc(TT.hlx, sizeof(*TT.hlx)*(TT.hlc+256)); TT.hlx[TT.hlc].arg = xstrdup(hname); TT.hlx[TT.hlc].ino = st->st_ino; TT.hlx[TT.hlc].dev = st->st_dev; @@ -270,7 +271,7 @@ static int add_to_tar(struct dirtree *node) } if (strlen(lnk) > sizeof(hdr.link)) write_longname(lnk, 'K'); strncpy(hdr.link, lnk, sizeof(hdr.link)); - if (i) free(lnk); + if (i==2) free(lnk); } else if (S_ISREG(st->st_mode)) { hdr.type = '0'; ITOO(hdr.size, st->st_size); -- cgit v1.2.3