Skip to content

Commit 7c35fea

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 7c35fea

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

criu/sk-unix.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <stdlib.h>
1212
#include <dlfcn.h>
1313
#include <libgen.h>
14+
#include <string.h>
1415

1516
#include "libnetlink.h"
1617
#include "cr_options.h"
@@ -696,13 +697,17 @@ static int unix_resolve_name(int lfd, uint32_t id, struct unix_sk_desc *d, UnixS
696697
if (name[0] != '/') {
697698
if (cut_path_ending(path, name)) {
698699
pr_err("Unable too cut %s from %s\n", name, path);
699-
goto out;
700+
if (unix_resolve_name_old(lfd, id, d, ue, p)) {
701+
pr_err("unix_resolve_name: unix_resolve_name_old failed\n");
702+
goto out;
703+
}
704+
pr_debug("unix_resolve_name: unix_resolve_name_old fallback succeeded\n");
705+
} else {
706+
ue->name_dir = xstrdup(path);
707+
if (!ue->name_dir)
708+
goto out;
700709
}
701710

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

0 commit comments

Comments
 (0)