592 |
{ |
{ |
593 |
VALUE_PAIR *request_pairs = req->request; |
VALUE_PAIR *request_pairs = req->request; |
594 |
char newname[AUTH_STRING_LEN]; |
char newname[AUTH_STRING_LEN]; |
|
char *name; |
|
595 |
VALUE_PAIR *name_pair; |
VALUE_PAIR *name_pair; |
596 |
VALUE_PAIR *orig_name_pair; |
VALUE_PAIR *orig_name_pair; |
597 |
VALUE_PAIR *tmp; |
VALUE_PAIR *tmp; |
605 |
* Check for valid input, zero length names not permitted |
* Check for valid input, zero length names not permitted |
606 |
*/ |
*/ |
607 |
if ((name_pair = avl_find(request_pairs, DA_USER_NAME)) == NULL) { |
if ((name_pair = avl_find(request_pairs, DA_USER_NAME)) == NULL) { |
608 |
name = NULL; |
name_pair = avp_create(DA_USER_NAME, 0, "", 0); |
609 |
orig_name_pair = NULL; |
orig_name_pair = NULL; |
610 |
} else { |
} else { |
|
name = name_pair->avp_strvalue; |
|
611 |
orig_name_pair = avp_dup(name_pair); |
orig_name_pair = avp_dup(name_pair); |
612 |
orig_name_pair->attribute = DA_ORIG_USER_NAME; |
orig_name_pair->attribute = DA_ORIG_USER_NAME; |
613 |
orig_name_pair->name = "Orig-User-Name"; |
orig_name_pair->name = "Orig-User-Name"; |
614 |
} |
} |
|
|
|
|
if (name == NULL || name[0] == 0) |
|
|
/* Will be complained about later. */ |
|
|
return 0; |
|
615 |
|
|
616 |
debug(1, ("called for `%s'", name)); |
debug(1, ("called for `%s'", name_pair->avp_strvalue)); |
617 |
|
|
618 |
/* if Framed-Protocol is present but Service-Type is missing, add |
/* if Framed-Protocol is present but Service-Type is missing, add |
619 |
Service-Type = Framed-User. */ |
Service-Type = Framed-User. */ |
629 |
int do_strip; |
int do_strip; |
630 |
VALUE_PAIR *add; |
VALUE_PAIR *add; |
631 |
|
|
632 |
name = name_pair->avp_strvalue; |
if (matches(req, name_pair->avp_strvalue, i, newname)) |
|
|
|
|
if (matches(req, name, i, newname)) |
|
633 |
continue; |
continue; |
634 |
|
|
635 |
matched++; |
matched++; |
672 |
} |
} |
673 |
} |
} |
674 |
|
|
675 |
debug(1, ("newname is `%s', username is `%s'", |
debug(1, ("new name is `%s'", name_pair->avp_strvalue)); |
|
newname, name_pair->avp_strvalue)); |
|
676 |
|
|
677 |
/* fix-up the string length */ |
/* fix-up the string length */ |
678 |
name_pair->avp_strlength = strlen(name_pair->avp_strvalue); |
name_pair->avp_strlength = strlen(name_pair->avp_strvalue); |
694 |
break; |
break; |
695 |
} |
} |
696 |
|
|
697 |
if (matched) |
if (matched) { |
698 |
avl_add_pair (&request_pairs, orig_name_pair); |
if (orig_name_pair) |
699 |
else |
avl_add_pair(&request_pairs, orig_name_pair); |
700 |
avp_free (orig_name_pair); |
else |
701 |
|
avl_add_pair(&request_pairs, name_pair); |
702 |
|
} else { |
703 |
|
if (orig_name_pair) |
704 |
|
avp_free(orig_name_pair); |
705 |
|
else |
706 |
|
avp_free(name_pair); |
707 |
|
} |
708 |
|
|
709 |
return 0; |
return 0; |
710 |
} |
} |