summaryrefslogtreecommitdiff
path: root/lib/uniconv
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2019-03-09 00:01:47 +0100
committerBruno Haible <bruno@clisp.org>2019-03-09 00:04:48 +0100
commitf6f567a94d1f34b96ae05e2354bfaa994c9de840 (patch)
treef24ec04c71cbd3b1731b06283a10388235002bcd /lib/uniconv
parent7e7501fa24bcd2e1484fee5648d88b8d94f0bf38 (diff)
downloadgnulib-f6f567a94d1f34b96ae05e2354bfaa994c9de840.tar.gz
unistr/*, uniconv/*: Fix undefined behaviour.
Reported by Jeffrey Walton <noloader@gmail.com>. * lib/unistr/u-cpy.h (FUNC): Don't invoke memcpy with a zero size. * lib/unistr/u-cpy-alloc.h (FUNC): Likewise. * lib/uniconv/u8-conv-from-enc.c (u8_conv_from_encoding): Likewise. * lib/uniconv/u8-conv-to-enc.c (u8_conv_to_encoding): Likewise.
Diffstat (limited to 'lib/uniconv')
-rw-r--r--lib/uniconv/u8-conv-from-enc.c3
-rw-r--r--lib/uniconv/u8-conv-to-enc.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/uniconv/u8-conv-from-enc.c b/lib/uniconv/u8-conv-from-enc.c
index 623dc1f9a2..f8e9bd920f 100644
--- a/lib/uniconv/u8-conv-from-enc.c
+++ b/lib/uniconv/u8-conv-from-enc.c
@@ -77,7 +77,8 @@ u8_conv_from_encoding (const char *fromcode,
}
}
- memcpy ((char *) result, src, srclen);
+ if (srclen > 0)
+ memcpy ((char *) result, src, srclen);
*lengthp = srclen;
return result;
}
diff --git a/lib/uniconv/u8-conv-to-enc.c b/lib/uniconv/u8-conv-to-enc.c
index ff0bc644b8..56e312198f 100644
--- a/lib/uniconv/u8-conv-to-enc.c
+++ b/lib/uniconv/u8-conv-to-enc.c
@@ -60,7 +60,8 @@ u8_conv_to_encoding (const char *tocode,
}
}
- memcpy (result, (const char *) src, srclen);
+ if (srclen > 0)
+ memcpy (result, (const char *) src, srclen);
*lengthp = srclen;
return result;
}