summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Essick <essick@google.com>2021-12-08 03:26:34 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-12-08 03:26:34 +0000
commit136f9b1d8b972232a16ae1339c265e84dcd52cce (patch)
tree02c09be8a441debc20756f81aac36c1de92ff77c
parent2708f51a28a17407545267e1b34be98882f3998b (diff)
parentd8c535a29fb8525aab7bbb5bd172cb0beb9db52c (diff)
downloadav-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.h9
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