summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2022-10-27 13:14:52 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2022-10-27 13:20:38 -0700
commitde64229632a333bca312df70fd58ca8970f10414 (patch)
treeca1888e787515f884caa07645382c29027ecabed
parent17debecd7300e94f590b8ce167a8c0735cb6d57d (diff)
downloadtar-de64229632a333bca312df70fd58ca8970f10414.tar.gz
Fix undefined behavior on bad extended header
* src/xheader.c (locate_handler): Avoid undefined behavior if strlen(keyword) < kwlen.
-rw-r--r--src/xheader.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/xheader.c b/src/xheader.c
index dfab6500..08cb474a 100644
--- a/src/xheader.c
+++ b/src/xheader.c
@@ -561,7 +561,7 @@ locate_handler (char const *keyword)
if (p->prefix)
{
size_t kwlen = strlen (p->keyword);
- if (keyword[kwlen] == '.' && strncmp (p->keyword, keyword, kwlen) == 0)
+ if (strncmp (p->keyword, keyword, kwlen) == 0 && keyword[kwlen] == '.')
return p;
}
else
@@ -1636,7 +1636,7 @@ xattr_decoder (struct tar_stat_info *st,
char const *keyword, char const *arg, size_t size)
{
char *xkey;
-
+
/* copy keyword */
xkey = xstrdup (keyword);