<div dir="ltr"><div>Seems reasonable<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 2, 2017 at 3:37 PM, Kevin Strasser <span dir="ltr"><<a href="mailto:kevin.strasser@intel.com" target="_blank">kevin.strasser@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It's possible for a buffer manager to issue the application a BO that is<br>
larger than what is requested. The out-of-bounds access issue would only<br>
apply in cases where the size of the imported buffer exceeds that of the<br>
underlying BO, as such we should only reject import requests sizes that<br>
exceed the actual size of the BO.<br>
<br>
Signed-off-by: Kevin Strasser <<a href="mailto:kevin.strasser@intel.com">kevin.strasser@intel.com</a>><br>
---<br>
 src/intel/vulkan/anv_<wbr>allocator.c | 8 ++++----<br>
 1 file changed, 4 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/src/intel/vulkan/anv_<wbr>allocator.c b/src/intel/vulkan/anv_<wbr>allocator.c<br>
index efaaebc..1fb3756 100644<br>
--- a/src/intel/vulkan/anv_<wbr>allocator.c<br>
+++ b/src/intel/vulkan/anv_<wbr>allocator.c<br>
@@ -1291,16 +1291,16 @@ anv_bo_cache_import(struct anv_device *device,<br>
       }<br>
       __sync_fetch_and_add(&bo-><wbr>refcount, 1);<br>
    } else {<br>
-      /* For security purposes, we reject BO imports where the size does not<br>
-       * match exactly.  This prevents a malicious client from passing a<br>
-       * buffer to a trusted client, lying about the size, and telling the<br>
+      /* For security purposes, we reject BO imports where the requested size<br>
+       * exceeds the actual size.  This prevents a malicious client from passing<br>
+       * a buffer to a trusted client, lying about the size, and telling the<br>
        * trusted client to try and texture from an image that goes<br>
        * out-of-bounds.  This sort of thing could lead to GPU hangs or worse<br>
        * in the trusted client.  The trusted client can protect itself against<br>
        * this sort of attack but only if it can trust the buffer size.<br>
        */<br>
       off_t import_size = lseek(fd, 0, SEEK_END);<br>
-      if (import_size == (off_t)-1 || import_size != size) {<br>
+      if (import_size == (off_t)-1 || import_size < size) {<br>
          anv_gem_close(device, gem_handle);<br>
          pthread_mutex_unlock(&cache-><wbr>mutex);<br>
          return vk_error(VK_ERROR_INVALID_<wbr>EXTERNAL_HANDLE_KHR);<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>