use warnings;
use strict;
use Cwd q{abs_path};
-use Data::Dumper;
+use Data::Dumper ;
use IkiWiki;
package IkiWiki;
newenviron[i]=NULL;
environ=newenviron;
- if (setregid(getegid(), -1) != 0 || setreuid(geteuid(), -1) != 0) {
- perror("failed to drop real uid/gid");
+ if (setregid(getegid(), -1) != 0 &&
+ setregid(getegid(), -1) != 0) {
+ perror("failed to drop real gid");
+ exit(1);
+ }
+ if (setreuid(geteuid(), -1) != 0 &&
+ setreuid(geteuid(), -1) != 0) {
+ perror("failed to drop real uid");
exit(1);
}
}
EOF
close OUT;
- if (system("gcc", "$wrapper.c", "-o", "$wrapper.new") != 0) {
+
+ my $cc=exists $ENV{CC} ? possibly_foolish_untaint($ENV{CC}) : 'cc';
+ if (system($cc, "$wrapper.c", "-o", "$wrapper.new") != 0) {
#translators: The parameter is a C filename.
error(sprintf(gettext("failed to compile %s"), "$wrapper.c"));
}