This is an automated email from the ASF dual-hosted git repository.

qianzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
     new 3777b3a  Fixed `ldcache.parse` to handle excess tail data in Ubuntu 
<ld.so.cache>
3777b3a is described below

commit 3777b3a0ca01972d80aac435e057c4fe20ef8b51
Author: Saad Ur Rahman <saad.ur.rah...@gmail.com>
AuthorDate: Thu Jun 24 20:35:22 2021 +0800

    Fixed `ldcache.parse` to handle excess tail data in Ubuntu <ld.so.cache>
    
    **_[MESOS-10244](https://issues.apache.org/jira/browse/MESOS-10224)_**
    
    There is excess data on the tail end of the `ld.cache.so` file on
    `Ubuntu 21.04`. With this fix the `data` pointer check will not fail
    if it falls short of the end of the cache's buffer end.
    
    This closes #394
---
 src/linux/ldcache.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/linux/ldcache.cpp b/src/linux/ldcache.cpp
index 5a3b2f5..9c719f0 100644
--- a/src/linux/ldcache.cpp
+++ b/src/linux/ldcache.cpp
@@ -222,16 +222,16 @@ Try<vector<Entry>> parse(const string& path)
 
   // Adjust the pointer to add on the additional size of the strings
   // contained in the string table. At this point, 'data' should
-  // point to an address just beyond the end of the file.
+  // point to an address just inside or beyond the end of the file.
   data += headerNew->stringsLength;
-  if ((size_t)(data - buffer->data()) != buffer->size()) {
+  if ((size_t)(data - buffer->data()) > buffer->size()) {
     return Error("Invalid format");
   }
 
-  // Make sure the very last character in the buffer is a '\0'.
+  // Make sure the prior character to the data pointer is a '\0'.
   // This way, no matter what strings we index in the string
   // table, we know they will never run beyond the end of the
-  // file buffer when extracting them.
+  // useful data in the buffer when extracting them.
   if (*(data - 1) != '\0') {
     return Error("Invalid format");
   }

Reply via email to