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.
+2019-03-08 Bruno Haible <bruno@clisp.org>
+
+ 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.
+
2019-03-08 Bruno Haible <bruno@clisp.org>
unistr/u8-cmp: Fix undefined behaviour.
}
}
- memcpy ((char *) result, src, srclen);
+ if (srclen > 0)
+ memcpy ((char *) result, src, srclen);
*lengthp = srclen;
return result;
}
}
}
- memcpy (result, (const char *) src, srclen);
+ if (srclen > 0)
+ memcpy (result, (const char *) src, srclen);
*lengthp = srclen;
return result;
}
for (; n > 0; n--)
*destptr++ = *s++;
#else
- memcpy ((char *) dest, (const char *) s, n * sizeof (UNIT));
+ if (n > 0)
+ memcpy ((char *) dest, (const char *) s, n * sizeof (UNIT));
#endif
}
return dest;
for (; n > 0; n--)
*destptr++ = *src++;
#else
- memcpy ((char *) dest, (const char *) src, n * sizeof (UNIT));
+ if (n > 0)
+ memcpy ((char *) dest, (const char *) src, n * sizeof (UNIT));
#endif
return dest;
}