217 |
return 0; |
return 0; |
218 |
} |
} |
219 |
|
|
220 |
static int crypt_attrlist[] = { DA_USER_PASSWORD, DA_CHAP_PASSWORD }; |
static void |
221 |
|
decrypt_pair(RADIUS_REQ *req, VALUE_PAIR *pair) |
222 |
|
{ |
223 |
|
if (pair->prop & AP_ENCRYPT) { |
224 |
|
char password[AUTH_STRING_LEN+1]; |
225 |
|
req_decrypt_password(password, req, pair); |
226 |
|
efree(pair->avp_strvalue); |
227 |
|
pair->avp_strvalue = estrdup(password); |
228 |
|
pair->avp_strlength = strlen(pair->avp_strvalue); |
229 |
|
} |
230 |
|
} |
231 |
|
|
232 |
VALUE_PAIR * |
VALUE_PAIR * |
233 |
radius_decrypt_request_pairs(RADIUS_REQ *req) |
radius_decrypt_request_pairs(RADIUS_REQ *req) |
234 |
{ |
{ |
235 |
VALUE_PAIR *newlist = avl_dup(req->request); |
VALUE_PAIR *newlist = avl_dup(req->request); |
236 |
VALUE_PAIR *pair; |
VALUE_PAIR *pair; |
|
char password[AUTH_STRING_LEN+1]; |
|
|
int i; |
|
237 |
|
|
238 |
for (pair = newlist; pair; pair = pair->next) |
for (pair = newlist; pair; pair = pair->next) |
239 |
for (i = 0; i < NITEMS(crypt_attrlist); i++) { |
decrypt_pair(req, pair); |
240 |
if (pair->attribute == crypt_attrlist[i]) { |
|
|
req_decrypt_password(password, req, pair); |
|
|
efree(pair->avp_strvalue); |
|
|
pair->avp_strvalue = estrdup(password); |
|
|
pair->avp_strlength = strlen(pair->avp_strvalue); |
|
|
} |
|
|
} |
|
241 |
return newlist; |
return newlist; |
242 |
} |
} |
243 |
|
|
245 |
radius_destroy_pairs(VALUE_PAIR **p) |
radius_destroy_pairs(VALUE_PAIR **p) |
246 |
{ |
{ |
247 |
VALUE_PAIR *pair; |
VALUE_PAIR *pair; |
|
int i; |
|
248 |
|
|
249 |
if (!p || !*p) |
if (!p || !*p) |
250 |
return; |
return; |
251 |
for (pair = *p; pair; pair = pair->next) |
for (pair = *p; pair; pair = pair->next) { |
252 |
for (i = 0; i < NITEMS(crypt_attrlist); i++) { |
if (pair->prop & (AP_ENCRYPT_RFC2138|AP_ENCRYPT_RFC2868)) |
253 |
if (pair->attribute == crypt_attrlist[i]) |
memset(pair->avp_strvalue, 0, |
254 |
memset(pair->avp_strvalue, 0, |
pair->avp_strlength); |
255 |
pair->avp_strlength); |
} |
|
} |
|
256 |
|
|
257 |
avl_free(*p); |
avl_free(*p); |
258 |
*p = NULL; |
*p = NULL; |
267 |
char password[AUTH_STRING_LEN+1]; |
char password[AUTH_STRING_LEN+1]; |
268 |
int found = 0; |
int found = 0; |
269 |
|
|
270 |
for (pair = req->request; !found && pair; pair = pair->next) |
for (pair = req->request; !found && pair; pair = pair->next) |
271 |
for (i = 0; i < NITEMS(crypt_attrlist); i++) { |
if (pair->prop & |
272 |
if (pair->attribute == crypt_attrlist[i] |
(prop|AP_ENCRYPT_RFC2138|AP_ENCRYPT_RFC2868)) { |
273 |
&& (pair->prop & prop)) { |
found = 1; |
274 |
found = 1; |
break; |
|
break; |
|
|
} |
|
275 |
} |
} |
276 |
|
|
277 |
if (!found) |
if (!found) |
278 |
return NULL; |
return NULL; |
279 |
|
|
280 |
newlist = avl_dup(req->request); |
newlist = avl_dup(req->request); |
281 |
for (pair = newlist; pair; pair = pair->next) |
for (pair = newlist; pair; pair = pair->next) { |
282 |
for (i = 0; i < NITEMS(crypt_attrlist); i++) { |
if (pair->prop & prop) |
283 |
if (pair->attribute == crypt_attrlist[i] |
decrypt_pair(req, pair); |
284 |
&& (pair->prop & prop)) { |
} |
|
req_decrypt_password(password, req, pair); |
|
|
efree(pair->avp_strvalue); |
|
|
pair->avp_strvalue = estrdup(password); |
|
|
pair->avp_strlength = strlen(pair->avp_strvalue); |
|
|
} |
|
|
} |
|
285 |
return newlist; |
return newlist; |
286 |
} |
} |
287 |
|
|