[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bsd-nomads:16061] Re: about pccardd strict matching
- Subject: [bsd-nomads:16061] Re: about pccardd strict matching
- From: Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org>
- Date: Sun, 25 Nov 2001 19:32:16 +0900 (JST)
- References: <20011122201230U.sk@xstar.kiu.ac.jp>
いわさきです
> pccardd のソースを眺めてみました
>
> ---8<------8<--- src/usr.sbin/pccard/pccardd/cardd.c ---8<------8<------8<---
> static int
> cis_strcmp(char *db, char *cis)
> {
> ....
> n = strlen(db);
> if (n > 2 && db[0] == '/' && db[n-1] == '/') {
> ....
> } else {
> /* otherwise, matching by strncmp() */
> return strncmp(db, cis, n);
> }
> ....
> }
> ---8<------8<------8<------8<------8<------8<------8<------8<------8<---
# 見覚えのあるコードです (^^;
> strncmp(db, cis, n) ここを strncmp(db, cis, ++n) とすれば記載順序に
> 関係なく認識できるものと思います。
いや、まず文字列長が一致するか検査し、その上でstrncmp()で比較するのが
いいと思います。
当時の変更履歴を見てみると、
n = strlen(db);
- return strncmp(db, cis, n);
- /* XXX Add code for regex CIS string comparison here */
+ if (n > 2 && db[0] == '/' && db[n-1] == '/') {
+ /* matching by regex */
となっているので、これはかなり昔から潜在していた虫さんなんですね。
> 今の比較は pccard.conf に記述されてるとこまで一致していれば、それ
> 以降がどうでも一致となってしまうために、LPC2-TX が LPC2-T と
> 誤認されてしまうような事が起こりえるでしょう。
その通りですね。後で直しておきます。
では