From: Alan T. DeKok Date: Wed, 10 Sep 2014 12:26:57 +0000 (-0400) Subject: Be more flexible about parsing parameters X-Git-Tag: release_3_0_5~573 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db59840d20386718c1931268c718f02fa559da05;p=thirdparty%2Ffreeradius-server.git Be more flexible about parsing parameters --- diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index b4ec96af63b..d42352441a3 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -340,11 +340,30 @@ static ssize_t perl_xlat(void *instance, REQUEST *request, char const *fmt, char PUSHMARK(SP); - p = fmt; - while ((q = strchr(p, ' '))) { - XPUSHs(sv_2mortal(newSVpvn(p, p - q))); + p = q = fmt; + while (*p == ' ') { + p++; + q++; + } + while (*q) { + if (*q == ' ') { + XPUSHs(sv_2mortal(newSVpvn(p, q - p))); + p = q + 1; + + /* + * Don't use an empty string + */ + while (*p == ' ') p++; + q = p; + } + q++; + } - p = q + 1; + /* + * And the last bit. + */ + if (*p) { + XPUSHs(sv_2mortal(newSVpvn(p, strlen(p)))); } PUTBACK;