Skip to content

Commit 1970766

Browse files
committed
fix(dump,unix sockets): if 'name' is relative, real 'path' does not include that 'name', but 'realpath(name)' resolves to 'path', use 'cwd' as 'name_dir'
1 parent 92c0cdc commit 1970766

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

criu/sk-unix.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -696,13 +696,17 @@ static int unix_resolve_name(int lfd, uint32_t id, struct unix_sk_desc *d, UnixS
696696
if (name[0] != '/') {
697697
if (cut_path_ending(path, name)) {
698698
pr_err("Unable too cut %s from %s\n", name, path);
699-
goto out;
699+
if (unix_resolve_name_old(lfd, id, d, ue, p)) {
700+
pr_err("unix_resolve_name: unix_resolve_name_old failed\n");
701+
goto out;
702+
}
703+
pr_debug("unix_resolve_name: unix_resolve_name_old fallback succeeded\n");
704+
} else {
705+
ue->name_dir = xstrdup(path);
706+
if (!ue->name_dir)
707+
goto out;
700708
}
701709

702-
ue->name_dir = xstrdup(path);
703-
if (!ue->name_dir)
704-
goto out;
705-
706710
pr_debug("Resolved socket relative name %s to %s/%s\n", name, ue->name_dir, name);
707711
}
708712

0 commit comments

Comments
 (0)