From 2ed08a30777ebf7598484ee82aa700dba88888c5 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Thu, 2 Jan 2025 13:41:39 +0900 Subject: [PATCH] Fix symlink UID/GID force setting (file v3) --- src/archiver.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/archiver.c b/src/archiver.c index 717c755..b2e512a 100644 --- a/src/archiver.c +++ b/src/archiver.c @@ -4415,18 +4415,27 @@ int simple_archiver_write_v3(FILE *out_f, SDArchiverState *state, } u32 = stat_buf.st_uid; + if (state->parsed->flags & 0x400) { + u32 = state->parsed->uid; + } simple_archiver_helper_32_bit_be(&u32); if (fwrite(&u32, 4, 1, out_f) != 1) { return SDAS_FAILED_TO_WRITE; } u32 = stat_buf.st_gid; + if (state->parsed->flags & 0x800) { + u32 = state->parsed->gid; + } simple_archiver_helper_32_bit_be(&u32); if (fwrite(&u32, 4, 1, out_f) != 1) { return SDAS_FAILED_TO_WRITE; } u32 = stat_buf.st_uid; + if (state->parsed->flags & 0x400) { + u32 = state->parsed->uid; + } char *username = simple_archiver_hash_map_get( state->parsed->users_infos.UidToUname, &u32, @@ -4453,6 +4462,9 @@ int simple_archiver_write_v3(FILE *out_f, SDArchiverState *state, } u32 = stat_buf.st_gid; + if (state->parsed->flags & 0x800) { + u32 = state->parsed->gid; + } char *groupname = simple_archiver_hash_map_get( state->parsed->users_infos.GidToGname, &u32, -- 2.49.0