diff options
| author | Karel Klic <kklic@redhat.com> | 2009-12-14 17:20:03 +0100 |
|---|---|---|
| committer | Karel Klic <kklic@redhat.com> | 2009-12-14 17:20:03 +0100 |
| commit | b6fbdbdee4e4a78528d765bbf4ddb1087adce5f4 (patch) | |
| tree | 6af427ef59b46a9c452c4f263908f27be9b20ce5 /src/Hooks/CCpp.cpp | |
| parent | a24d2906c51e3740e6e0acf8f0093827b4e35bc3 (diff) | |
| parent | fdce1d751b45bbd0210b45989f4f4c0e092683dc (diff) | |
| download | abrt-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.cpp | 11 |
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); |
