[libglnx] xattrs: Handle ERANGE



commit 7be21dee4d0823dd2fe127c7a13254f960e5386a
Author: Colin Walters <walters verbum org>
Date:   Tue Jan 10 22:24:12 2017 -0500

    xattrs: Handle ERANGE
    
    This is symmetric with an earlier commit which handled a transition from
    `size != 0` -> `size = 0`. Now if xattrs are added we retry.

 glnx-xattrs.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/glnx-xattrs.c b/glnx-xattrs.c
index c52cd0f..eadb6b1 100644
--- a/glnx-xattrs.c
+++ b/glnx-xattrs.c
@@ -155,6 +155,7 @@ get_xattrs_impl (const char      *path,
   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ayay)"));
   builder_initialized = TRUE;
 
+ again:
   if (path)
     bytes_read = llistxattr (path, NULL, 0);
   else
@@ -177,6 +178,11 @@ get_xattrs_impl (const char      *path,
         real_size = flistxattr (fd, xattr_names, bytes_read);
       if (real_size < 0)
         {
+          if (errno == ERANGE)
+            {
+              g_free (xattr_names);
+              goto again;
+            }
           glnx_set_prefix_error_from_errno (error, "%s", "llistxattr");
           goto out;
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]