Path: blob/main/converters/iconv/files/patch-lib__converter.c
16461 views
--- lib/converter.c.orig Sun Nov 26 22:10:22 20001+++ lib/converter.c Mon Mar 18 19:49:56 20022@@ -92,14 +92,14 @@3if (ch == UCS_CHAR_NONE) {4/* Incomplete character in input buffer */5errno = EINVAL;6- return res;7+ return (size_t)(-1);8}9if (ch == UCS_CHAR_INVALID) {10/* Invalid character in source buffer */11*inbytesleft += *inbuf - ptr;12*inbuf = ptr;13errno = EILSEQ;14- return res;15+ return (size_t)(-1);16}17size = ICONV_CES_CONVERT_FROM_UCS(&(uc->to), ch,18outbuf, outbytesleft);19@@ -116,7 +116,7 @@20*inbytesleft += *inbuf - ptr;21*inbuf = ptr;22errno = E2BIG;23- return res;24+ return (size_t)(-1);25}26}27return res;28@@ -156,14 +156,24 @@29{30if (inbuf && *inbuf && inbytesleft && *inbytesleft > 0 && outbuf31&& *outbuf && outbytesleft && *outbytesleft > 0) {32- size_t len = *inbytesleft < *outbytesleft ? *inbytesleft33- : *outbytesleft;34+ size_t result, len;35+ if (*inbytesleft < *outbytesleft) {36+ result = 0;37+ len = *inbytesleft;38+ } else {39+ result = (size_t)(-1);40+ errno = E2BIG;41+ len = *outbytesleft;42+ }43bcopy(*inbuf, *outbuf, len);44*inbuf += len;45*inbytesleft -= len;46*outbuf += len;47*outbytesleft -= len;48+49+ return result;50}51+52return 0;53}54555657