[svn] xline/resv wildcard checking:

- count escaped (\) characters as one nonwild
- accept strings without wilds no matter how short they are
This commit is contained in:
jilles 2007-06-04 09:04:49 -07:00
parent 5832fa369b
commit 7d08aa8911
3 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,12 @@
jilles 2007/05/30 10:22:25 UTC (20070530-3498)
Log:
Tweak some comments in sno_whois extension.
Changes: Modified:
+2 -2 trunk/extensions/sno_whois.c (File Modified)
jilles 2007/05/30 10:22:01 UTC (20070530-3496) jilles 2007/05/30 10:22:01 UTC (20070530-3496)
Log: Log:
Tweak NEWS a little. Tweak NEWS a little.

View File

@ -1 +1 @@
#define SERNO "20070530-3496" #define SERNO "20070530-3498"

View File

@ -29,7 +29,7 @@
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
* *
* $Id: s_newconf.c 3161 2007-01-25 07:23:01Z nenolod $ * $Id: s_newconf.c 3508 2007-06-04 16:04:49Z jilles $
*/ */
#include "stdinc.h" #include "stdinc.h"
@ -595,6 +595,7 @@ valid_wild_card_simple(const char *data)
const char *p; const char *p;
char tmpch; char tmpch;
int nonwild = 0; int nonwild = 0;
int wild = 0;
/* check the string for minimum number of nonwildcard chars */ /* check the string for minimum number of nonwildcard chars */
p = data; p = data;
@ -604,9 +605,11 @@ valid_wild_card_simple(const char *data)
/* found an escape, p points to the char after it, so skip /* found an escape, p points to the char after it, so skip
* that and move on. * that and move on.
*/ */
if(tmpch == '\\') if(tmpch == '\\' && *p)
{ {
p++; p++;
if(++nonwild >= ConfigFileEntry.min_nonwildcard_simple)
return 1;
} }
else if(!IsMWildChar(tmpch)) else if(!IsMWildChar(tmpch))
{ {
@ -614,9 +617,12 @@ valid_wild_card_simple(const char *data)
if(++nonwild >= ConfigFileEntry.min_nonwildcard_simple) if(++nonwild >= ConfigFileEntry.min_nonwildcard_simple)
return 1; return 1;
} }
else
wild++;
} }
return 0; /* strings without wilds are also ok */
return wild == 0;
} }
time_t time_t