projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'collectd-4.0' into collectd-4.1
[collectd.git]
/
src
/
common.c
diff --git
a/src/common.c
b/src/common.c
index
7555b7e
..
951bae3
100644
(file)
--- a/
src/common.c
+++ b/
src/common.c
@@
-82,13
+82,23
@@
char *sstrerror (int errnum, char *buf, size_t buflen)
temp = strerror_r (errnum, buf, buflen);
if (buf[0] == '\0')
{
temp = strerror_r (errnum, buf, buflen);
if (buf[0] == '\0')
{
- strncpy (buf, temp, buflen);
+ if ((temp != NULL) && (temp != buf) && (temp[0] != '\0'))
+ strncpy (buf, temp, buflen);
+ else
+ strncpy (buf, "strerror_r did not return "
+ "an error message", buflen);
buf[buflen - 1] = '\0';
}
}
#else
buf[buflen - 1] = '\0';
}
}
#else
- strerror_r (errnum, buf, buflen);
+ if (strerror_r (errnum, buf, buflen) != 0)
+ {
+ snprintf (buf, buflen, "Error #%i; "
+ "Additionally, strerror_r failed.",
+ errnum);
+ }
#endif /* STRERROR_R_CHAR_P */
#endif /* STRERROR_R_CHAR_P */
+ buf[buflen - 1] = '\0';
return (buf);
} /* char *sstrerror */
return (buf);
} /* char *sstrerror */