aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/set-exec-name.diff
blob: 5c4d954f28f98e4bfb87d66bd20e2b2342919656 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--- openjdk/jdk/src/solaris/bin/java_md.c.orig
+++ openjdk/jdk/src/solaris/bin/java_md.c
@@ -688,8 +688,19 @@
         char buf[PATH_MAX+1];
         int len = readlink(self, buf, PATH_MAX);
         if (len >= 0) {
+	    const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL};
+	    const char **prefix;
+	    size_t prefix_len = 0;
             buf[len] = '\0';            /* readlink doesn't nul terminate */
-            exec_path = JLI_StringDup(buf);
+	    for (prefix = prefixes; *prefix; prefix++) {
+	      prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix);
+	      if (!strncmp(*prefix, buf, prefix_len)) {
+		    prefix_len--;
+		    break;
+	      }
+	      prefix_len = 0;
+	    }
+            exec_path = JLI_StringDup(buf + prefix_len);
         }
     }
 #else /* !__solaris__ && !__linux */
--- openjdk/hotspot/src/os/posix/launcher/java_md.c.orig
+++ openjdk/hotspot/src/os/posix/launcher/java_md.c
@@ -967,8 +967,19 @@
         char buf[PATH_MAX+1];
         int len = readlink(self, buf, PATH_MAX);
         if (len >= 0) {
-            buf[len] = '\0';            /* readlink doesn't nul terminate */
-            exec_path = JLI_StringDup(buf);
+           buf[len] = '\0';            /* readlink doesn't nul terminate */
+           const char* prefixes[] = {"/cow/", "/persistmnt/", "/rofs/", "/rwfs/", "/squashmnt/", NULL};
+           const char **prefix;
+           size_t prefix_len = 0;
+           for (prefix = prefixes; *prefix; prefix++) {
+             prefix_len = strlen(buf) < strlen(*prefix) ? strlen(buf) : strlen(*prefix);
+             if (!strncmp(*prefix, buf, prefix_len)) {
+                   prefix_len--;
+                   break;
+             }
+             prefix_len = 0;
+           }
+           exec_path = JLI_StringDup(buf + prefix_len);
         }
     }
 #else /* !__sun && !__linux */