]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
cpio: Fix -R memory leak 2939/head
authorTobias Stoeckmann <tobias@stoeckmann.org>
Fri, 20 Mar 2026 12:40:19 +0000 (13:40 +0100)
committerTobias Stoeckmann <tobias@stoeckmann.org>
Fri, 20 Mar 2026 12:40:19 +0000 (13:40 +0100)
If the -R command line argument is supplied with user/group names
multiple times, memory leaks occur.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
cpio/cpio.c

index 9a6a558d11d3dd3c9aad7d0b0964f2399a2898a7..5e8bdc51fb5744ec177ac2f51fd0cc6f12b4c24b 100644 (file)
@@ -323,12 +323,16 @@ main(int argc, char *argv[])
                        }
                        if (owner.uid != -1)
                                cpio->uid_override = owner.uid;
-                       if (owner.uname != NULL)
+                       if (owner.uname != NULL) {
+                               free(cpio->uname_override);
                                cpio->uname_override = owner.uname;
+                       }
                        if (owner.gid != -1)
                                cpio->gid_override = owner.gid;
-                       if (owner.gname != NULL)
+                       if (owner.gname != NULL) {
+                               free(cpio->gname_override);
                                cpio->gname_override = owner.gname;
+                       }
                        break;
                case 'r': /* POSIX 1997 */
                        cpio->option_rename = 1;