diff options
author | Saul Wold <sgw@linux.intel.com> | 2014-11-19 10:22:52 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-12-03 12:23:58 +0000 |
commit | bc9adc175b63ff6cb4f06b0c80edc777c126d90c (patch) | |
tree | 4a49f7e5cc6c5f422e9128641d4676477baf4a02 /meta | |
parent | 85c476188ae7305269b4a1d394e4fe99024ae372 (diff) | |
download | poky-bc9adc175b63ff6cb4f06b0c80edc777c126d90c.tar.gz |
pseudo: remove older version and patches
(From OE-Core rev: 73f418ce10a801f0befc06ffe54864563aea986c)
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
6 files changed, 0 insertions, 571 deletions
diff --git a/meta/recipes-devtools/pseudo/files/0001-pseudo_has_unload-add-function.patch b/meta/recipes-devtools/pseudo/files/0001-pseudo_has_unload-add-function.patch deleted file mode 100644 index b5c81c9d3e..0000000000 --- a/meta/recipes-devtools/pseudo/files/0001-pseudo_has_unload-add-function.patch +++ /dev/null | |||
@@ -1,190 +0,0 @@ | |||
1 | From be97cb958f2934fa398fc8e344b25b84ebd4e90c Mon Sep 17 00:00:00 2001 | ||
2 | From: "Peter A. Bigot" <pab@pabigot.com> | ||
3 | Date: Sun, 25 Aug 2013 19:22:09 -0500 | ||
4 | Subject: [PATCH] pseudo_has_unload: add function | ||
5 | |||
6 | Various wrappers checked for a non-null pseudo_get_value("PSEUDO_UNLOAD") to | ||
7 | determine whether the environment should include the pseudo variables. None | ||
8 | of those checks freed the returned value when it was not null. The new | ||
9 | check function does. | ||
10 | |||
11 | The new check function also sees whether PSEUDO_UNLOAD was defined in the | ||
12 | environment that should be used in the wrapped system call. This allows | ||
13 | pkg_postinst scripts to strip out the LD_PRELOAD setting, for example before | ||
14 | invoking qemu to execute commands in an environment that does not have | ||
15 | libpseudo.so. | ||
16 | |||
17 | [YOCTO #4843] | ||
18 | |||
19 | Upstream-Status: Pending | ||
20 | Signed-off-by: Peter A. Bigot <pab@pabigot.com> | ||
21 | --- | ||
22 | ports/common/guts/execv.c | 2 +- | ||
23 | ports/common/guts/execve.c | 2 +- | ||
24 | ports/common/guts/execvp.c | 2 +- | ||
25 | ports/common/guts/fork.c | 2 +- | ||
26 | ports/linux/newclone/pseudo_wrappers.c | 2 +- | ||
27 | ports/linux/oldclone/pseudo_wrappers.c | 2 +- | ||
28 | ports/unix/guts/popen.c | 2 +- | ||
29 | ports/unix/guts/system.c | 2 +- | ||
30 | pseudo.h | 1 + | ||
31 | pseudo_util.c | 27 +++++++++++++++++++++++++++ | ||
32 | 10 files changed, 36 insertions(+), 8 deletions(-) | ||
33 | |||
34 | diff --git a/ports/common/guts/execv.c b/ports/common/guts/execv.c | ||
35 | index 763e1f9..3e1f820 100644 | ||
36 | --- a/ports/common/guts/execv.c | ||
37 | +++ b/ports/common/guts/execv.c | ||
38 | @@ -19,7 +19,7 @@ | ||
39 | } | ||
40 | |||
41 | pseudo_setupenv(); | ||
42 | - if (pseudo_get_value("PSEUDO_UNLOAD")) | ||
43 | + if (pseudo_has_unload(NULL)) | ||
44 | pseudo_dropenv(); | ||
45 | |||
46 | /* if exec() fails, we may end up taking signals unexpectedly... | ||
47 | diff --git a/ports/common/guts/execve.c b/ports/common/guts/execve.c | ||
48 | index a003657..ff6a44e 100644 | ||
49 | --- a/ports/common/guts/execve.c | ||
50 | +++ b/ports/common/guts/execve.c | ||
51 | @@ -20,7 +20,7 @@ | ||
52 | } | ||
53 | |||
54 | new_environ = pseudo_setupenvp(envp); | ||
55 | - if (pseudo_get_value("PSEUDO_UNLOAD")) | ||
56 | + if (pseudo_has_unload(new_environ)) | ||
57 | new_environ = pseudo_dropenvp(new_environ); | ||
58 | |||
59 | /* if exec() fails, we may end up taking signals unexpectedly... | ||
60 | diff --git a/ports/common/guts/execvp.c b/ports/common/guts/execvp.c | ||
61 | index 5e75be7..04253c3 100644 | ||
62 | --- a/ports/common/guts/execvp.c | ||
63 | +++ b/ports/common/guts/execvp.c | ||
64 | @@ -20,7 +20,7 @@ | ||
65 | } | ||
66 | |||
67 | pseudo_setupenv(); | ||
68 | - if (pseudo_get_value("PSEUDO_UNLOAD")) | ||
69 | + if (pseudo_has_unload(NULL)) | ||
70 | pseudo_dropenv(); | ||
71 | |||
72 | /* if exec() fails, we may end up taking signals unexpectedly... | ||
73 | diff --git a/ports/common/guts/fork.c b/ports/common/guts/fork.c | ||
74 | index df8abd7..bebe3b0 100644 | ||
75 | --- a/ports/common/guts/fork.c | ||
76 | +++ b/ports/common/guts/fork.c | ||
77 | @@ -12,7 +12,7 @@ | ||
78 | */ | ||
79 | if (rc == 0) { | ||
80 | pseudo_setupenv(); | ||
81 | - if (!pseudo_get_value("PSEUDO_UNLOAD")) { | ||
82 | + if (!pseudo_has_unload(NULL)) { | ||
83 | pseudo_reinit_libpseudo(); | ||
84 | } else { | ||
85 | pseudo_dropenv(); | ||
86 | diff --git a/ports/linux/newclone/pseudo_wrappers.c b/ports/linux/newclone/pseudo_wrappers.c | ||
87 | index 9dbac42..257e8bb 100644 | ||
88 | --- a/ports/linux/newclone/pseudo_wrappers.c | ||
89 | +++ b/ports/linux/newclone/pseudo_wrappers.c | ||
90 | @@ -28,7 +28,7 @@ int wrap_clone_child(void *args) { | ||
91 | |||
92 | if (!(flags & CLONE_VM)) { | ||
93 | pseudo_setupenv(); | ||
94 | - if (!pseudo_get_value("PSEUDO_UNLOAD")) { | ||
95 | + if (!pseudo_has_unload(NULL)) { | ||
96 | pseudo_reinit_libpseudo(); | ||
97 | } else { | ||
98 | pseudo_dropenv(); | ||
99 | diff --git a/ports/linux/oldclone/pseudo_wrappers.c b/ports/linux/oldclone/pseudo_wrappers.c | ||
100 | index c0ce5dd..598d966 100644 | ||
101 | --- a/ports/linux/oldclone/pseudo_wrappers.c | ||
102 | +++ b/ports/linux/oldclone/pseudo_wrappers.c | ||
103 | @@ -22,7 +22,7 @@ int wrap_clone_child(void *args) { | ||
104 | |||
105 | if (!(flags & CLONE_VM)) { | ||
106 | pseudo_setupenv(); | ||
107 | - if (!pseudo_get_value("PSEUDO_UNLOAD")) { | ||
108 | + if (!pseudo_has_unload(NULL)) { | ||
109 | pseudo_reinit_libpseudo(); | ||
110 | } else { | ||
111 | pseudo_dropenv(); | ||
112 | diff --git a/ports/unix/guts/popen.c b/ports/unix/guts/popen.c | ||
113 | index 0ca16b0..5d44c0e 100644 | ||
114 | --- a/ports/unix/guts/popen.c | ||
115 | +++ b/ports/unix/guts/popen.c | ||
116 | @@ -9,7 +9,7 @@ | ||
117 | * in ways that avoid our usual enforcement of the environment. | ||
118 | */ | ||
119 | pseudo_setupenv(); | ||
120 | - if (pseudo_get_value("PSEUDO_UNLOAD")) | ||
121 | + if (pseudo_has_unload(NULL)) | ||
122 | pseudo_dropenv(); | ||
123 | |||
124 | rc = real_popen(command, mode); | ||
125 | diff --git a/ports/unix/guts/system.c b/ports/unix/guts/system.c | ||
126 | index 028b372..6351592 100644 | ||
127 | --- a/ports/unix/guts/system.c | ||
128 | +++ b/ports/unix/guts/system.c | ||
129 | @@ -9,7 +9,7 @@ | ||
130 | return 1; | ||
131 | |||
132 | pseudo_setupenv(); | ||
133 | - if (pseudo_get_value("PSEUDO_UNLOAD")) | ||
134 | + if (pseudo_has_unload(NULL)) | ||
135 | pseudo_dropenv(); | ||
136 | |||
137 | rc = real_system(command); | ||
138 | diff --git a/pseudo.h b/pseudo.h | ||
139 | index 56760a4..f600793 100644 | ||
140 | --- a/pseudo.h | ||
141 | +++ b/pseudo.h | ||
142 | @@ -28,6 +28,7 @@ extern void pseudo_init_client(void); | ||
143 | void pseudo_dump_env(char **envp); | ||
144 | int pseudo_set_value(const char *key, const char *value); | ||
145 | char *pseudo_get_value(const char *key); | ||
146 | +int pseudo_has_unload(char * const *envp); | ||
147 | |||
148 | #include "pseudo_tables.h" | ||
149 | |||
150 | diff --git a/pseudo_util.c b/pseudo_util.c | ||
151 | index 8d0969e..16c70e0 100644 | ||
152 | --- a/pseudo_util.c | ||
153 | +++ b/pseudo_util.c | ||
154 | @@ -95,6 +95,33 @@ dump_env(char **envp) { | ||
155 | } | ||
156 | #endif | ||
157 | |||
158 | +int | ||
159 | +pseudo_has_unload(char * const *envp) { | ||
160 | + static const char unload[] = "PSEUDO_UNLOAD"; | ||
161 | + static size_t unload_len = strlen(unload); | ||
162 | + size_t i = 0; | ||
163 | + | ||
164 | + /* Is it in the caller environment? */ | ||
165 | + if (NULL != getenv(unload)) | ||
166 | + return 1; | ||
167 | + | ||
168 | + /* Is it in the environment cache? */ | ||
169 | + if (pseudo_util_initted == -1) | ||
170 | + pseudo_init_util(); | ||
171 | + while (pseudo_env[i].key && strcmp(pseudo_env[i].key, unload)) | ||
172 | + ++i; | ||
173 | + if (pseudo_env[i].key && pseudo_env[i].value) | ||
174 | + return 1; | ||
175 | + | ||
176 | + /* Is it in the operational environment? */ | ||
177 | + while (envp && *envp) { | ||
178 | + if ((!strncmp(*envp, unload, unload_len)) && ('=' == (*envp)[unload_len])) | ||
179 | + return 1; | ||
180 | + ++envp; | ||
181 | + } | ||
182 | + return 0; | ||
183 | +} | ||
184 | + | ||
185 | /* Caller must free memory! */ | ||
186 | char * | ||
187 | pseudo_get_value(const char *key) { | ||
188 | -- | ||
189 | 1.7.9.5 | ||
190 | |||
diff --git a/meta/recipes-devtools/pseudo/files/pseudo-1.5.1-install-directory-mode.patch b/meta/recipes-devtools/pseudo/files/pseudo-1.5.1-install-directory-mode.patch deleted file mode 100644 index e8eaf13f74..0000000000 --- a/meta/recipes-devtools/pseudo/files/pseudo-1.5.1-install-directory-mode.patch +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | Upstream-Status: Backport | ||
2 | |||
3 | when install command sets the created directory mode, pseudo will change | ||
4 | the mode of the directory to 0700 incorrectly. | ||
5 | |||
6 | Signed-off-by: yanjun.zhu <yanjun.zhu@windriver.com> | ||
7 | Signed-off-by: Kai Kang <kai.kang@windriver.com> | ||
8 | |||
9 | --- a/ports/unix/guts/mkdirat.c | ||
10 | +++ b/ports/unix/guts/mkdirat.c | ||
11 | @@ -25,6 +25,7 @@ | ||
12 | stat_rc = base_fstatat(dirfd, path, &buf, AT_SYMLINK_NOFOLLOW); | ||
13 | #endif | ||
14 | if (stat_rc != -1) { | ||
15 | + buf.st_mode = PSEUDO_DB_MODE(buf.st_mode, mode); | ||
16 | pseudo_client_op(OP_MKDIR, 0, -1, dirfd, path, &buf); | ||
17 | } else { | ||
18 | pseudo_debug(1, "mkdir of %s succeeded, but stat failed: %s\n", | ||
diff --git a/meta/recipes-devtools/pseudo/files/pseudo-fchmodat-permissions.patch b/meta/recipes-devtools/pseudo/files/pseudo-fchmodat-permissions.patch deleted file mode 100644 index 7b1f82d577..0000000000 --- a/meta/recipes-devtools/pseudo/files/pseudo-fchmodat-permissions.patch +++ /dev/null | |||
@@ -1,264 +0,0 @@ | |||
1 | commit 7e67d082737b3df4788caf85fedd607b3acd9786 | ||
2 | Author: Peter Seebach <peter.seebach@windriver.com> | ||
3 | Date: Fri May 16 15:53:06 2014 -0500 | ||
4 | |||
5 | permissions updates: improve fchmodat, mask out write bits | ||
6 | |||
7 | Upstream-Status: Backport of several patches from 1.6 branch, | ||
8 | combined. | ||
9 | |||
10 | Backport from pseudo 1.6 of improvements to fchmodat (handle | ||
11 | AT_SYMLINK_NOFOLLOW by rejecting it if the host system does, | ||
12 | to make GNU tar happier), also mask out write bits from filesystem | ||
13 | modes to avoid security problems. | ||
14 | |||
15 | Also start tracking umask so we can use the right modes for | ||
16 | open, mkdir, and mknod. | ||
17 | |||
18 | The 1.6 patches are: | ||
19 | |||
20 | 87c53ea58befef48677846693aab445df1850e16 | ||
21 | 3c716e0bab4f0cfe4be84caa9ce5fd5e3f5e2a23 | ||
22 | c98e4f43b5d6499748a5057134408f4ba4854fb4 | ||
23 | 2f71a021b725c1aa415439209a89327f0b997d02 | ||
24 | 14925786b55202d8147b0af719038e8a23ef73c0 | ||
25 | |||
26 | diff --git a/ChangeLog.txt b/ChangeLog.txt | ||
27 | index 113f675..cc966ce 100644 | ||
28 | --- a/ChangeLog.txt | ||
29 | +++ b/ChangeLog.txt | ||
30 | @@ -1,3 +1,18 @@ | ||
31 | +2014-05-27: | ||
32 | + * (seebs) start noticing umask, mask it out from open or mkdir | ||
33 | + calls rather than relying on underlying open/mkdir to do it. | ||
34 | + | ||
35 | +2014-05-16: | ||
36 | + * (seebs) fchmodat: don't drop flags, report failures, to improve | ||
37 | + compatibility/consistency. Cache the knowledge that | ||
38 | + AT_SYMLINK_NOFOLLOW gets ENOTSUP. | ||
39 | + * (seebs) mask out group/other write bits in real filesystem to | ||
40 | + reduce risks when assembling a rootfs including world-writeable | ||
41 | + directories. | ||
42 | + | ||
43 | +2014-05-15: | ||
44 | + * (seebs) drop flags when calling fchmodat() to appease GNU tar. | ||
45 | + | ||
46 | 2013-02-27: | ||
47 | * (seebs) Oh, hey, what if I took out my debug messages? | ||
48 | * (seebs) update docs a bit to reduce bitrot | ||
49 | diff --git a/makewrappers b/makewrappers | ||
50 | index e87cc56..0127766 100755 | ||
51 | --- a/makewrappers | ||
52 | +++ b/makewrappers | ||
53 | @@ -204,6 +204,7 @@ class Function: | ||
54 | 'uid_t': '0', | ||
55 | 'int': '-1', | ||
56 | 'long': '-1', | ||
57 | + 'mode_t': '0', | ||
58 | 'ssize_t': '-1' | ||
59 | } | ||
60 | |||
61 | diff --git a/ports/darwin/guts/open.c b/ports/darwin/guts/open.c | ||
62 | index c66cc15..520bb70 100644 | ||
63 | --- a/ports/darwin/guts/open.c | ||
64 | +++ b/ports/darwin/guts/open.c | ||
65 | @@ -9,6 +9,9 @@ | ||
66 | struct stat buf = { }; | ||
67 | int existed = 1; | ||
68 | int save_errno; | ||
69 | + | ||
70 | + /* mask out mode bits appropriately */ | ||
71 | + mode = mode & ~pseudo_umask; | ||
72 | #ifdef PSEUDO_FORCE_ASYNCH | ||
73 | flags &= ~O_SYNC; | ||
74 | #endif | ||
75 | diff --git a/ports/linux/guts/__xmknodat.c b/ports/linux/guts/__xmknodat.c | ||
76 | index 59b4f2f..0888b8a 100644 | ||
77 | --- a/ports/linux/guts/__xmknodat.c | ||
78 | +++ b/ports/linux/guts/__xmknodat.c | ||
79 | @@ -9,6 +9,9 @@ | ||
80 | pseudo_msg_t *msg; | ||
81 | struct stat64 buf; | ||
82 | |||
83 | + /* mask out mode bits appropriately */ | ||
84 | + mode = mode & ~pseudo_umask; | ||
85 | + | ||
86 | /* we don't use underlying call, so _ver is irrelevant to us */ | ||
87 | (void) ver; | ||
88 | |||
89 | diff --git a/ports/linux/guts/openat.c b/ports/linux/guts/openat.c | ||
90 | index 8460073..4053549 100644 | ||
91 | --- a/ports/linux/guts/openat.c | ||
92 | +++ b/ports/linux/guts/openat.c | ||
93 | @@ -10,6 +10,9 @@ | ||
94 | int existed = 1; | ||
95 | int save_errno; | ||
96 | |||
97 | + /* mask out mode bits appropriately */ | ||
98 | + mode = mode & ~pseudo_umask; | ||
99 | + | ||
100 | #ifdef PSEUDO_NO_REAL_AT_FUNCTIONS | ||
101 | if (dirfd != AT_FDCWD) { | ||
102 | errno = ENOSYS; | ||
103 | diff --git a/ports/unix/guts/fchmodat.c b/ports/unix/guts/fchmodat.c | ||
104 | index 59a92ce..69a953c 100644 | ||
105 | --- a/ports/unix/guts/fchmodat.c | ||
106 | +++ b/ports/unix/guts/fchmodat.c | ||
107 | @@ -8,6 +8,7 @@ | ||
108 | */ | ||
109 | PSEUDO_STATBUF buf; | ||
110 | int save_errno = errno; | ||
111 | + static int picky_fchmodat = 0; | ||
112 | |||
113 | #ifdef PSEUDO_NO_REAL_AT_FUNCTIONS | ||
114 | if (dirfd != AT_FDCWD) { | ||
115 | @@ -15,6 +16,16 @@ | ||
116 | return -1; | ||
117 | } | ||
118 | if (flags & AT_SYMLINK_NOFOLLOW) { | ||
119 | + /* Linux, as of this writing, will always reject this. | ||
120 | + * GNU tar relies on getting the rejection. To cut down | ||
121 | + * on traffic, we check for the failure, and if we saw | ||
122 | + * a failure previously, we reject it right away and tell | ||
123 | + * the caller to retry. | ||
124 | + */ | ||
125 | + if (picky_fchmodat) { | ||
126 | + errno = ENOTSUP; | ||
127 | + return -1; | ||
128 | + } | ||
129 | rc = base_lstat(path, &buf); | ||
130 | } else { | ||
131 | rc = base_stat(path, &buf); | ||
132 | @@ -50,13 +61,22 @@ | ||
133 | |||
134 | /* user bits added so "root" can always access files. */ | ||
135 | #ifdef PSEUDO_NO_REAL_AT_FUNCTIONS | ||
136 | - /* note: if path was a symlink, and AT_NOFOLLOW_SYMLINKS was | ||
137 | + /* note: if path was a symlink, and AT_SYMLINK_NOFOLLOW was | ||
138 | * specified, we already bailed previously. */ | ||
139 | real_chmod(path, PSEUDO_FS_MODE(mode, S_ISDIR(buf.st_mode))); | ||
140 | #else | ||
141 | - real_fchmodat(dirfd, path, PSEUDO_FS_MODE(mode, S_ISDIR(buf.st_mode)), flags); | ||
142 | + rc = real_fchmodat(dirfd, path, PSEUDO_FS_MODE(mode, S_ISDIR(buf.st_mode)), flags); | ||
143 | + /* AT_SYMLINK_NOFOLLOW isn't supported by fchmodat. GNU tar | ||
144 | + * tries to use it anyway, figuring it can just retry if that | ||
145 | + * fails. So we want to report that *particular* failure instead | ||
146 | + * of doing the fallback. | ||
147 | + */ | ||
148 | + if (rc == -1 && errno == ENOTSUP && (flags & AT_SYMLINK_NOFOLLOW)) { | ||
149 | + picky_fchmodat = 1; | ||
150 | + return -1; | ||
151 | + } | ||
152 | #endif | ||
153 | - /* we ignore a failure from underlying fchmod, because pseudo | ||
154 | + /* we otherwise ignore failures from underlying fchmod, because pseudo | ||
155 | * may believe you are permitted to change modes that the filesystem | ||
156 | * doesn't. Note that we also don't need to know whether the | ||
157 | * file might be a (pseudo) block device or some such; pseudo | ||
158 | diff --git a/ports/unix/guts/mkdirat.c b/ports/unix/guts/mkdirat.c | ||
159 | index e846b70..e0b6af9 100644 | ||
160 | --- a/ports/unix/guts/mkdirat.c | ||
161 | +++ b/ports/unix/guts/mkdirat.c | ||
162 | @@ -6,11 +6,14 @@ | ||
163 | * wrap_mkdirat(int dirfd, const char *path, mode_t mode) { | ||
164 | * int rc = -1; | ||
165 | */ | ||
166 | + /* mask out mode bits appropriately */ | ||
167 | + mode = mode & ~pseudo_umask; | ||
168 | #ifdef PSEUDO_NO_REAL_AT_FUNCTIONS | ||
169 | if (dirfd != AT_FDCWD) { | ||
170 | errno = ENOSYS; | ||
171 | return -1; | ||
172 | } | ||
173 | + | ||
174 | rc = real_mkdir(path, PSEUDO_FS_MODE(mode, 1)); | ||
175 | #else | ||
176 | rc = real_mkdirat(dirfd, path, PSEUDO_FS_MODE(mode, 1)); | ||
177 | diff --git a/ports/unix/guts/mknodat.c b/ports/unix/guts/mknodat.c | ||
178 | index 6fd5b42..5d8d47c 100644 | ||
179 | --- a/ports/unix/guts/mknodat.c | ||
180 | +++ b/ports/unix/guts/mknodat.c | ||
181 | @@ -10,6 +10,9 @@ | ||
182 | PSEUDO_STATBUF buf; | ||
183 | int save_errno = errno; | ||
184 | |||
185 | + /* mask out mode bits appropriately */ | ||
186 | + mode = mode & ~pseudo_umask; | ||
187 | + | ||
188 | #ifdef PSEUDO_NO_REAL_AT_FUNCTIONS | ||
189 | if (dirfd != AT_FDCWD) { | ||
190 | errno = ENOSYS; | ||
191 | diff --git a/ports/unix/guts/umask.c b/ports/unix/guts/umask.c | ||
192 | new file mode 100644 | ||
193 | index 0000000..6b060d3 | ||
194 | --- /dev/null | ||
195 | +++ b/ports/unix/guts/umask.c | ||
196 | @@ -0,0 +1,14 @@ | ||
197 | +/* | ||
198 | + * Copyright (c) 2014 Wind River Systems; see | ||
199 | + * guts/COPYRIGHT for information. | ||
200 | + * | ||
201 | + * mode_t umask(mode_t mask) | ||
202 | + * mode_t rc = 0; | ||
203 | + */ | ||
204 | + | ||
205 | + pseudo_umask = mask; | ||
206 | + rc = real_umask(mask); | ||
207 | + | ||
208 | +/* return rc; | ||
209 | + * } | ||
210 | + */ | ||
211 | diff --git a/ports/unix/wrapfuncs.in b/ports/unix/wrapfuncs.in | ||
212 | index 8460a65..e0e9739 100644 | ||
213 | --- a/ports/unix/wrapfuncs.in | ||
214 | +++ b/ports/unix/wrapfuncs.in | ||
215 | @@ -67,3 +67,4 @@ void sync(void); /* async_skip= */ | ||
216 | int syncfs(int fd); /* async_skip=0 */ | ||
217 | int sync_file_range(int fd, off64_t offset, off64_t nbytes, unsigned int flags); /* async_skip=0 */ | ||
218 | int msync(void *addr, size_t length, int flags); /* async_skip=0 */ | ||
219 | +mode_t umask(mode_t mask); | ||
220 | diff --git a/pseudo_client.c b/pseudo_client.c | ||
221 | index b6d11a6..535c810 100644 | ||
222 | --- a/pseudo_client.c | ||
223 | +++ b/pseudo_client.c | ||
224 | @@ -71,6 +71,8 @@ int pseudo_disabled = 0; | ||
225 | int pseudo_allow_fsync = 0; | ||
226 | static int pseudo_local_only = 0; | ||
227 | |||
228 | +int pseudo_umask = 022; | ||
229 | + | ||
230 | static char **fd_paths = NULL; | ||
231 | static int nfds = 0; | ||
232 | static int messages = 0; | ||
233 | @@ -219,6 +221,9 @@ pseudo_init_client(void) { | ||
234 | if (!pseudo_disabled && !pseudo_inited) { | ||
235 | char *pseudo_path = 0; | ||
236 | |||
237 | + pseudo_umask = umask(022); | ||
238 | + umask(pseudo_umask); | ||
239 | + | ||
240 | pseudo_path = pseudo_prefix_path(NULL); | ||
241 | if (pseudo_prefix_dir_fd == -1) { | ||
242 | if (pseudo_path) { | ||
243 | diff --git a/pseudo_client.h b/pseudo_client.h | ||
244 | index f36a772..5bf820e 100644 | ||
245 | --- a/pseudo_client.h | ||
246 | +++ b/pseudo_client.h | ||
247 | @@ -72,6 +72,8 @@ extern char *pseudo_passwd; | ||
248 | extern size_t pseudo_chroot_len; | ||
249 | extern int pseudo_nosymlinkexp; | ||
250 | |||
251 | +extern int pseudo_umask; | ||
252 | + | ||
253 | /* Root can read and write files, and enter directories which have no | ||
254 | * read, write, or execute permissions. (But can't execute files without | ||
255 | * execute permissions!) | ||
256 | @@ -85,6 +87,6 @@ extern int pseudo_nosymlinkexp; | ||
257 | * None of this will behave very sensibly if umask has 0700 bits in it; | ||
258 | * this is a known limitation. | ||
259 | */ | ||
260 | -#define PSEUDO_FS_MODE(mode, isdir) ((mode) | S_IRUSR | S_IWUSR | ((isdir) ? S_IXUSR : 0)) | ||
261 | -#define PSEUDO_DB_MODE(fs_mode, user_mode) (((fs_mode) & ~0700) | ((user_mode & 0700))) | ||
262 | +#define PSEUDO_FS_MODE(mode, isdir) (((mode) | S_IRUSR | S_IWUSR | ((isdir) ? S_IXUSR : 0)) & ~(S_IWGRP | S_IWOTH)) | ||
263 | +#define PSEUDO_DB_MODE(fs_mode, user_mode) (((fs_mode) & ~0722) | ((user_mode & 0722))) | ||
264 | |||
diff --git a/meta/recipes-devtools/pseudo/files/shutdownping.patch b/meta/recipes-devtools/pseudo/files/shutdownping.patch deleted file mode 100644 index 8af8e0b594..0000000000 --- a/meta/recipes-devtools/pseudo/files/shutdownping.patch +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | There is a potential issue with the fastop code in pseudo since a process may | ||
2 | exit and allow some other function to run before the server has processed | ||
3 | the commands run by the process. Issues have been see with unpredictable | ||
4 | file permissions. | ||
5 | |||
6 | To avoid this, we ping the server before exitting which guarantees it has | ||
7 | processed the current command queue. | ||
8 | |||
9 | Debugged-by: RP | ||
10 | Fix written by peter.seebach@windriver.com | ||
11 | |||
12 | Upstream-Status: Submitted | ||
13 | |||
14 | [YOCTO #5132] | ||
15 | |||
16 | diff --git a/pseudo_client.c b/pseudo_client.c | ||
17 | index f58ce4c..20943b6 100644 | ||
18 | --- a/pseudo_client.c | ||
19 | +++ b/pseudo_client.c | ||
20 | @@ -75,6 +75,9 @@ static int nfds = 0; | ||
21 | static int messages = 0; | ||
22 | static struct timeval message_time = { .tv_sec = 0 }; | ||
23 | static int pseudo_inited = 0; | ||
24 | + | ||
25 | +static int sent_messages = 0; | ||
26 | + | ||
27 | int pseudo_nosymlinkexp = 0; | ||
28 | |||
29 | /* note: these are int, not uid_t/gid_t, so I can use 'em with scanf */ | ||
30 | @@ -711,6 +714,11 @@ client_ping(void) { | ||
31 | return 0; | ||
32 | } | ||
33 | |||
34 | +static void | ||
35 | +void_client_ping(void) { | ||
36 | + client_ping(); | ||
37 | +} | ||
38 | + | ||
39 | int | ||
40 | pseudo_fd(int fd, int how) { | ||
41 | int newfd; | ||
42 | @@ -1043,6 +1051,11 @@ pseudo_client_op(pseudo_op_t op, int access, int fd, int dirfd, const char *path | ||
43 | /* disable wrappers */ | ||
44 | pseudo_antimagic(); | ||
45 | |||
46 | + if (!sent_messages) { | ||
47 | + sent_messages = 1; | ||
48 | + atexit(void_client_ping); | ||
49 | + } | ||
50 | + | ||
51 | if (op == OP_RENAME) { | ||
52 | va_list ap; | ||
53 | va_start(ap, buf); | ||
diff --git a/meta/recipes-devtools/pseudo/files/symver.patch b/meta/recipes-devtools/pseudo/files/symver.patch deleted file mode 100644 index 8d1b377ec0..0000000000 --- a/meta/recipes-devtools/pseudo/files/symver.patch +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | When running as pseudo-nativesdk, we might need to run host binaries | ||
2 | linked against the host libc. Having a 2.14 libc dependency from memcpy is | ||
3 | problematic so instruct the linker to use older symbols. | ||
4 | |||
5 | Upstream-Status: Pending | ||
6 | |||
7 | RP 2012/4/22 | ||
8 | |||
9 | Index: pseudo-1.3/pseudo.h | ||
10 | =================================================================== | ||
11 | --- pseudo-1.3.orig/pseudo.h 2012-04-22 12:17:59.078909060 +0000 | ||
12 | +++ pseudo-1.3/pseudo.h 2012-04-22 12:32:42.954888587 +0000 | ||
13 | @@ -29,6 +29,13 @@ | ||
14 | int pseudo_set_value(const char *key, const char *value); | ||
15 | char *pseudo_get_value(const char *key); | ||
16 | |||
17 | +#ifdef __amd64__ | ||
18 | +#define GLIBC_COMPAT_SYMBOL(SYM) __asm__(".symver " #SYM "," #SYM "@GLIBC_2.2.5") | ||
19 | +#else | ||
20 | +#define GLIBC_COMPAT_SYMBOL(SYM) __asm__(".symver " #SYM "," #SYM "@GLIBC_2.0") | ||
21 | +#endif | ||
22 | +GLIBC_COMPAT_SYMBOL(memcpy); | ||
23 | + | ||
24 | #include "pseudo_tables.h" | ||
25 | |||
26 | extern void pseudo_debug_verbose(void); | ||
diff --git a/meta/recipes-devtools/pseudo/pseudo_1.5.1.bb b/meta/recipes-devtools/pseudo/pseudo_1.5.1.bb deleted file mode 100644 index 8d562ecbf7..0000000000 --- a/meta/recipes-devtools/pseudo/pseudo_1.5.1.bb +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | require pseudo.inc | ||
2 | |||
3 | PR = "r5" | ||
4 | |||
5 | SRC_URI = " \ | ||
6 | http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2 \ | ||
7 | file://0001-pseudo_has_unload-add-function.patch \ | ||
8 | file://shutdownping.patch \ | ||
9 | file://pseudo-1.5.1-install-directory-mode.patch \ | ||
10 | file://pseudo-fchmodat-permissions.patch \ | ||
11 | " | ||
12 | |||
13 | SRC_URI_append_class-nativesdk = " file://symver.patch" | ||
14 | |||
15 | SRC_URI_append_class-native = " file://symver.patch" | ||
16 | |||
17 | SRC_URI[md5sum] = "5ec67c7bff5fe68c56de500859c19172" | ||
18 | SRC_URI[sha256sum] = "3b896f592f4d568569bd02323fad2d6b8c398e16ca36ee5a8947d2ff6c1d3d52" | ||
19 | |||
20 | PSEUDO_EXTRA_OPTS ?= "--enable-force-async" | ||