#else /* not PLATFORM_WIN32 */
+#define MONO_SYSCONF_DEFAULT_SIZE ((size_t) 1024)
+
+/*
+ * Ensure we always get a valid (usable) value from sysconf.
+ * In case of error, we return the default value.
+ */
+static size_t mono_sysconf (int name)
+{
+ size_t size = (size_t) sysconf (name);
+ /* default value */
+ return (size == -1) ? MONO_SYSCONF_DEFAULT_SIZE : size;
+}
+
static gchar*
GetTokenName (uid_t uid)
#ifdef HAVE_GETPWUID_R
#ifdef _SC_GETPW_R_SIZE_MAX
- fbufsize = (size_t) sysconf (_SC_GETPW_R_SIZE_MAX);
+ fbufsize = mono_sysconf (_SC_GETPW_R_SIZE_MAX);
#else
- fbufsize = (size_t) 1024;
+ fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
fbuf = g_malloc0 (fbufsize);
retval = getpwuid_r (uid, &pwd, fbuf, fbufsize, &p);
#ifdef HAVE_GETPWUID_R
#ifdef _SC_GETPW_R_SIZE_MAX
- fbufsize = (size_t) sysconf (_SC_GETPW_R_SIZE_MAX);
+ fbufsize = mono_sysconf (_SC_GETPW_R_SIZE_MAX);
#else
- fbufsize = (size_t) 1024;
+ fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
fbuf = g_malloc0 (fbufsize);
#ifdef HAVE_GETPWNAM_R
#ifdef _SC_GETPW_R_SIZE_MAX
- fbufsize = (size_t) sysconf (_SC_GETPW_R_SIZE_MAX);
+ fbufsize = mono_sysconf (_SC_GETPW_R_SIZE_MAX);
#else
- fbufsize = (size_t) 1024;
+ fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
fbuf = g_malloc0 (fbufsize);
if (uniname) {
MonoString *str = mono_string_new_utf16 (domain, uniname, size);
- mono_array_set (array, MonoString *, i, str);
+ mono_array_setref (array, i, str);
g_free (uniname);
}
}
#ifdef HAVE_GETGRGID_R
#ifdef _SC_GETGR_R_SIZE_MAX
- fbufsize = (size_t) sysconf (_SC_GETGR_R_SIZE_MAX);
+ fbufsize = mono_sysconf (_SC_GETGR_R_SIZE_MAX);
#else
- fbufsize = (size_t) 1024;
+ fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
fbuf = g_malloc0 (fbufsize);
retval = getgrgid_r ((gid_t) GPOINTER_TO_INT (group), &grp, fbuf, fbufsize, &g);
gchar *fbuf;
gint32 retval;
#ifdef _SC_GETGR_R_SIZE_MAX
- size_t fbufsize = (size_t) sysconf (_SC_GETGR_R_SIZE_MAX);
+ size_t fbufsize = mono_sysconf (_SC_GETGR_R_SIZE_MAX);
#else
- size_t fbufsize = (size_t) 1024;
+ size_t fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
fbuf = g_malloc0 (fbufsize);
retval = getgrnam_r (utf8_groupname, &grp, fbuf, fbufsize, &g);