From: Ján Tomko <[email protected]>

On systems with many users, this file can be larger than BUFSIZ.
Since the file should only be editable by root and virFileReadAll
reallocates the buffer in increments as needed as opposed to
allocating for 'maxlen' upfront, set the maximum to INT_MAX.

https://gitlab.com/libvirt/libvirt/-/work_items/874

Signed-off-by: Ján Tomko <[email protected]>
---
 src/util/virutil.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/virutil.c b/src/util/virutil.c
index 187b8202dd..3e107cdae6 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -1223,7 +1223,9 @@ virGetSubIDs(virSubID **retval, const char *file)
 
     *retval = NULL;
 
-    if (virFileReadAll(file, BUFSIZ, &buf) < 0)
+    /* We trust the source of the file so we set the limit absurdly high.
+     * For smaller files, the helper function will not allocate as much space 
*/
+    if (virFileReadAll(file, INT_MAX, &buf) < 0)
         return -1;
 
     lines = g_strsplit(buf, "\n", 0);
-- 
2.54.0

Reply via email to