summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2021-10-12 14:40:11 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-10-12 14:40:11 +0000
commite4e1b55f20f639022a80a09c7f77d444f4ded2fd (patch)
treed29110f02a00665a9296772627d02f532c5ff41b
parent6c22264a647375d6815f025b9fe81f4cad737f65 (diff)
parent488880cb431d6cdbd9fa173a3d0805a264c96090 (diff)
Do not write past end of inotify event structure. am: 187a6ec548 am: 488880cb43
Original change: https://googleplex-android-review.googlesource.com/c/platform/bootable/recovery/+/16033753 Change-Id: If8f077ba3a80b354d11ea687f360e6b2258c54cf
-rw-r--r--minui/events.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/minui/events.cpp b/minui/events.cpp
index 87f81122..863ac747 100644
--- a/minui/events.cpp
+++ b/minui/events.cpp
@@ -29,7 +29,9 @@
#include <functional>
#include <memory>
+#include <string>
+#include <android-base/strings.h>
#include <android-base/unique_fd.h>
#include "minui/minui.h"
@@ -118,12 +120,12 @@ static int inotify_cb(int fd, __unused uint32_t epevents) {
}
offset += sizeof(inotify_event) + pevent->len;
- pevent->name[pevent->len] = '\0';
- if (strncmp(pevent->name, "event", 5)) {
+ std::string event_name(pevent->name, pevent->len);
+ if (!android::base::StartsWith(event_name, "event")) {
continue;
}
- android::base::unique_fd dfd(openat(dirfd(dir.get()), pevent->name, O_RDONLY));
+ android::base::unique_fd dfd(openat(dirfd(dir.get()), event_name.c_str(), O_RDONLY));
if (dfd == -1) {
break;
}