]> granicus.if.org Git - libnl/commitdiff
__str2flags fix
authorJustin Mayfield <jmayfield@cradlepoint.com>
Thu, 10 May 2012 03:08:30 +0000 (21:08 -0600)
committerThomas Graf <tgraf@redhat.com>
Thu, 10 May 2012 07:12:18 +0000 (09:12 +0200)
I found a minor bug in __str2flags where empty strings or short strings
will match all or many flags respectively.  Basically the test needs to
ensure the test string is the same length as the table entry before
doing a strncasecmp to avoid doing just a prefix test.

lib/utils.c

index 0ec7626339e2133e77fd609a68637b8b96e8bacb..83d424f4ffeceecf4500223578869955aa0085cf 100644 (file)
@@ -993,7 +993,8 @@ int __str2flags(const char *buf, const struct trans_tbl *tbl, size_t tbl_len)
                t = strchr(p, ',');
                len = t ? t - p : strlen(p);
                for (i = 0; i < tbl_len; i++)
-                       if (!strncasecmp(tbl[i].a, p, len))
+                       if (len == strlen(tbl[i].a) &&
+                           !strncasecmp(tbl[i].a, p, len))
                                flags |= tbl[i].i;
 
                if (!t)