X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstring%2Fstrerror_r.c;h=da26b4fe9875a13839ce0b105fade0c13fc12712;hb=6688a778b0419eab32e715f269319248edee9da5;hp=6fdd4ce2c844530222a974d3b543a002bec4e04c;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/string/strerror_r.c b/src/string/strerror_r.c index 6fdd4ce2..da26b4fe 100644 --- a/src/string/strerror_r.c +++ b/src/string/strerror_r.c @@ -1,11 +1,20 @@ #include #include +#include "libc.h" int strerror_r(int err, char *buf, size_t buflen) { char *msg = strerror(err); - if (strlen(msg) >= buflen) + size_t l = strlen(msg); + if (l >= buflen) { + if (buflen) { + memcpy(buf, msg, buflen-1); + buf[buflen-1] = 0; + } return ERANGE; - strcpy(buf, msg); + } + memcpy(buf, msg, l+1); return 0; } + +weak_alias(strerror_r, __xpg_strerror_r);