diff options
author | Ray Essick <essick@google.com> | 2021-12-08 03:26:34 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-12-08 03:26:34 +0000 |
commit | 136f9b1d8b972232a16ae1339c265e84dcd52cce (patch) | |
tree | 02c09be8a441debc20756f81aac36c1de92ff77c | |
parent | 2708f51a28a17407545267e1b34be98882f3998b (diff) | |
parent | d8c535a29fb8525aab7bbb5bd172cb0beb9db52c (diff) | |
download | av-136f9b1d8b972232a16ae1339c265e84dcd52cce.tar.gz |
Merge "Better buffer-overrun prevention" into rvc-dev am: d8c535a29f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/16230693
Change-Id: Idba61e379fafa43754375b50afdde44eceb0e71f
-rw-r--r-- | media/libmediametrics/include/media/MediaMetricsItem.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/media/libmediametrics/include/media/MediaMetricsItem.h b/media/libmediametrics/include/media/MediaMetricsItem.h index 303343f91c..e36f0a0f39 100644 --- a/media/libmediametrics/include/media/MediaMetricsItem.h +++ b/media/libmediametrics/include/media/MediaMetricsItem.h @@ -466,16 +466,15 @@ protected: template <> // static status_t extract(std::string *val, const char **bufferpptr, const char *bufferptrmax) { const char *ptr = *bufferpptr; - while (*ptr != 0) { + do { if (ptr >= bufferptrmax) { ALOGE("%s: buffer exceeded", __func__); return BAD_VALUE; } - ++ptr; - } - const size_t size = (ptr - *bufferpptr) + 1; + } while (*ptr++ != 0); + // ptr is terminator+1, == bufferptrmax if we finished entire buffer *val = *bufferpptr; - *bufferpptr += size; + *bufferpptr = ptr; return NO_ERROR; } template <> // static |