Ticket #1384: server.c.diff

File server.c.diff, 0.8 kB (added by iku@…, 12 months ago)

fix for src/server.c

  • src/server.c

    old new  
    759759 
    760760                        return -1; 
    761761                } 
     762#ifdef HAVE_PWD_H 
     763                /*  
     764                 * Change group before chroot, when we have access 
     765                 * to /etc/group 
     766                 * */ 
     767                if (srv->srvconf.groupname->used) { 
     768                        setgid(grp->gr_gid); 
     769                        setgroups(0, NULL); 
     770                        if (srv->srvconf.username->used) { 
     771                                initgroups(srv->srvconf.username->ptr, grp->gr_gid); 
     772                        } 
     773                } 
     774#endif 
    762775#ifdef HAVE_CHROOT 
    763776                if (srv->srvconf.changeroot->used) { 
    764777                        tzset(); 
     
    775788#endif 
    776789#ifdef HAVE_PWD_H 
    777790                /* drop root privs */ 
    778                 if (srv->srvconf.groupname->used) { 
    779                         setgid(grp->gr_gid); 
    780                         setgroups(0, NULL); 
    781                 } 
    782  
    783791                if (srv->srvconf.username->used) { 
    784                         if (srv->srvconf.groupname->used) { 
    785                                 initgroups(srv->srvconf.username->ptr, grp->gr_gid); 
    786                         } 
    787792                        setuid(pwd->pw_uid); 
    788793                } 
    789794#endif