aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/ar
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1994-12-17 05:59:33 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1994-12-17 05:59:33 +0000
commit632a24451cd26215d36cecf685f727de2581a875 (patch)
tree764a2db659f330852b5cd1d739919252964e1a91 /usr.bin/ar
parent763424fcf0aab477fb4476b72f2f08d09cd2daba (diff)
downloadsrc-632a24451cd26215d36cecf685f727de2581a875.tar.gz
src-632a24451cd26215d36cecf685f727de2581a875.zip
Fix odd length long names
Submitted by: dufault@hda.com also Obtained from: 1.1.5.1
Notes
Notes: svn path=/head/; revision=5132
Diffstat (limited to 'usr.bin/ar')
-rw-r--r--usr.bin/ar/archive.c3
-rw-r--r--usr.bin/ar/misc.c6
2 files changed, 4 insertions, 5 deletions
diff --git a/usr.bin/ar/archive.c b/usr.bin/ar/archive.c
index 2d31b2f18618..8a6fe2f6e806 100644
--- a/usr.bin/ar/archive.c
+++ b/usr.bin/ar/archive.c
@@ -299,7 +299,8 @@ copy_ar(cfp, size)
error(cfp->rname);
}
- if (cfp->flags & RPAD && size & 1 && (nr = read(from, buf, 1)) != 1) {
+ if (cfp->flags & RPAD && (size + chdr.lname) & 1 &&
+ (nr = read(from, buf, 1)) != 1) {
if (nr == 0)
badfmt();
error(cfp->rname);
diff --git a/usr.bin/ar/misc.c b/usr.bin/ar/misc.c
index d182fa95e9cb..4faaa22f1a2d 100644
--- a/usr.bin/ar/misc.c
+++ b/usr.bin/ar/misc.c
@@ -126,10 +126,8 @@ int
compare(dest)
char *dest;
{
-
- if (options & AR_TR)
- return (!strncmp(chdr.name, rname(dest), OLDARMAXNAME));
- return (!strcmp(chdr.name, rname(dest)));
+ int maxname = (options & AR_TR) ? OLDARMAXNAME : MAXNAMLEN;
+ return (!strncmp(chdr.name, rname(dest), maxname));
}
void