Skip to content

Commit

Permalink
improved Mojo::Server::Daemon to handle setuid/setgid errors more gra…
Browse files Browse the repository at this point in the history
…cefully
  • Loading branch information
kraih committed Mar 7, 2014
1 parent ae158f2 commit 917408b
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
2 changes: 2 additions & 0 deletions Changes
@@ -1,5 +1,7 @@

4.88 2014-03-07
- Improved Mojo::Server::Daemon to handle setuid/setgid errors more
gracefully.
- Improved exception page to show better context information for templates.
- Fixed comment on last line bug in Mojo::Template.

Expand Down
10 changes: 5 additions & 5 deletions lib/Mojo/Server/Daemon.pm
@@ -1,7 +1,6 @@
package Mojo::Server::Daemon;
use Mojo::Base 'Mojo::Server';

use Carp 'croak';
use Mojo::IOLoop;
use Mojo::URL;
use POSIX;
Expand Down Expand Up @@ -34,17 +33,18 @@ sub setuidgid {
my $self = shift;

# Group
my $log = $self->app->log;
if (my $group = $self->group) {
croak qq{Group "$group" does not exist}
$log->error(qq{Group "$group" does not exist}) and return $self
unless defined(my $gid = getgrnam $group);
POSIX::setgid($gid) or croak qq{Can't switch to group "$group": $!};
POSIX::setgid($gid) or $log->error(qq{Can't switch to group "$group": $!});
}

# User
if (my $user = $self->user) {
croak qq{User "$user" does not exist}
$log->error(qq{User "$user" does not exist}) and return $self
unless defined(my $uid = getpwnam $user);
POSIX::setuid($uid) or croak qq{Can't switch to user "$user": $!};
POSIX::setuid($uid) or $log->error(qq{Can't switch to user "$user": $!});
}

return $self;
Expand Down

0 comments on commit 917408b

Please sign in to comment.