That switch statement has no condition for *cp == "\\". Which is what I have added. (Please see patch attached to my previous message)
On Tue, Sep 7, 2010 at 12:37 PM, Alan DeKok <[email protected]> wrote: > Murray Long wrote: >> When passing variables to the perl module, >> "void fr_print_string(const char *in, size_t inlen, char *out, size_t >> outlen)" >> Escapes all special characters (including '\') > > Yes. > >> When variables are returned from perl, >> VALUE_PAIR *pairparsevalue(VALUE_PAIR *vp, const char *value) >> unescapes special characters, but ignores "\\" > > ? I'm not sure how you conclude that. The code in the v2.1.x branch > handles escaping of '\\' for "string" attributes. See pairparsevalue(), > the "while" loop: > > while (*cp && (length < (sizeof(vp->vp_strvalue) - 1))) { > char c = *cp++; > > if (c == '\\') { > switch (*cp) { > ... > case '\'': > c = '\''; > cp++; > break; > ... > >> I've patched the pairparsevalue function to handle an escaped >> backslash, which has solved my problems. However this is my first >> time looking at freeradius source, so have no idea what knock-on >> effects this will have, so please could someone review this for me. > > What code did you change? > > Alan DeKok. > - > List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html > - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

