git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Safer coding for utf8clean expansion operator
[exim.git]
/
src
/
src
/
expand.c
diff --git
a/src/src/expand.c
b/src/src/expand.c
index 0b6513ccdab09cac3ecfa336f9ba5e9a5ce99039..e3e1c783320f8cc17795a72fc2851554a29793c7 100644
(file)
--- a/
src/src/expand.c
+++ b/
src/src/expand.c
@@
-6370,18
+6370,16
@@
while (*s != 0)
case EOP_UTF8CLEAN:
{
case EOP_UTF8CLEAN:
{
- int seq_len, index = 0;
+ int seq_len
= 0
, index = 0;
int bytes_left = 0;
int bytes_left = 0;
+ long codepoint = -1;
uschar seq_buff[4]; /* accumulate utf-8 here */
while (*sub != 0)
{
uschar seq_buff[4]; /* accumulate utf-8 here */
while (*sub != 0)
{
- int complete;
- long codepoint;
- uschar c;
+ int complete = 0;
+ uschar c = *sub++;
- complete = 0;
- c = *sub++;
if (bytes_left)
{
if ((c & 0xc0) != 0x80)
if (bytes_left)
{
if ((c & 0xc0) != 0x80)
@@
-6396,7
+6394,7
@@
while (*s != 0)
if (--bytes_left == 0) /* codepoint complete */
{
if(codepoint > 0x10FFFF) /* is it too large? */
if (--bytes_left == 0) /* codepoint complete */
{
if(codepoint > 0x10FFFF) /* is it too large? */
- complete = -1; /* error */
+ complete = -1; /* error
(RFC3629 limit)
*/
else
{ /* finished; output utf-8 sequence */
yield = string_cat(yield, &size, &ptr, seq_buff, seq_len);
else
{ /* finished; output utf-8 sequence */
yield = string_cat(yield, &size, &ptr, seq_buff, seq_len);