Use normal escape routines, and not special ones.
authorAlan T. DeKok <aland@freeradius.org>
Wed, 14 Sep 2016 15:03:06 +0000 (11:03 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 14 Sep 2016 15:03:06 +0000 (11:03 -0400)
src/modules/rlm_linelog/rlm_linelog.c

index c3bc263..3d4219c 100644 (file)
@@ -162,10 +162,6 @@ static size_t linelog_escape_func(UNUSED REQUEST *request,
                char *out, size_t outlen, char const *in,
                UNUSED void *arg)
 {
-       const char *p = in;
-       char *q = out;
-       size_t freespace = outlen;
-
        if (outlen == 0) return 0;
 
        if (outlen == 1) {
@@ -173,63 +169,7 @@ static size_t linelog_escape_func(UNUSED REQUEST *request,
                return 0;
        }
 
-       while (*p) {
-               int sp;
-               size_t len;
-
-               if (freespace < 2) break;
-
-               switch (*p) {
-               case '\r':
-                       sp = 'r';
-                       break;
-
-               case '\n':
-                       sp = 'n';
-                       break;
-
-               case '\t':
-                       sp = 't';
-                       break;
-
-               case '\\':
-                       sp = '\\';
-                       break;
-
-               default:
-                       sp = 0;
-                       break;
-               }
-
-               if (sp) {
-                       if (freespace < 3) break;
-
-                       *q++ = '\\';
-                       *q++ = sp;
-                       freespace -= 2;
-                       p++;
-                       continue;
-               }
-
-               if (*p >= ' ') {
-                       *(q++) = *(p++);
-                       freespace--;
-                       continue;
-               }
-
-               if (freespace < 5) break;
-
-               snprintf(q, freespace, "\\%03o", (uint8_t) *p);
-
-               len = strlen(q);
-               freespace -= len;
-               p++;
-               q += len;
-       }
-
-       *q = '\0';
-
-       return q - out;
+       return fr_prints(out, outlen, in, -1, 0);
 }
 
 static rlm_rcode_t CC_HINT(nonnull) mod_do_linelog(void *instance, REQUEST *request)