Author: jonpryor
Date: 2006-01-15 13:29:30 -0500 (Sun, 15 Jan 2006)
New Revision: 55600

Modified:
   trunk/mcs/class/Mono.Posix/Mono.Unix/ChangeLog
   trunk/mcs/class/Mono.Posix/Mono.Unix/UnixGroupInfo.cs
   trunk/mcs/class/Mono.Posix/Mono.Unix/UnixUserInfo.cs
Log:
  * UnixUserInfo.cs: The UnixUserInfo(Native.Passwd) constructor and
    ToPasswd() should clone the underlying Native.Passwd, so
    that it doesn't get changed from underneath it.
  * UnixGroupInfo.cs: The UnixGroupInfo(Native.Group) constructor should also
    clone the provided Native.Group instance.


Modified: trunk/mcs/class/Mono.Posix/Mono.Unix/ChangeLog
===================================================================
--- trunk/mcs/class/Mono.Posix/Mono.Unix/ChangeLog      2006-01-15 18:26:17 UTC 
(rev 55599)
+++ trunk/mcs/class/Mono.Posix/Mono.Unix/ChangeLog      2006-01-15 18:29:30 UTC 
(rev 55600)
@@ -1,3 +1,11 @@
+2006-01-15  Jonathan Pryor  <[EMAIL PROTECTED]>
+
+       * UnixUserInfo.cs: The UnixUserInfo(Native.Passwd) constructor and 
+         ToPasswd() should clone the underlying Native.Passwd, so
+         that it doesn't get changed from underneath it.
+       * UnixGroupInfo.cs: The UnixGroupInfo(Native.Group) constructor should 
also
+         clone the provided Native.Group instance.
+
 2006-01-14  Jonathan Pryor  <[EMAIL PROTECTED]>
 
        * UnixGroupInfo.cs: ToGroup() should clone the underlying Native.Group, 
so

Modified: trunk/mcs/class/Mono.Posix/Mono.Unix/UnixGroupInfo.cs
===================================================================
--- trunk/mcs/class/Mono.Posix/Mono.Unix/UnixGroupInfo.cs       2006-01-15 
18:26:17 UTC (rev 55599)
+++ trunk/mcs/class/Mono.Posix/Mono.Unix/UnixGroupInfo.cs       2006-01-15 
18:29:30 UTC (rev 55600)
@@ -57,9 +57,21 @@
 
                public UnixGroupInfo (Native.Group group)
                {
-                       this.group = group;
+                       this.group = CopyGroup (group);
                }
 
+               private static Native.Group CopyGroup (Native.Group group)
+               {
+                       Native.Group g = new Native.Group ();
+
+                       g.gr_gid    = group.gr_gid;
+                       g.gr_mem    = group.gr_mem;
+                       g.gr_name   = group.gr_name;
+                       g.gr_passwd = group.gr_passwd;
+
+                       return g;
+               }
+
                public string GroupName {
                        get {return group.gr_name;}
                }
@@ -104,12 +116,7 @@
 
                public Native.Group ToGroup ()
                {
-                       Native.Group g = new Native.Group ();
-                       g.gr_gid    = group.gr_gid;
-                       g.gr_mem    = group.gr_mem;
-                       g.gr_name   = group.gr_name;
-                       g.gr_passwd = group.gr_passwd;
-                       return g;
+                       return CopyGroup (group);
                }
 
                public static UnixGroupInfo[] GetLocalGroups ()

Modified: trunk/mcs/class/Mono.Posix/Mono.Unix/UnixUserInfo.cs
===================================================================
--- trunk/mcs/class/Mono.Posix/Mono.Unix/UnixUserInfo.cs        2006-01-15 
18:26:17 UTC (rev 55599)
+++ trunk/mcs/class/Mono.Posix/Mono.Unix/UnixUserInfo.cs        2006-01-15 
18:29:30 UTC (rev 55600)
@@ -67,9 +67,24 @@
 
                public UnixUserInfo (Native.Passwd passwd)
                {
-                       this.passwd = passwd;
+                       this.passwd = CopyPasswd (passwd);
                }
 
+               private static Native.Passwd CopyPasswd (Native.Passwd pw)
+               {
+                       Native.Passwd p = new Native.Passwd ();
+
+                       p.pw_name   = pw.pw_name;
+                       p.pw_passwd = pw.pw_passwd;
+                       p.pw_uid    = pw.pw_uid;
+                       p.pw_gid    = pw.pw_gid;
+                       p.pw_gecos  = pw.pw_gecos;
+                       p.pw_dir    = pw.pw_dir;
+                       p.pw_shell  = pw.pw_shell;
+
+                       return p;
+               }
+
                public string UserName {
                        get {return passwd.pw_name;}
                }
@@ -149,7 +164,7 @@
 
                public Native.Passwd ToPasswd ()
                {
-                       return passwd;
+                       return CopyPasswd (passwd);
                }
 
                public static UnixUserInfo[] GetLocalUsers ()

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to