aboutsummaryrefslogtreecommitdiffstats
path: root/Futures.txt
diff options
context:
space:
mode:
authorPeter Seebach <peter.seebach@windriver.com>2013-02-13 13:32:53 -0600
committerPeter Seebach <peter.seebach@windriver.com>2013-02-13 13:35:31 -0600
commit011b401fb6be38d739215e455588af4dcd707e17 (patch)
tree6ec9ff1e7b92cb22c73b079d528c1b59455fa25a /Futures.txt
parent363a94bb851046f62648d7c96c749e899bd0648e (diff)
downloadpseudo-011b401fb6be38d739215e455588af4dcd707e17.tar.gz
pseudo-011b401fb6be38d739215e455588af4dcd707e17.tar.bz2
pseudo-011b401fb6be38d739215e455588af4dcd707e17.zip
Fix linkat() again.pseudo-1.4.5PSEUDO_1_4_5
wrap_linkat() was trying to avoid "redundantly" expanding paths before calling real_linkat(). Which is fine when you're not using an absolute path in a chroot environment, but if you are, it ends up calling the real syscall with the absolute path and no chroot prefix. General observation: All the *at() implementations are expanding paths into absolute paths, then dutifully calling real_*at() functions with them anyway. This is silly. Added a note to Futures.txt to fix it some day. In the mean time, linkat() is fixed correctly; it always expands paths, does so exactly once, and then uses the underlying link() call because it doesn't need special processing of directory fds anymore. Also fixed errno stashing to reduce the risk that link() will change errno in a circumstance where it doesn't actually fail.
Diffstat (limited to 'Futures.txt')
-rw-r--r--Futures.txt5
1 files changed, 5 insertions, 0 deletions
diff --git a/Futures.txt b/Futures.txt
index e7829ce..7a39fab 100644
--- a/Futures.txt
+++ b/Futures.txt
@@ -33,3 +33,8 @@ vague implementation thoughts:
* Test cases
- boy, do we need test cases!
+
+* Clean up *at() functions
+ - The *at() function implementations are gratuitously complicated,
+ I believe because they predate the auto-canonicalization that came
+ with the rewritten pseudo wrappers.