summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Stefani <luca020400@lineageos.org>2017-02-28 14:40:53 +0100
committerLuca Stefani <luca020400@lineageos.org>2017-02-28 14:40:53 +0100
commit7b73a212e4050d7cb1ea38aceff0e650f9d0f9ec (patch)
treea194ae93fa1d9e2b7e4ad0f954669a4c37d53f76
parent5826a44279d9eac8a11463520606a8164f096baa (diff)
parent7e152c602e8ee0e02c51475dea974aeec990dbef (diff)
downloadandroid_hardware_qcom_display-cm-14.1-caf-8952.tar.gz
android_hardware_qcom_display-cm-14.1-caf-8952.tar.bz2
android_hardware_qcom_display-cm-14.1-caf-8952.zip
Merge remote-tracking branch 'caf/LA.BR.1.3.6_rb1.14' into HEADcm-14.1-caf-8952
-rw-r--r--libmemtrack/kgsl.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/libmemtrack/kgsl.c b/libmemtrack/kgsl.c
index 5a6b07529..a2c7b1c8f 100644
--- a/libmemtrack/kgsl.c
+++ b/libmemtrack/kgsl.c
@@ -103,14 +103,26 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
continue;
}
+ if (size == 0)
+ return -EINVAL;
+
+ if (unaccounted_size + size < size)
+ return -ERANGE;
+
if (type == MEMTRACK_TYPE_GL && strcmp(line_type, "gpumem") == 0) {
if (flags[6] == 'Y') {
+ if (accounted_size + mapsize < accounted_size)
+ return -ERANGE;
+
accounted_size += mapsize;
- unaccounted_size += size - mapsize;
- } else
- unaccounted_size += size;
+ if (mapsize > size)
+ return -EINVAL;
+
+ unaccounted_size += size - mapsize;
+ } else
+ unaccounted_size += size;
} else if (type == MEMTRACK_TYPE_GRAPHICS && strcmp(line_type, "ion") == 0) {
if ( !(is_surfaceflinger == false && strcmp(line_usage, "egl_surface") == 0)) {
unaccounted_size += size;