summaryrefslogtreecommitdiff
path: root/accel-pppd/radius
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/radius')
-rw-r--r--accel-pppd/radius/auth.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/accel-pppd/radius/auth.c b/accel-pppd/radius/auth.c
index 675f948..f4efe3b 100644
--- a/accel-pppd/radius/auth.c
+++ b/accel-pppd/radius/auth.c
@@ -443,8 +443,11 @@ int rad_auth_mschap_v1(struct radius_pd_t *rpd, const char *username, va_list ar
rpd->auth_req->pack->id++;
} else if (rpd->auth_req->reply) {
ra = rad_packet_find_attr(rpd->auth_req->reply, "Microsoft", "MS-CHAP-Error");
- if (ra)
- *mschap_error = ra->val.string;
+ if (ra) {
+ *mschap_error = _malloc(ra->len + 1);
+ memcpy(*mschap_error, ra->val.string, ra->len);
+ (*mschap_error)[ra->len] = 0;
+ }
}
out:
@@ -531,11 +534,17 @@ int rad_auth_mschap_v2(struct radius_pd_t *rpd, const char *username, va_list ar
rpd->auth_req->pack->id++;
} else if (rpd->auth_req->reply) {
ra = rad_packet_find_attr(rpd->auth_req->reply, "Microsoft", "MS-CHAP-Error");
- if (ra)
- *mschap_error = ra->val.string;
+ if (ra) {
+ *mschap_error = _malloc(ra->len + 1);
+ memcpy(*mschap_error, ra->val.string, ra->len);
+ (*mschap_error)[ra->len] = 0;
+ }
ra = rad_packet_find_attr(rpd->auth_req->reply, NULL, "Reply-Message");
- if (ra)
- *reply_msg = ra->val.string;
+ if (ra) {
+ *reply_msg = _malloc(ra->len + 1);
+ memcpy(*reply_msg, ra->val.string, ra->len);
+ (*reply_msg)[ra->len] = 0;
+ }
}
out: