Make clear SID delete the file
This allows us to recover in situations where we manage to clear the SID in GateKeeper but fail to remove the password in LockSettingsService. Change-Id: Ib64ead137632f9615745a414c90a9b66b847134f
This commit is contained in:
parent
44dd33a2ef
commit
dcb3fbdaa4
1 changed files with 11 additions and 2 deletions
|
@ -63,7 +63,7 @@ public:
|
|||
sprintf(filename, "%u", uid);
|
||||
int fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR);
|
||||
if (fd < 0) {
|
||||
ALOGW("could not open file: %s: %s", filename, strerror(errno));
|
||||
ALOGE("could not open file: %s: %s", filename, strerror(errno));
|
||||
return;
|
||||
}
|
||||
write(fd, &sid, sizeof(sid));
|
||||
|
@ -88,6 +88,15 @@ public:
|
|||
return sid;
|
||||
}
|
||||
|
||||
void clear_sid(uint32_t uid) {
|
||||
char filename[21];
|
||||
sprintf(filename, "%u", uid);
|
||||
if (remove(filename) < 0) {
|
||||
ALOGE("%s: could not remove file [%s], attempting 0 write", __func__, strerror(errno));
|
||||
store_sid(uid, 0);
|
||||
}
|
||||
}
|
||||
|
||||
virtual status_t enroll(uint32_t uid,
|
||||
const uint8_t *current_password_handle, uint32_t current_password_handle_length,
|
||||
const uint8_t *current_password, uint32_t current_password_length,
|
||||
|
@ -181,7 +190,7 @@ public:
|
|||
ALOGE("%s: permission denied for [%d:%d]", __func__, calling_pid, calling_uid);
|
||||
return;
|
||||
}
|
||||
store_sid(uid, 0);
|
||||
clear_sid(uid);
|
||||
}
|
||||
|
||||
virtual status_t dump(int fd, const Vector<String16> &) {
|
||||
|
|
Loading…
Reference in a new issue