projects
/
freeradius.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Enable building #WITHOUT_PROXY
[freeradius.git]
/
src
/
modules
/
rlm_attr_filter
/
rlm_attr_filter.c
diff --git
a/src/modules/rlm_attr_filter/rlm_attr_filter.c
b/src/modules/rlm_attr_filter/rlm_attr_filter.c
index
e9ef08d
..
cb8f61c
100644
(file)
--- a/
src/modules/rlm_attr_filter/rlm_attr_filter.c
+++ b/
src/modules/rlm_attr_filter/rlm_attr_filter.c
@@
-102,7
+102,7
@@
static int getattrsfile(const char *filename, PAIR_LIST **pair_list)
* and we ignore Fall-Through,
* then bitch about it, giving a good warning message.
*/
* and we ignore Fall-Through,
* then bitch about it, giving a good warning message.
*/
-
if (!(vp->attribute & ~0xffff
) &&
+
if ((vp->vendor == 0
) &&
(vp->attribute > 0xff) &&
(vp->attribute > 1000)) {
log_debug("[%s]:%d WARNING! Check item \"%s\"\n"
(vp->attribute > 0xff) &&
(vp->attribute > 1000)) {
log_debug("[%s]:%d WARNING! Check item \"%s\"\n"
@@
-166,7
+166,7
@@
static int attr_filter_instantiate(CONF_SECTION *conf, void **instance)
* Common attr_filter checks
*/
static int attr_filter_common(void *instance, REQUEST *request,
* Common attr_filter checks
*/
static int attr_filter_common(void *instance, REQUEST *request,
-
VALUE_PAIR **inpu
t)
+
RADIUS_PACKET *packe
t)
{
struct attr_filter_instance *inst = instance;
VALUE_PAIR *vp;
{
struct attr_filter_instance *inst = instance;
VALUE_PAIR *vp;
@@
-177,12
+177,17
@@
static int attr_filter_common(void *instance, REQUEST *request,
int found = 0;
int pass, fail = 0;
char *keyname = NULL;
int found = 0;
int pass, fail = 0;
char *keyname = NULL;
+ VALUE_PAIR **input;
char buffer[256];
char buffer[256];
+ if (!packet) return RLM_MODULE_NOOP;
+
+ input = &(packet->vps);
+
if (!inst->key) {
VALUE_PAIR *namepair;
if (!inst->key) {
VALUE_PAIR *namepair;
- namepair = pairfind(request->packet->vps, PW_REALM);
+ namepair = pairfind(request->packet->vps, PW_REALM
, 0
);
if (!namepair) {
return (RLM_MODULE_NOOP);
}
if (!namepair) {
return (RLM_MODULE_NOOP);
}
@@
-224,7
+229,8
@@
static int attr_filter_common(void *instance, REQUEST *request,
for (check_item = pl->check;
check_item != NULL;
check_item = check_item->next) {
for (check_item = pl->check;
check_item != NULL;
check_item = check_item->next) {
- if (check_item->attribute == PW_FALL_THROUGH) {
+ if ((check_item->attribute == PW_FALL_THROUGH) &&
+ (check_item->vp_integer == 1)) {
fall_through = 1;
continue;
}
fall_through = 1;
continue;
}
@@
-269,7
+275,7
@@
static int attr_filter_common(void *instance, REQUEST *request,
* is always true.
*/
if ((check_item->attribute == PW_VENDOR_SPECIFIC) &&
* is always true.
*/
if ((check_item->attribute == PW_VENDOR_SPECIFIC) &&
- (
VENDOR(vp->attribute)
!= 0) &&
+ (
vp->vendor
!= 0) &&
(check_item->operator == T_OP_CMP_TRUE)) {
pass++;
continue;
(check_item->operator == T_OP_CMP_TRUE)) {
pass++;
continue;
@@
-310,12
+316,12
@@
static int attr_filter_common(void *instance, REQUEST *request,
if (request->packet->code == PW_AUTHENTICATION_REQUEST) {
request->username = pairfind(request->packet->vps,
if (request->packet->code == PW_AUTHENTICATION_REQUEST) {
request->username = pairfind(request->packet->vps,
- PW_STRIPPED_USER_NAME);
+ PW_STRIPPED_USER_NAME
, 0
);
if (!request->username)
request->username = pairfind(request->packet->vps,
if (!request->username)
request->username = pairfind(request->packet->vps,
- PW_USER_NAME);
+ PW_USER_NAME
, 0
);
request->password = pairfind(request->packet->vps,
request->password = pairfind(request->packet->vps,
- PW_USER_PASSWORD);
+ PW_USER_PASSWORD
, 0
);
}
return RLM_MODULE_UPDATED;
}
return RLM_MODULE_UPDATED;
@@
-323,32
+329,34
@@
static int attr_filter_common(void *instance, REQUEST *request,
static int attr_filter_preacct(void *instance, REQUEST *request)
{
static int attr_filter_preacct(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->packet->vps
);
+ return attr_filter_common(instance, request,
request->packet
);
}
static int attr_filter_accounting(void *instance, REQUEST *request)
{
}
static int attr_filter_accounting(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->reply->vps
);
+ return attr_filter_common(instance, request,
request->reply
);
}
}
+#ifdef WITH_PROXY
static int attr_filter_preproxy(void *instance, REQUEST *request)
{
static int attr_filter_preproxy(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->proxy->vps
);
+ return attr_filter_common(instance, request,
request->proxy
);
}
static int attr_filter_postproxy(void *instance, REQUEST *request)
{
}
static int attr_filter_postproxy(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->proxy_reply->vps
);
+ return attr_filter_common(instance, request,
request->proxy_reply
);
}
}
+#endif
static int attr_filter_postauth(void *instance, REQUEST *request)
{
static int attr_filter_postauth(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->reply->vps
);
+ return attr_filter_common(instance, request,
request->reply
);
}
static int attr_filter_authorize(void *instance, REQUEST *request)
{
}
static int attr_filter_authorize(void *instance, REQUEST *request)
{
- return attr_filter_common(instance, request,
&request->packet->vps
);
+ return attr_filter_common(instance, request,
request->packet
);
}
}
@@
-365,8
+373,12
@@
module_t rlm_attr_filter = {
attr_filter_preacct, /* pre-acct */
attr_filter_accounting, /* accounting */
NULL, /* checksimul */
attr_filter_preacct, /* pre-acct */
attr_filter_accounting, /* accounting */
NULL, /* checksimul */
+#ifdef WITH_PROXY
attr_filter_preproxy, /* pre-proxy */
attr_filter_postproxy, /* post-proxy */
attr_filter_preproxy, /* pre-proxy */
attr_filter_postproxy, /* post-proxy */
+#else
+ NULL, NULL,
+#endif
attr_filter_postauth /* post-auth */
},
};
attr_filter_postauth /* post-auth */
},
};