OSDN Git Service

libpagemap: handle zero length memory regions
authorColin Cross <ccross@android.com>
Thu, 15 May 2014 01:20:38 +0000 (18:20 -0700)
committerColin Cross <ccross@android.com>
Thu, 15 May 2014 01:24:21 +0000 (18:24 -0700)
/proc/pid/maps may report a zero-length memory region for a 4kB
PROT_GROWSDOWN region because it subtracts 4kB for the guard page.
Return 0 instead of -1 when this occurs, and set range_out to NULL
and len to 0.  All existing callers of pm_process_pagemap_range
will not dereference range_out if len is 0.

Bug: 14683277
Change-Id: If405651ad034dda780b93fab2dc616e177a0b917

libpagemap/pm_process.c

index d1f9bb7..dcc9a55 100644 (file)
@@ -107,9 +107,15 @@ int pm_process_pagemap_range(pm_process_t *proc,
     off_t off;
     int error;
 
-    if (!proc || (low >= high) || !range_out || !len)
+    if (!proc || (low > high) || !range_out || !len)
         return -1;
 
+    if (low == high) {
+        *range_out = NULL;
+        *len = 0;
+        return 0;
+    }
+
     firstpage = low / proc->ker->pagesize;
     numpages = (high - low) / proc->ker->pagesize;