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.