Commit Diff


commit - c884fd0a8efbd1c76504f46ddb5b688134983a3a
commit + 9a02f8b79138972ddde059e5683108d07b409289
blob - a41a721678814c6e3adef116e9e6445a894d022a
blob + 72e00488bedc8ea49b3e20af7eb76ec82839bfa3
--- lib/error.c
+++ lib/error.c
@@ -87,9 +87,10 @@ got_error_from_errno(const char *prefix)
 {
 	struct got_custom_error *cerr = get_custom_err();
 	struct got_error *err = &cerr->err;
+	char strerr[128];
 
-	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s", prefix,
-	    strerror(errno));
+	strerror_r(errno, strerr, sizeof(strerr));
+	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s", prefix, strerr);
 
 	err->code = GOT_ERR_ERRNO;
 	err->msg = cerr->msg;
@@ -101,9 +102,11 @@ got_error_from_errno2(const char *prefix, const char *
 {
 	struct got_custom_error *cerr = get_custom_err();
 	struct got_error *err = &cerr->err;
+	char strerr[128];
 
+	strerror_r(errno, strerr, sizeof(strerr));
 	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s: %s", prefix, prefix2,
-	    strerror(errno));
+	    strerr);
 
 	err->code = GOT_ERR_ERRNO;
 	err->msg = cerr->msg;
@@ -116,9 +119,11 @@ got_error_from_errno3(const char *prefix, const char *
 {
 	struct got_custom_error *cerr = get_custom_err();
 	struct got_error *err = &cerr->err;
+	char strerr[128];
 
+	strerror_r(errno, strerr, sizeof(strerr));
 	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s: %s: %s", prefix,
-	    prefix2, prefix3, strerror(errno));
+	    prefix2, prefix3, strerr);
 
 	err->code = GOT_ERR_ERRNO;
 	err->msg = cerr->msg;
@@ -131,13 +136,15 @@ got_error_from_errno_fmt(const char *fmt, ...)
 	struct got_custom_error *cerr = get_custom_err();
 	struct got_error *err = &cerr->err;
 	char buf[PATH_MAX * 4];
+	char strerr[128];
 	va_list ap;
 
 	va_start(ap, fmt);
 	vsnprintf(buf, sizeof(buf), fmt, ap);
 	va_end(ap);
 
-	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s", buf, strerror(errno));
+	strerror_r(errno, strerr, sizeof(strerr));
+	snprintf(cerr->msg, sizeof(cerr->msg), "%s: %s", buf, strerr);
 
 	err->code = GOT_ERR_ERRNO;
 	err->msg = cerr->msg;