lib/privileges: prevent seg faults with asserts and require in doc
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 1 Aug 2014 23:19:44 +0000 (19:19 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 19 Aug 2014 13:58:50 +0000 (09:58 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/privileges.nit

index d91a9a6..7a5503f 100644 (file)
@@ -47,16 +47,20 @@ class UserGroup
        # Group name
        var group: nullable String
 
-       # Drop privileges of a user and set his privileges back to default (program privileges)
+       # Drop privileges of the running program to those of `self`
+       #
+       # require: `user.user_exists and (group == null or group.group_exists)`
        fun drop_privileges
        do
                var passwd = new Passwd.from_name(user)
+               assert not passwd.address_is_null
                var uid = passwd.uid
 
                var group = group
                var gid
                if group != null then
                        var gpasswd = new Group.from_name(group)
+                       assert not gpasswd.address_is_null
                        gid = gpasswd.gid
                else gid = passwd.gid