* Sebastien Pouliot <sebastien@ximian.com>
*
* Copyright 2004-2009 Novell, Inc (http://www.novell.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#ifdef HAVE_CONFIG_H
#else
fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
- fbuf = g_malloc0 (fbufsize);
+ fbuf = (gchar *)g_malloc0 (fbufsize);
retval = getpwuid_r (uid, &pwd, fbuf, fbufsize, &p);
result = ((retval == 0) && (p == &pwd));
#else
fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
- fbuf = g_malloc0 (fbufsize);
+ fbuf = (gchar *)g_malloc0 (fbufsize);
retval = getpwuid_r (user, &pwd, fbuf, fbufsize, &p);
result = ((retval == 0) && (p == &pwd));
#else
MonoString*
ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token)
{
+ MonoError error;
MonoString *result = NULL;
gunichar2 *uniname = NULL;
gint32 size = 0;
+ mono_error_init (&error);
#ifdef HOST_WIN32
GetTokenInformation (token, TokenUser, NULL, size, (PDWORD)&size);
if (size > 0) {
#endif /* HOST_WIN32 */
if (size > 0) {
- result = mono_string_new_utf16 (mono_domain_get (), uniname, size);
+ result = mono_string_new_utf16_checked (mono_domain_get (), uniname, size, &error);
}
else
result = mono_string_new (mono_domain_get (), "");
if (uniname)
g_free (uniname);
+ mono_error_set_pending_exception (&error);
return result;
}
fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
- fbuf = g_malloc0 (fbufsize);
+ fbuf = (gchar *)g_malloc0 (fbufsize);
retval = getpwnam_r (utf8_name, &pwd, fbuf, fbufsize, &p);
result = ((retval == 0) && (p == &pwd));
#else
MonoArray*
ves_icall_System_Security_Principal_WindowsIdentity_GetRoles (gpointer token)
{
+ MonoError error;
MonoArray *array = NULL;
MonoDomain *domain = mono_domain_get ();
#ifdef HOST_WIN32
int i=0;
int num = tg->GroupCount;
- array = mono_array_new (domain, mono_get_string_class (), num);
+ array = mono_array_new_checked (domain, mono_get_string_class (), num, &error);
+ if (mono_error_set_pending_exception (&error)) {
+ g_free (tg);
+ return NULL;
+ }
for (i=0; i < num; i++) {
gint32 size = 0;
gunichar2 *uniname = GetSidName (NULL, tg->Groups [i].Sid, &size);
if (uniname) {
- MonoString *str = mono_string_new_utf16 (domain, uniname, size);
+ MonoString *str = mono_string_new_utf16_checked (domain, uniname, size, &error);
+ if (!is_ok (&error)) {
+ g_free (uniname);
+ g_free (tg);
+ mono_error_set_pending_exception (&error);
+ return NULL;
+ }
mono_array_setref (array, i, str);
g_free (uniname);
}
#endif
if (!array) {
/* return empty array of string, i.e. string [0] */
- array = mono_array_new (domain, mono_get_string_class (), 0);
+ array = mono_array_new_checked (domain, mono_get_string_class (), 0, &error);
+ mono_error_set_pending_exception (&error);
}
return array;
}
#else
fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
- fbuf = g_malloc0 (fbufsize);
+ fbuf = (gchar *)g_malloc0 (fbufsize);
retval = getgrgid_r ((gid_t) GPOINTER_TO_INT (group), &grp, fbuf, fbufsize, &g);
result = ((retval == 0) && (g == &grp));
#else
#else
size_t fbufsize = MONO_SYSCONF_DEFAULT_SIZE;
#endif
- fbuf = g_malloc0 (fbufsize);
+ fbuf = (gchar *)g_malloc0 (fbufsize);
retval = getgrnam_r (utf8_groupname, &grp, fbuf, fbufsize, &g);
result = ((retval == 0) && (g == &grp));
#else
void
ves_icall_System_Security_SecureString_DecryptInternal (MonoArray *data, MonoObject *scope)
{
- invoke_protected_memory_method (data, scope, FALSE);
+ MonoError error;
+ invoke_protected_memory_method (data, scope, FALSE, &error);
+ mono_error_set_pending_exception (&error);
}
void
ves_icall_System_Security_SecureString_EncryptInternal (MonoArray* data, MonoObject *scope)
{
- invoke_protected_memory_method (data, scope, TRUE);
+ MonoError error;
+ invoke_protected_memory_method (data, scope, TRUE, &error);
+ mono_error_set_pending_exception (&error);
}
-void invoke_protected_memory_method (MonoArray *data, MonoObject *scope, gboolean encrypt)
+void invoke_protected_memory_method (MonoArray *data, MonoObject *scope, gboolean encrypt, MonoError *error)
{
MonoClass *klass;
MonoMethod *method;
void *params [2];
+ mono_error_init (error);
+
if (system_security_assembly == NULL) {
system_security_assembly = mono_image_loaded ("System.Security");
if (!system_security_assembly) {
}
}
- klass = mono_class_from_name (system_security_assembly,
+ klass = mono_class_load_from_name (system_security_assembly,
"System.Security.Cryptography", "ProtectedMemory");
method = mono_class_get_method_from_name (klass, encrypt ? "Protect" : "Unprotect", 2);
params [0] = data;
params [1] = scope; /* MemoryProtectionScope.SameProcess */
- mono_runtime_invoke (method, NULL, params, NULL);
+
+ mono_runtime_invoke_checked (method, NULL, params, error);
}