Always need to \0 terminate json output buffer
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 13 Feb 2015 20:08:56 +0000 (15:08 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 13 Feb 2015 20:18:09 +0000 (15:18 -0500)
src/modules/rlm_rest/rlm_rest.c

index 7cb4ddb..c7d4f63 100644 (file)
@@ -138,7 +138,10 @@ static ssize_t jsonquote_xlat(UNUSED void *instance, UNUSED REQUEST *request,
 
        for (p = fmt; *p != '\0'; p++) {
                /* Indicate truncation */
-               if (freespace < 3) return outlen + 1;
+               if (freespace < 3) {
+                       *out = '\0';
+                       return outlen + 1;
+               }
 
                if (*p == '"') {
                        *out++ = '\\';
@@ -187,6 +190,7 @@ static ssize_t jsonquote_xlat(UNUSED void *instance, UNUSED REQUEST *request,
                                *out++ = 't';
                                freespace--;
                                break;
+
                        default:
                                len = snprintf(out, freespace, "u%04X", *p);
                                if (is_truncated(len, freespace)) return (outlen - freespace) + len;
@@ -196,6 +200,8 @@ static ssize_t jsonquote_xlat(UNUSED void *instance, UNUSED REQUEST *request,
                }
        }
 
+       *out = '\0';
+
        return outlen - freespace;
 }
 /*