Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ingo Voss
OpenLDAP
Commits
9b6638ea
Commit
9b6638ea
authored
Nov 26, 2002
by
Kurt Zeilenga
Browse files
limits
parent
3fce9100
Changes
1
Hide whitespace changes
Inline
Side-by-side
servers/slapd/limits.c
View file @
9b6638ea
...
...
@@ -147,6 +147,19 @@ add_limits(
assert
(
be
);
assert
(
limit
);
switch
(
type
)
{
case
SLAP_LIMITS_ANONYMOUS
:
case
SLAP_LIMITS_USERS
:
case
SLAP_LIMITS_ANY
:
for
(
i
=
0
;
be
->
be_limits
&&
be
->
be_limits
[
i
];
i
++
)
{
if
(
be
->
be_limits
[
i
]
->
lm_type
==
type
)
{
return
(
-
1
);
}
}
break
;
}
lm
=
(
struct
slap_limits
*
)
ch_calloc
(
sizeof
(
struct
slap_limits
),
1
);
switch
(
type
)
{
...
...
@@ -217,7 +230,7 @@ parse_limits(
int
type
=
SLAP_LIMITS_UNDEFINED
;
char
*
pattern
;
struct
slap_limits_set
limit
;
int
i
;
int
i
,
rc
=
0
;
assert
(
be
);
...
...
@@ -277,31 +290,31 @@ parse_limits(
}
else
if
(
strcasecmp
(
pattern
,
"users"
)
==
0
)
{
type
=
SLAP_LIMITS_USERS
;
}
else
if
(
strncasecmp
(
pattern
,
"dn"
,
2
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"dn"
,
sizeof
(
"dn"
)
-
1
)
==
0
)
{
pattern
+=
2
;
if
(
pattern
[
0
]
==
'.'
)
{
pattern
++
;
if
(
strncasecmp
(
pattern
,
"exact"
,
5
)
==
0
)
{
if
(
strncasecmp
(
pattern
,
"exact"
,
sizeof
(
"exact"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_EXACT
;
pattern
+=
5
;
}
else
if
(
strncasecmp
(
pattern
,
"base"
,
4
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"base"
,
sizeof
(
"base "
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_BASE
;
pattern
+=
4
;
}
else
if
(
strncasecmp
(
pattern
,
"one"
,
3
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"one"
,
sizeof
(
"one"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_ONE
;
pattern
+=
3
;
}
else
if
(
strncasecmp
(
pattern
,
"subtree"
,
7
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"subtree"
,
sizeof
(
"subtree"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_SUBTREE
;
pattern
+=
7
;
}
else
if
(
strncasecmp
(
pattern
,
"children"
,
8
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"children"
,
sizeof
(
"children"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_CHILDREN
;
pattern
+=
8
;
}
else
if
(
strncasecmp
(
pattern
,
"regex"
,
5
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"regex"
,
sizeof
(
"regex"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_REGEX
;
pattern
+=
5
;
...
...
@@ -309,7 +322,7 @@ parse_limits(
* this could be deprecated in favour
* of the pattern = "anonymous" form
*/
}
else
if
(
strncasecmp
(
pattern
,
"anonymous"
,
9
)
==
0
)
{
}
else
if
(
strncasecmp
(
pattern
,
"anonymous"
,
sizeof
(
"anonymous"
)
-
1
)
==
0
)
{
type
=
SLAP_LIMITS_ANONYMOUS
;
pattern
=
NULL
;
}
...
...
@@ -384,15 +397,35 @@ parse_limits(
/*
* sanity checks ...
*/
if
(
limit
.
lms_t_hard
>
0
&&
limit
.
lms_t_hard
<
limit
.
lms_t_soft
)
{
if
(
limit
.
lms_t_hard
>
0
&&
(
limit
.
lms_t_hard
<
limit
.
lms_t_soft
||
limit
.
lms_t_soft
==
-
1
)
)
{
limit
.
lms_t_hard
=
limit
.
lms_t_soft
;
}
if
(
limit
.
lms_s_hard
>
0
&&
limit
.
lms_s_hard
<
limit
.
lms_s_soft
)
{
if
(
limit
.
lms_s_hard
>
0
&&
(
limit
.
lms_s_hard
<
limit
.
lms_s_soft
||
limit
.
lms_s_soft
==
-
1
)
)
{
limit
.
lms_s_hard
=
limit
.
lms_s_soft
;
}
return
(
add_limits
(
be
,
type
,
pattern
,
&
limit
)
);
rc
=
add_limits
(
be
,
type
,
pattern
,
&
limit
);
if
(
rc
)
{
#ifdef NEW_LOGGING
LDAP_LOG
(
CONFIG
,
CRIT
,
"%s : line %d: unable to add limit in "
"
\"
limits <pattern> <limits>
\"
line.
\n
"
,
fname
,
lineno
,
0
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"%s : line %d: unable to add limit in "
"
\"
limits <pattern> <limits>
\"
line.
\n
"
,
fname
,
lineno
,
0
);
#endif
}
return
(
rc
);
}
int
...
...
@@ -404,20 +437,30 @@ parse_limit(
assert
(
arg
);
assert
(
limit
);
if
(
strncasecmp
(
arg
,
"time"
,
4
)
==
0
)
{
if
(
strncasecmp
(
arg
,
"time"
,
sizeof
(
"time"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
==
'.'
)
{
arg
++
;
if
(
strncasecmp
(
arg
,
"soft"
,
4
)
==
0
)
{
if
(
strncasecmp
(
arg
,
"soft"
,
sizeof
(
"soft"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
}
arg
++
;
limit
->
lms_t_soft
=
atoi
(
arg
);
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_t_soft
=
-
1
;
}
else
{
char
*
next
=
NULL
;
limit
->
lms_t_soft
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_t_soft
<
-
1
)
{
return
(
1
);
}
}
}
else
if
(
strncasecmp
(
arg
,
"hard"
,
4
)
==
0
)
{
}
else
if
(
strncasecmp
(
arg
,
"hard"
,
sizeof
(
"hard"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
...
...
@@ -428,7 +471,13 @@ parse_limit(
}
else
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_t_hard
=
-
1
;
}
else
{
limit
->
lms_t_hard
=
atoi
(
arg
);
char
*
next
=
NULL
;
limit
->
lms_t_hard
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_t_hard
<
-
1
)
{
return
(
1
);
}
}
}
else
{
...
...
@@ -437,27 +486,46 @@ parse_limit(
}
else
if
(
arg
[
0
]
==
'='
)
{
arg
++
;
limit
->
lms_t_soft
=
atoi
(
arg
);
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_t_soft
=
-
1
;
}
else
{
char
*
next
=
NULL
;
limit
->
lms_t_soft
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_t_soft
<
-
1
)
{
return
(
1
);
}
}
limit
->
lms_t_hard
=
0
;
}
else
{
return
(
1
);
}
}
else
if
(
strncasecmp
(
arg
,
"size"
,
4
)
==
0
)
{
}
else
if
(
strncasecmp
(
arg
,
"size"
,
sizeof
(
"size"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
==
'.'
)
{
arg
++
;
if
(
strncasecmp
(
arg
,
"soft"
,
4
)
==
0
)
{
if
(
strncasecmp
(
arg
,
"soft"
,
sizeof
(
"soft"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
}
arg
++
;
limit
->
lms_s_soft
=
atoi
(
arg
);
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_s_soft
=
-
1
;
}
else
{
char
*
next
=
NULL
;
limit
->
lms_s_soft
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_s_soft
<
-
1
)
{
return
(
1
);
}
}
}
else
if
(
strncasecmp
(
arg
,
"hard"
,
4
)
==
0
)
{
}
else
if
(
strncasecmp
(
arg
,
"hard"
,
sizeof
(
"hard"
)
-
1
)
==
0
)
{
arg
+=
4
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
...
...
@@ -468,10 +536,16 @@ parse_limit(
}
else
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_s_hard
=
-
1
;
}
else
{
limit
->
lms_s_hard
=
atoi
(
arg
);
char
*
next
=
NULL
;
limit
->
lms_s_hard
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_s_hard
<
-
1
)
{
return
(
1
);
}
}
}
else
if
(
strncasecmp
(
arg
,
"unchecked"
,
9
)
==
0
)
{
}
else
if
(
strncasecmp
(
arg
,
"unchecked"
,
sizeof
(
"unchecked"
)
-
1
)
==
0
)
{
arg
+=
9
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
...
...
@@ -480,8 +554,34 @@ parse_limit(
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_s_unchecked
=
-
1
;
}
else
{
limit
->
lms_s_unchecked
=
atoi
(
arg
);
char
*
next
=
NULL
;
limit
->
lms_s_unchecked
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_s_unchecked
<
-
1
)
{
return
(
1
);
}
}
#ifdef LDAP_CONTROL_PAGEDRESULTS
}
else
if
(
strncasecmp
(
arg
,
"pr"
,
sizeof
(
"pr"
)
-
1
)
==
0
)
{
arg
+=
sizeof
(
"pr"
)
-
1
;
if
(
arg
[
0
]
!=
'='
)
{
return
(
1
);
}
arg
++
;
if
(
strcasecmp
(
arg
,
"noEstimate"
)
==
0
)
{
limit
->
lms_s_pr_hide
=
1
;
}
else
{
char
*
next
=
NULL
;
limit
->
lms_s_pr
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_s_pr
<
-
1
)
{
return
(
1
);
}
}
#endif
/* LDAP_CONTROL_PAGEDRESULTS */
}
else
{
return
(
1
);
...
...
@@ -489,7 +589,16 @@ parse_limit(
}
else
if
(
arg
[
0
]
==
'='
)
{
arg
++
;
limit
->
lms_s_soft
=
atoi
(
arg
);
if
(
strcasecmp
(
arg
,
"none"
)
==
0
)
{
limit
->
lms_s_soft
=
-
1
;
}
else
{
char
*
next
=
NULL
;
limit
->
lms_s_soft
=
strtol
(
arg
,
&
next
,
10
);
if
(
next
==
arg
||
limit
->
lms_s_soft
<
-
1
)
{
return
(
1
);
}
}
limit
->
lms_s_hard
=
0
;
}
else
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment