Skip to content

Commit

Permalink
Don't try to check RHS value in update sections when the operator is !*
Browse files Browse the repository at this point in the history
  • Loading branch information
arr2036 committed Mar 22, 2014
1 parent 5b6935c commit b037493
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/main/modcall.c
Expand Up @@ -1548,8 +1548,12 @@ static modcallable *do_compile_modupdate(modcallable *parent, UNUSED rlm_compone
/*
* If LHS is an attribute, and RHS is a literal, we can
* check that the format is correct.
*
* Unless it's a unary operator in which case map->src
* can by anything.
*/
if ((map->dst->type == VPT_TYPE_ATTR) && (map->src->type == VPT_TYPE_LITERAL)) {
if ((map->dst->type == VPT_TYPE_ATTR) && (map->src->type == VPT_TYPE_LITERAL) &&
(map->op != T_OP_CMP_FALSE)) {
VALUE_PAIR *vp;
bool ret;

Expand Down
50 changes: 50 additions & 0 deletions src/tests/keywords/update-remove-any
@@ -0,0 +1,50 @@
#
# PRE: update
#
# Remove all attributes in a list
#
update {
control:Cleartext-Password := 'hello'
reply:Filter-Id := 'filter'
}

update {
request:Tmp-String-0 := 'foobarbaz'
request:Tmp-Integer-0 := 123456789
request:Tmp-IP-Address-0 := 192.0.2.1
request:Tmp-IP-Address-0 += 192.0.2.2
control:Tmp-IP-Address-0 := 192.0.2.1
control:Tmp-IP-Address-0 += 192.0.2.3
}

if (("%{Tmp-IP-Address-0[0]}" != 192.0.2.1) || ("%{Tmp-IP-Address-0[1]}" != 192.0.2.2)) {
update {
reply:Filter-Id := 'fail'
}
}

# Remove all attributes in the control list
update {
request:Tmp-IP-Address-0 !* ANY
}

# Non Tmp-IP-Address-0 address attributes should still be in the request list
if ((Tmp-String-0 != 'foobarbaz') || (Tmp-Integer-0 != 123456789)) {
update reply {
reply:Filter-Id := 'fail'
}
}

# There should be no Tmp-IP-Address attributes in the request list
if (("%{Tmp-IP-Address-0[0]}" != '') || ("%{Tmp-IP-Address-0[1]}" != '')) {
update {
reply:Filter-Id := 'fail'
}
}

# But there should still be some in the control list
if (("%{control:Tmp-IP-Address-0[0]}" != 192.0.2.1) || ("%{control:Tmp-IP-Address-0[1]}" != 192.0.2.3)) {
update {
reply:Filter-Id := 'fail'
}
}
File renamed without changes.

0 comments on commit b037493

Please sign in to comment.