From: Paul Eggert Date: Thu, 27 Oct 2022 20:14:52 +0000 (-0700) Subject: Fix undefined behavior on bad extended header X-Git-Tag: v1.35~42 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=de64229632a333bca312df70fd58ca8970f10414;p=thirdparty%2Ftar.git Fix undefined behavior on bad extended header * src/xheader.c (locate_handler): Avoid undefined behavior if strlen(keyword) < kwlen. --- 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);