From 0ec65af730f7c6307a5c8e7330a31ae2b785d95d Mon Sep 17 00:00:00 2001
From: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Date: Thu, 1 Aug 2019 15:24:37 +0200
Subject: Fix xattr OOL position

We need to get the position _before_ writing the header, otherwise the
reader has no way to know the length of the value.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
---
 lib/sqfs/write_xattr.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'lib/sqfs')

diff --git a/lib/sqfs/write_xattr.c b/lib/sqfs/write_xattr.c
index 05f2775..ce606e3 100644
--- a/lib/sqfs/write_xattr.c
+++ b/lib/sqfs/write_xattr.c
@@ -84,14 +84,14 @@ static int write_value(meta_writer_t *mw, const char *value,
 	uint32_t offset;
 	uint64_t block;
 
+	meta_writer_get_position(mw, &block, &offset);
+	*value_ref_out = (block << 16) | (offset & 0xFFFF);
+
 	vent.size = htole32(strlen(value));
 
 	if (meta_writer_append(mw, &vent, sizeof(vent)))
 		return -1;
 
-	meta_writer_get_position(mw, &block, &offset);
-	*value_ref_out = (block << 16) | (offset & 0xFFFF);
-
 	if (meta_writer_append(mw, value, strlen(value)))
 		return -1;
 
-- 
cgit v1.2.3