summaryrefslogtreecommitdiffstats
path: root/lib/replace/replace.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-03-29 20:53:16 +1100
committerAndrew Tridgell <tridge@samba.org>2010-03-29 21:34:29 +1100
commit686221eae28ff58fb048fdc7132e1413dedb6eb9 (patch)
treef3eb5ae4c35dd18d1128fb8d7f87577562d7213c /lib/replace/replace.c
parent7ed349caceed2524d897d957cee98ad1cdc4704c (diff)
downloadsamba-686221eae28ff58fb048fdc7132e1413dedb6eb9.tar.gz
samba-686221eae28ff58fb048fdc7132e1413dedb6eb9.tar.xz
samba-686221eae28ff58fb048fdc7132e1413dedb6eb9.zip
s4-waf: use the libreplace strerror_r if needed
Diffstat (limited to 'lib/replace/replace.c')
-rw-r--r--lib/replace/replace.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/replace/replace.c b/lib/replace/replace.c
index 6a325400f47..12716ea6d33 100644
--- a/lib/replace/replace.c
+++ b/lib/replace/replace.c
@@ -748,10 +748,15 @@ char *rep_get_current_dir_name(void)
}
#endif
-#ifndef HAVE_STRERROR_R
-char *rep_strerror_r(int errnum, char *buf, size_t buflen)
+#if !defined(HAVE_STRERROR_R) || !defined(STRERROR_R_PROTO_COMPATIBLE)
+int rep_strerror_r(int errnum, char *buf, size_t buflen)
{
- strncpy(buf, strerror(errnum), buflen);
- return buf;
+ char *s = strerror(errnum);
+ if (strlen(s)+1 > buflen) {
+ errno = ERANGE;
+ return -1;
+ }
+ strncpy(buf, s, buflen);
+ return 0;
}
#endif