diff --git a/src/libsilk/skformat.c b/src/libsilk/skformat.c --- a/src/libsilk/skformat.c +++ b/src/libsilk/skformat.c @@ -657,7 +657,6 @@ fmtr_default_to_string( str = lua_tolstring(L, -1, &sz); bp = buf; if (str && sz) { - rv = 1; for (i = 0; i < sz; ++i) { switch (str[i]) { case '\\': @@ -710,15 +709,16 @@ fmtr_default_to_string( } break; } - rv = 1 + 2 * len; - if (len >= rv) { + /* ignore current buffer and encode entire + * string as hex */ + rv = 2 * sz; + if (rv < len) { for (i = 0, bp = buf; i < sz; ++i, bp += 2) { assert(bp - buf < (ssize_t)len); sprintf(bp, "%02x", str[i]); } - *bp = '\0'; - goto END; } + i = sz; break; } } diff --git a/src/rwstats/rwstatssetup.c b/src/rwstats/rwstatssetup.c --- a/src/rwstats/rwstatssetup.c +++ b/src/rwstats/rwstatssetup.c @@ -1897,7 +1897,7 @@ sidecar_key_to_ascii( * print as fully encoded */ tb = text_buf; t = text_buf_size; - i = len; + i = 0; while (i < len && t > 2) { snprintf(tb, 3, "%02x", (uint8_t)str[i]); ++i;