diff --git a/rfc2047.c b/rfc2047.c index c152922..1cfec5c 100644 --- a/rfc2047.c +++ b/rfc2047.c @@ -130,9 +130,12 @@ blaze822_decode_rfc2047(char *dst, char *src, size_t dlen, char *tgtenc) iconv_t ic = (iconv_t)-1; char *srcenc = 0; + char *startdst = dst; + size_t startdlen = dlen; + char *b = src; - // use memmem + // XXX use memmem char *s = strstr(src, "=?"); if (!s) goto nocodeok; @@ -249,6 +252,12 @@ blaze822_decode_rfc2047(char *dst, char *src, size_t dlen, char *tgtenc) dlen--; } + if (memchr(startdst, 0, dst - startdst)) { + dst = startdst; + dlen = startdlen; + goto nocodeok; + } + *dst = 0; if (ic != (iconv_t)-1)