commit | d11fbba5e1cf9ff80154b4ed6e5ce7054fe276d4 | [log] [tgz] |
---|---|---|
author | Ray Essick <essick@google.com> | Wed Dec 08 04:17:33 2021 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Wed Dec 08 04:17:33 2021 +0000 |
tree | 273cd290b0a19eda16e27848d6910799b0588cf4 | |
parent | c041d92f96eaabdbf37d430eba0bef61e925701b [diff] | |
parent | 69d5a7b78b41665945af5d9bb5618d0d40dd348a [diff] |
Merge "Better buffer-overrun prevention" into rvc-dev am: d8c535a29f am: 5351e4b349 am: 2c09c9f20e am: 69d5a7b78b Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/16230693 Change-Id: Icb184d10e5b62c8f5a340698b7d09df8ce3fa72d
diff --git a/media/libmediametrics/include/media/MediaMetricsItem.h b/media/libmediametrics/include/media/MediaMetricsItem.h index 30a2955..f2cd505 100644 --- a/media/libmediametrics/include/media/MediaMetricsItem.h +++ b/media/libmediametrics/include/media/MediaMetricsItem.h
@@ -499,16 +499,15 @@ 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