diff options
author | Christopher Ferris <cferris@google.com> | 2021-10-08 12:05:31 -0700 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-11-24 23:20:28 +0000 |
commit | f0a760b3a154ad328c682ec8559287befff14945 (patch) | |
tree | d29110f02a00665a9296772627d02f532c5ff41b | |
parent | 22a4fbc386b3997b3f5a9a9d85610f6dfaf626d9 (diff) |
Do not write past end of inotify event structure.
Bug: 202159709
Test: None yet.
Change-Id: If80ed957aaa93c03a97b57e818e7783fa6e38242
(cherry picked from commit ce87c786116557e89f9da95f550d6816aeaca67e)
(cherry picked from commit 85d7266a7273f962f40987c5e07370c5e7dc0c72)
Merged-In:If80ed957aaa93c03a97b57e818e7783fa6e38242
-rw-r--r-- | minui/events.cpp | 8 |
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; } |