summaryrefslogtreecommitdiffstats
path: root/src/Hooks/CCpp.cpp
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2009-12-14 17:20:03 +0100
committerKarel Klic <kklic@redhat.com>2009-12-14 17:20:03 +0100
commitb6fbdbdee4e4a78528d765bbf4ddb1087adce5f4 (patch)
tree6af427ef59b46a9c452c4f263908f27be9b20ce5 /src/Hooks/CCpp.cpp
parenta24d2906c51e3740e6e0acf8f0093827b4e35bc3 (diff)
parentfdce1d751b45bbd0210b45989f4f4c0e092683dc (diff)
downloadabrt-b6fbdbdee4e4a78528d765bbf4ddb1087adce5f4.tar.gz
abrt-b6fbdbdee4e4a78528d765bbf4ddb1087adce5f4.tar.xz
abrt-b6fbdbdee4e4a78528d765bbf4ddb1087adce5f4.zip
Merge branch 'master' of git://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src/Hooks/CCpp.cpp')
-rw-r--r--src/Hooks/CCpp.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Hooks/CCpp.cpp b/src/Hooks/CCpp.cpp
index fdb31a5..fd789cf 100644
--- a/src/Hooks/CCpp.cpp
+++ b/src/Hooks/CCpp.cpp
@@ -216,7 +216,7 @@ int main(int argc, char** argv)
/* not an error, exit silently */
return 0;
}
- if (pid <= 0 || uid < 0)
+ if (pid <= 0 || (int)uid < 0)
{
error_msg_and_die("pid '%s' or uid '%s' are bogus", argv[2], argv[4]);
}
@@ -450,9 +450,14 @@ int main(int argc, char** argv)
create_user_core:
/* Write a core file for user */
+ struct passwd* pw = getpwuid(uid);
+ gid_t gid = pw ? pw->pw_gid : uid;
+ setgroups(1, &gid);
+ xsetregid(gid, gid);
+ xsetreuid(uid, uid);
+
errno = 0;
- if (setuid(uid) != 0
- || user_pwd == NULL
+ if (user_pwd == NULL
|| chdir(user_pwd) != 0
) {
perror_msg_and_die("can't cd to %s", user_pwd);