/[radius]/radius/radiusd/radius.c
ViewVC logotype

Diff of /radius/radiusd/radius.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.62 by gray, Fri Oct 31 18:23:33 2003 UTC revision 1.63 by gray, Sat Nov 1 13:47:55 2003 UTC
# Line 217  radius_acct_req_decode(struct sockaddr_i Line 217  radius_acct_req_decode(struct sockaddr_i
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    
# Line 243  void Line 245  void
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;
# Line 267  _extract_pairs(RADIUS_REQ *req, int prop Line 267  _extract_pairs(RADIUS_REQ *req, int prop
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    

Legend:
Removed from v.1.62  
changed lines
  Added in v.1.63

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26