Re: Att rewrite output missing last char.



Alan DeKok wrote:
Arran Cudbard-Bell wrote:
...
rlm_attr_rewrite: Changed value for attribute Calling-Station-Id from '00-17-f2-31-b4-81' to '0017f231b48'

Seems to be missing last char of value...

  Try the attached patch.

  Alan DeKok.
--
  http://deployingradius.com       - The web site of the book
  http://deployingradius.com/blog/ - The blog


------------------------------------------------------------------------

Index: src/modules/rlm_attr_rewrite/rlm_attr_rewrite.c
===================================================================
RCS file: /source/radiusd/src/modules/rlm_attr_rewrite/rlm_attr_rewrite.c,v
retrieving revision 1.43
diff -u -r1.43 rlm_attr_rewrite.c
--- src/modules/rlm_attr_rewrite/rlm_attr_rewrite.c	17 Apr 2007 13:14:50 -0000	1.43
+++ src/modules/rlm_attr_rewrite/rlm_attr_rewrite.c	8 May 2007 13:26:26 -0000
@@ -285,9 +285,9 @@
 		
 		if ((attr_vp->type == PW_TYPE_IPADDR) &&
 		    (attr_vp->vp_strvalue[0] == '\0')) {
-		  inet_ntop(AF_INET, &(attr_vp->vp_ipaddr),
-			    attr_vp->vp_strvalue,
-			    sizeof(attr_vp->vp_strvalue));
+			inet_ntop(AF_INET, &(attr_vp->vp_ipaddr),
+				  attr_vp->vp_strvalue,
+				  sizeof(attr_vp->vp_strvalue));
 		}
ptr = new_str;
@@ -325,8 +325,9 @@
 				return ret;
 			}
- strlcpy(ptr, ptr2,len);
+			memcpy(ptr, ptr2,len);
 			ptr += len;
+			*ptr = '\0';
 			ptr2 += pmatch[0].rm_eo;
if (i == 0){
@@ -380,8 +381,9 @@
 				return ret;
 			}
 			if (replace_len){
-				strlcpy(ptr, replace_STR, replace_len);
+				memcpy(ptr, replace_STR, replace_len);
 				ptr += replace_len;
+				*ptr = '\0';
 			}
 		}
 		regfree(&preg);
@@ -392,7 +394,8 @@
 					data->attribute, attr_vp->vp_strvalue);
 			return ret;
 		}
-		strlcpy(ptr, ptr2, len);
+		memcpy(ptr, ptr2, len);
+		ptr[len] = '\0';
DEBUG2("rlm_attr_rewrite: Changed value for attribute %s from '%s' to '%s'",
 				data->attribute, attr_vp->vp_strvalue, new_str);


------------------------------------------------------------------------

- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

radius_xlat: '([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2,})[-:]?([0-9a-f]{2})[-:]?([0-9a-f]{2})'
radius_xlat:  '0019e30ccd58'
rlm_attr_rewrite: Changed value for attribute Calling-Station-Id from '00-19-e3-0c-cd-58' to '0019e30ccd58'

Works !

Thanks,
--
Arran Cudbard-Bell (A.Cudbard-Bell@sussex.ac.uk)
Authentication, Authorisation and Accounting Officer
Infrastructure Services | ENG1 E1-1-08
University Of Sussex, Brighton
EXT:01273 873900 | INT: 3900




This archive was generated by a fusion of Pipermail (Mailman edition) and MHonArc.