mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-19 02:29:40 +00:00
pax: Clear arcn in each read function.
Instead of initializing individual fields to zero, clear the entire
struct prior to populating it.
MFC after: 1 week
Sponsored by: Klara, Inc.
Reviewed by: 0mp, markj
Differential Revision: https://reviews.freebsd.org/D46097
(cherry picked from commit f890020d43
)
This commit is contained in:
parent
e6d9c11666
commit
ece4e05f4b
@ -280,13 +280,13 @@ cpio_rd(ARCHD *arcn, char *buf)
|
||||
*/
|
||||
if (cpio_id(buf, sizeof(HD_CPIO)) < 0)
|
||||
return(-1);
|
||||
memset(arcn, 0, sizeof *arcn);
|
||||
hd = (HD_CPIO *)buf;
|
||||
|
||||
/*
|
||||
* byte oriented cpio (posix) does not have padding! extract the octal
|
||||
* ascii fields from the header
|
||||
*/
|
||||
arcn->pad = 0L;
|
||||
arcn->sb.st_dev = (dev_t)asc_ul(hd->c_dev, sizeof(hd->c_dev), OCT);
|
||||
arcn->sb.st_ino = (ino_t)asc_ul(hd->c_ino, sizeof(hd->c_ino), OCT);
|
||||
arcn->sb.st_mode = (mode_t)asc_ul(hd->c_mode, sizeof(hd->c_mode), OCT);
|
||||
@ -315,8 +315,6 @@ cpio_rd(ARCHD *arcn, char *buf)
|
||||
/*
|
||||
* no link name to read for this file
|
||||
*/
|
||||
arcn->ln_nlen = 0;
|
||||
arcn->ln_name[0] = '\0';
|
||||
return(com_rd(arcn));
|
||||
}
|
||||
|
||||
@ -561,8 +559,8 @@ vcpio_rd(ARCHD *arcn, char *buf)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
memset(arcn, 0, sizeof *arcn);
|
||||
hd = (HD_VCPIO *)buf;
|
||||
arcn->pad = 0L;
|
||||
|
||||
/*
|
||||
* extract the hex ascii fields from the header
|
||||
@ -609,8 +607,6 @@ vcpio_rd(ARCHD *arcn, char *buf)
|
||||
/*
|
||||
* we have a valid header (not a link)
|
||||
*/
|
||||
arcn->ln_nlen = 0;
|
||||
arcn->ln_name[0] = '\0';
|
||||
arcn->pad = VCPIO_PAD(arcn->sb.st_size);
|
||||
return(com_rd(arcn));
|
||||
}
|
||||
@ -857,7 +853,7 @@ bcpio_rd(ARCHD *arcn, char *buf)
|
||||
if (bcpio_id(buf, sizeof(HD_BCPIO)) < 0)
|
||||
return(-1);
|
||||
|
||||
arcn->pad = 0L;
|
||||
memset(arcn, 0, sizeof *arcn);
|
||||
hd = (HD_BCPIO *)buf;
|
||||
if (swp_head) {
|
||||
/*
|
||||
@ -919,8 +915,6 @@ bcpio_rd(ARCHD *arcn, char *buf)
|
||||
/*
|
||||
* we have a valid header (not a link)
|
||||
*/
|
||||
arcn->ln_nlen = 0;
|
||||
arcn->ln_name[0] = '\0';
|
||||
arcn->pad = BCPIO_PAD(arcn->sb.st_size);
|
||||
return(com_rd(arcn));
|
||||
}
|
||||
|
@ -373,9 +373,9 @@ tar_rd(ARCHD *arcn, char *buf)
|
||||
*/
|
||||
if (tar_id(buf, BLKMULT) < 0)
|
||||
return(-1);
|
||||
memset(arcn, 0, sizeof *arcn);
|
||||
arcn->org_name = arcn->name;
|
||||
arcn->sb.st_nlink = 1;
|
||||
arcn->pat = NULL;
|
||||
|
||||
/*
|
||||
* copy out the name and values in the stat buffer
|
||||
@ -402,8 +402,6 @@ tar_rd(ARCHD *arcn, char *buf)
|
||||
* to encode this as a directory
|
||||
*/
|
||||
pt = &(arcn->name[arcn->nlen - 1]);
|
||||
arcn->pad = 0;
|
||||
arcn->skip = 0;
|
||||
switch(hd->linkflag) {
|
||||
case SYMTYPE:
|
||||
/*
|
||||
@ -440,8 +438,6 @@ tar_rd(ARCHD *arcn, char *buf)
|
||||
arcn->type = PAX_DIR;
|
||||
arcn->sb.st_mode |= S_IFDIR;
|
||||
arcn->sb.st_nlink = 2;
|
||||
arcn->ln_name[0] = '\0';
|
||||
arcn->ln_nlen = 0;
|
||||
break;
|
||||
case AREGTYPE:
|
||||
case REGTYPE:
|
||||
@ -449,8 +445,6 @@ tar_rd(ARCHD *arcn, char *buf)
|
||||
/*
|
||||
* If we have a trailing / this is a directory and NOT a file.
|
||||
*/
|
||||
arcn->ln_name[0] = '\0';
|
||||
arcn->ln_nlen = 0;
|
||||
if (*pt == '/') {
|
||||
/*
|
||||
* it is a directory, set the mode for -v printing
|
||||
@ -727,10 +721,9 @@ ustar_rd(ARCHD *arcn, char *buf)
|
||||
*/
|
||||
if (ustar_id(buf, BLKMULT) < 0)
|
||||
return(-1);
|
||||
memset(arcn, 0, sizeof *arcn);
|
||||
arcn->org_name = arcn->name;
|
||||
arcn->sb.st_nlink = 1;
|
||||
arcn->pat = NULL;
|
||||
arcn->nlen = 0;
|
||||
hd = (HD_USTAR *)buf;
|
||||
|
||||
/*
|
||||
@ -777,15 +770,6 @@ ustar_rd(ARCHD *arcn, char *buf)
|
||||
if (uid_name(hd->uname, &(arcn->sb.st_uid)) < 0)
|
||||
arcn->sb.st_uid = (uid_t)asc_ul(hd->uid, sizeof(hd->uid), OCT);
|
||||
|
||||
/*
|
||||
* set the defaults, these may be changed depending on the file type
|
||||
*/
|
||||
arcn->ln_name[0] = '\0';
|
||||
arcn->ln_nlen = 0;
|
||||
arcn->pad = 0;
|
||||
arcn->skip = 0;
|
||||
arcn->sb.st_rdev = (dev_t)0;
|
||||
|
||||
/*
|
||||
* set the mode and PAX type according to the typeflag in the header
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user