improve security

This commit is contained in:
Syping 2019-04-14 17:22:45 +02:00
parent f01ffd0f74
commit b898a6ca69
4 changed files with 16 additions and 4 deletions

View File

@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
* mayu Mate Are You Up * mayu Mate Are You Up
* Copyright (C) 2018 Syping * Copyright (C) 2019 Syping
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
* mayu Mate Are You Up * mayu Mate Are You Up
* Copyright (C) 2018 Syping * Copyright (C) 2019 Syping
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -403,11 +403,17 @@ bool mayu::p_dropPrivileges()
{ {
#if _POSIX_SAVED_IDS #if _POSIX_SAVED_IDS
p_uid = geteuid(); p_uid = geteuid();
p_gid = getegid();
int status = seteuid(getuid()); int status = seteuid(getuid());
if (status != 0) { if (status != 0) {
QTextStream(stderr) << "Dropping of privileges has failed!" << endl; QTextStream(stderr) << "Dropping of privileges has failed!" << endl;
return false; return false;
} }
status = setegid(getgid());
if (status != 0) {
QTextStream(stderr) << "Dropping of privileges has failed!" << endl;
return false;
}
return true; return true;
#else #else
return false; return false;
@ -422,6 +428,11 @@ bool mayu::p_regainPrivileges()
QTextStream(stderr) << "Regaining of privileges has failed!" << endl; QTextStream(stderr) << "Regaining of privileges has failed!" << endl;
return false; return false;
} }
status = setegid(p_gid);
if (status != 0) {
QTextStream(stderr) << "Regaining of privileges has failed!" << endl;
return false;
}
return true; return true;
#else #else
return false; return false;

3
mayu.h
View File

@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
* mayu Mate Are You Up * mayu Mate Are You Up
* Copyright (C) 2018 Syping * Copyright (C) 2019 Syping
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -82,6 +82,7 @@ private:
bool p_clean; bool p_clean;
#ifdef PRIVILEGE_DROP_REQUIRED #ifdef PRIVILEGE_DROP_REQUIRED
uid_t p_uid; uid_t p_uid;
gid_t p_gid;
#endif #endif
}; };

View File

@ -1,6 +1,6 @@
#/***************************************************************************** #/*****************************************************************************
#* mayu Mate Are You Up #* mayu Mate Are You Up
#* Copyright (C) 2018 Syping #* Copyright (C) 2019 Syping
#* #*
#* Licensed under the Apache License, Version 2.0 (the "License"); #* Licensed under the Apache License, Version 2.0 (the "License");
#* you may not use this file except in compliance with the License. #* you may not use this file except in compliance with the License.