#3825: [PATCH] BUG: Fix error-checking of convert_string() ----------------------+---------------------- Reporter: flatcap | Owner: mutt-dev Type: defect | Status: new Priority: major | Milestone: Component: build | Version: 1.5.24 Resolution: | Keywords: patch ----------------------+----------------------
Comment (by tamo): I don't think your patch is necessarily correct when the return value is 1 or more. Yes, convert_string() returns 0 on success. But, whether 1+ is success or not depends on your definition of success. Apparently rfc2047_encode() defines its success as 0, only 0. That is reasonable, because the encoded string should be decoded back to the original string. http://man7.org/linux/man-pages/man3/iconv.3.html#RETURN_VALUE "The iconv() function returns the number of characters converted in a nonreversible way during this call" https://dev.mutt.org/trac/browser/rfc2047.c#L401 "If conversion failed, fromcode is assumed to be compatible with us-ascii and the original data is used." So rfc2047_encode() uses the original data if conversion -- in a reversible way -- failed. And the code is okay, except for the leak you found. So, what should we do? I don't know more about leaks than you do, but maybe we should realloc u when the return value is 1+. Anyways, it's not safe to treat 1+ as success. -- Ticket URL: <https://dev.mutt.org/trac/ticket/3825#comment:1> Mutt <http://www.mutt.org/> The Mutt mail user agent