author | Rich Felker <dalias@aerifal.cx> | 2012年06月20日 12:07:18 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012年06月20日 12:07:18 -0400 |
commit | f313a1622448de578ab0b11a881f44a02c9082e6 (patch) | |
tree | 1a1aa9a886cdadf5371cae8d7cc7f782b71c28cb /src | |
parent | 839bff64a17c1ecaed60feefd9b63554ca9cbad6 (diff) | |
download | musl-f313a1622448de578ab0b11a881f44a02c9082e6.tar.gz |
-rw-r--r-- | src/string/strerror_r.c | 10 |
diff --git a/src/string/strerror_r.c b/src/string/strerror_r.c index 6fdd4ce2..907dcf07 100644 --- a/src/string/strerror_r.c +++ b/src/string/strerror_r.c @@ -4,8 +4,14 @@ 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; } |