diff options
author | Justin Mayfield <jmayfield@cradlepoint.com> | 2012-05-09 21:08:30 -0600 |
---|---|---|
committer | Thomas Graf <tgraf@redhat.com> | 2012-05-10 09:12:18 +0200 |
commit | 32057bc15469e6f012841605daa38766497fa196 (patch) | |
tree | 3325e2e13954da66b742d2a2025de7c78e4e5511 | |
parent | 100403a99a1437459cf60173dd0f51859ae7d5fe (diff) | |
download | libnl-32057bc15469e6f012841605daa38766497fa196.tar.gz |
__str2flags fix
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.
-rw-r--r-- | lib/utils.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/utils.c b/lib/utils.c index 0ec7626..83d424f 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -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) |