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:
Andres Morales 2015-04-17 09:00:28 -07:00
parent 44dd33a2ef
commit dcb3fbdaa4

View file

@ -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> &) {