2016-09-28: * (seebs) Send errors to log when daemonizing, but do that a lot sooner to prevent startup messages which can show up spuriously with multiple clients. * (seebs) return file descriptor from pseudo_logfile, so we set pseudo_util_debug_fd to the right value instead of to stdin. Nice bug. 2016-09-22: * (seebs) don't send SIGUSR1 to init. 2016-07-29: * (seebs) Don't clear bindings for a statement with no bindings. 2016-07-28: * (seebs) Fix performance issue on deletion with xattr changes. 2016-07-08: * (RP) release 1.8.1 * (joshuagl) Fix log table creation issue * (joshuagl) Fix sqlite usage pseudo segfault * (joshuagl) Fix directory permissions for build 2016-05-18: * (seebs) move syncfs to a subport so it can be enabled only on systems which have it. * (seebs) make pseudo_foo() wrappers for mknod/mknodat, similar to the ones for stat/fstat, because Linux doesn't actually have mknod (or stat) in glibc. * Post diagnostic for missing real_foo() functions even when dlerror doesn't give a specific error. * All of this because ld.so started giving dlerror results for missing functions with RTLD_NEXT. It turns out we were failing to notice some missing functions. None of them actually mattered, but it's worth fixing. 2016-05-12: * (seebs) merge kergoth's fix to respect $(LDFLAGS) from environment. * (seebs) call this 1.8.0 2016-03-25: * (seebs) handle deletion of xattrs, renames, and so on. Eww. 2016-03-24: * (seebs) make xattr db use {dev, ino}. this includes an in-place migration of the tables for existing databases. 2016-03-22: * (seebs) extract variable name from message for remove_xattr so it actually works. 2016-03-11: * (seebs) set sane umask in server, just in case. 2016-03-10: * (seebs) make bind work (so userspace NFS server can handle pseudo) 2016-03-09: * (seebs) workaround for bash redefining getenv/unsetenv/etc. 2016-03-02: * (seebs) more server launch rework and updates * (seebs) make dup/dup2 less verbose in client * (seebs) cleanup client spawning code a bit 2016-03-01: * (seebs) server launch reworking 2016-02-24: * (seebs) event logger cleanup, improved diagnostics for client spawning, server exit cleanup. 2016-02-23: * (seebs) event logger initial implementation 2016-02-16: * (seebs) don't try to force pseudo's debug fd to fd 2 in clients. Also, don't allow server to end up with a client on fd 2, whether or not fd 2 is already in use. 2016-02-09: * (seebs) 1.7.5 release 2016-02-08: * (seebs) require -S to shutdown server when running a command. * (seebs) improve logic for server shutdowns, increase short timeout * (seebs) rework client server-spawning logic significantly * (seebs) make abort messages make it out, display message on abort 2016-02-05: * (seebs) don't abort search for server on first try. * (seebs) new clients cancel a shutdown request. * (seebs) sort xattrs when returning list. * (seebs) add retry interval, rather than instant retries. 2016-01-22: * (seebs) Mask in S_IFREG when mknod called with no S_IFMT bits. 2015-09-22: * (seebs) Fix modes after fopen/fopen64. 2015-09-04: * (seebs) add return value printing to wrapper debug! * (seebs) make mkdirat() restore errno, also don't pass AT_SYMLINK_NOFOLLOW to fchmodat() since it is ignored, and we know that if the thing exists at all, it is a directory and thus AT_SYMLINK_NOFOLLOW would be irrelevant anyway. * (seebs) and 1.7.3, of course. 2015-09-03: * (seebs) Use original mode, not 0600, for the chmods used to ensure that an 0700 umask didn't prevent writing. * (seebs) remove the comment saying that 0700 umasks were expected to break things. * (seebs) and call this 1.7.2. 2015-09-02: * (seebs) call this 1.7.1, since that seems to be all the bugs I can immediately find. 2015-09-01: * (seebs) use PSEUDO_STATBUF and base_lstat in path resolution, because plain lstat can fail on XFS if an inode number is out of the 32-bit range. * (seebs) if no pointer was provided to realpath, provide allocated dup. 2015-08-24: * (seebs) drop unused/unimplemented "picky_fchmodat", since I currently have no systems which implement it, and the implementation for NO_REAL_AT_FUNCTIONS was difficult to define. * (seebs) drop unused "doing_link" in fchownat, which I think predates the current database entirely. * (seebs) drop unused "old_trailing_slash". * (seebs) tag this as 1.7.0. 2015-08-22: * (seebs) Prevent files from getting created with real filesystem mode 0, even with umask. * (seebs) xattrdb logic fixes. * (seebs) Debugging messages. 2015-08-21: * (seebs) don't put incorrect host UIDs in dummy entries in db. * (seebs) merge existing values for chown/chmod with xattrdb. 2015-08-20: * (seebs) don't send open/exec messages unless server is logging. 2015-08-19: * (seebs) Reduce alloc/free cycles in path computations. 2015-08-17: * (seebs) profiling improvements 2015-08-14: * (seebs) profiling cleanup, add profiler to gitignore * Start using 1.7.0 version for internal work. 2015-08-13: * (seebs) client profiling stuff (first pass) 2015-07-17: * (seebs) allow actually making fifos without randomly closing fd 0 * 1.6.7 2015-07-16: * (seebs) don't truncate xattr attributes that end with a slash. * (seebs) allow actually making fifos * 1.6.6 2015-05-04: * (seebs) don't give spurious trailing slash diagnostics * 1.6.5 2015-01-22: * (seebs) work when --prefix doesn't exist yet * 1.6.4 2015-01-15: * (seebs) Rework PSEUDO_PASSWD path allocation for clarity, I hope. * 1.6.3 2015-01-14: * (seebs) Merge pabigot's fix for a missing antimagic() in etc_file code. * (seebs) Make configure reject a "prefix" of the current directory. It fails in strange ways and is easy to detect. * (seebs) handle colon-separated lists in PSEUDO_PASSWD. Derived in part from contribution from pabigot. * (seebs) change allocation order in password file locking. 2015-01-05: * (seebs) First try at handling trailing slashes in path names correctly. (Which is to say, a trailing slash on a file name which is not a directory name should yield ENOTDIR from a lot of things.) 2014-10-03: * (seebs) in fact, suppress a lot of sanity checks entirely for did_unlink. * (seebs) merge get_file_path functionality into find_file_dev, since you never call find_file_dev unless you want to do that. * (seebs) If a file is in the database by inode but not path, don't try to create a new link for it. * (seebs) when renaming, the link of the "old" file name should be contingent on whether *it* was in the database, not whether the *new* name was in the database. Whoops. * (seebs) 1.6.2 2014-10-02: * (seebs) use sqlite3_bind_int64 for inodes. * (seebs) suppress path mismatch warnings for did_unlink. 2014-07-18: * (seebs) Make "server already offline" message into a debugging message (PDBGF_INVOKE). * (seebs) 1.6.1 2014-07-17: * (seebs) Restrict symbol version restrictions to x86-64 and i386 rather than x86-64 and any old thing. Fixes build problems on ARM. 2014-07-11: * (seebs) merge in symbol version restrictions (slightly tweaked) for Linux. 2014-07-10: * (seebs) Don't pass -L/usr/lib* for sqlite, because that's probably the default. * (seebs) include sys/xattr.h explicitly for Darwin, also fix things up so we aren't relying on seeing a declaration for our dummy wrapper for fgetgrent_r which doesn't exist here. * (seebs) fix typo in xattr message * (seebs) make xattr work on Darwin, too. 2014-06-13: * (seebs) don't follow symlinks for lutimes. * (seebs) Use sizeof instead of strlen to initialize static value. 2014-05-27: * (seebs) start noticing umask, mask it out from open or mkdir calls rather than relying on underlying open/mkdir to do it. * (seebs) add a test for umask and filesystem-vs-db modes. 2014-05-16: * (seebs) fchmodat: don't drop flags, report failures, to improve compatibility/consistency. Cache the knowledge that AT_SYMLINK_NOFOLLOW gets ENOTSUP. * (seebs) mask out group/other write bits in real filesystem to reduce risks when assembling a rootfs including world-writeable directories. * (seebs) send a round-trip message to the server before exiting if any messages have been sent, so the program won't exit before the server processed those messages. * (pabigot) Don't memory-leak on checks for PSEUDO_UNLOAD, also check the correct environment when spawning new things. (Contributed by Peter A. Bigot). * (seebs) mask 022 back in too, when restoring a database mode. 2014-05-15: * (seebs) drop flags when calling fchmodat() to appease GNU tar. 2014-04-24: * (seebs) extended attribute support 2014-01-23: * (seebs) mknod wasn't calling mknodat. * (seebs) mkdirat wasn't recording the logical DB mode for directories 2014-01-22: * (seebs) notes on some Futures planning. * (seebs) Typo/formatting issue in man page. * (seebs) message formatting/clarity cleanup and typo fixes. * (seebs) First draft of passwd_fallback implementation. * (seebs) bump this all to 1.6.0. 2014-01-15: * (seebs) performance test/test case updates. 2013-06-20: * (seebs) refactor debugging code * (seebs) start using 1.5.2 numbering 2013-06-18: * (seebs) Fix bug in oldclone (reported by rich@noir.com). 2013-02-27: * (seebs) Oh, hey, what if I took out my debug messages? * (seebs) update docs a bit to reduce bitrot 2013-02-26: * (seebs) When built -DNDEBUG, completely drop pseudo_debug calls. * (seebs) Add PSEUDO_ALLOW_FSYNC to allow temporary re-enabling of fsync to work around filesystem bugs. * (seebs) call that 1.5.1. 2013-02-17: * (seebs) Fix uninitialized variable in unlink, fix force-fsync for Darwin (off64_t is not a distinct type there). 2013-02-16: * (seebs) Add wrapper setting which automatically returns a fixed value from some wrappers. Add fixed-value wrappers for all the *sync() functions. These are all contingent on --enable-force-async. 2013-02-15: * (seebs) Add support for in-memory DB. This, plus upcoming fsync-related changes, are expected to be big enough to justify calling this 1.5. 2013-02-13: * (seebs) calling link while chrooted could in some cases result in the root path not being prepended at all. One more try! * (seebs) 1.4.5. 2013-02-12: * (seebs) calling link while chrooted could in some cases result in the root path being double-appended. * (seebs) and tag 1.4.4 so that can get out as a clean update. 2013-01-31: * (seebs) tag 1.4.3 (to avoid any problems with the changes since 1.4.2 and old tarballs) 2013-01-30: * (seebs) Subtle tweaks to avoid GLIBC_2.7 dependencies which can cause trouble trying to copy libpseudo.so to older hosts. * (seebs) add "with-sqlite-lib" to simplify cases where sqlite's libdir computation differs from what we otherwise want; for instance, with bitbake, we often end up wanting $lib = lib64, but $sqlite_lib = lib. 2012-12-13: * (seebs) tag 1.4.2. 2012-12-12: * (seebs) Remove extra tab from the path alloc code in makewrappers. (Which has no effect since I changed my mind about the implementation which would have made it show up.) * (seebs) linkat() implementation. as a side effect, clear up the documentation and behavior of link(2) to reflect host OS semantics: Linux will hardlink symlinks, Darwin will only hardlink their targets. * (seebs) make linkat() implementation compile/run on Darwin, fix header bitrot for Mountain Lion. 2012-08-09: * (seebs) base_stat should be real_stat64, not stat64 * (seebs) add stat64/lstat64/fstat64 wrappers to Linux (not previously needed because the libc versions call stuff we already wrap). 2012-08-02: * (seebs) fix some Darwin-specific bitrot for clang/llvm. * (seebs) Drop the _plain thing, convert unix/guts/* to use PSEUDO_STATBUF. * (seebs) Tag 1.4.1. 2012-07-27: * (seebs) Convert from .tgz to tar.bz2 since that's handier for Yocto. 2012-07-24: * (seebs) Fix a couple of bitrots from the update. 2012-07-20: * (seebs) Add --cflags, deprecate --arch. * (seebs) tag 1.4 (since this should now work on arbitrary targets) 2012-06-28: * (seebs) Tag 1.3.1. 2012-06-27: * (seebs) Fix chroot coredump with long root path. 2012-04-30: * (seebs) Update README about new upstream. 2012-04-09: * (seebs) Improvements to rpath logic for sqlite, etc. * (seebs) Improvements to the logic for picking options like -m32, -m64 (which is to say, on ARM: Don't.) 2012-03-28: * (seebs) Cleanup unused variables, stray semicolons, add comments to some unused functions which exist because the wrapper generator makes them anyway. * (seebs) Make system() drop environment if PSEUDO_UNLOAD is set. 2012-03-27: * (seebs) Merge in: * (mhatle) Improve configuration compatibility with OE-Core. * (seebs) Provide option to statically link libsqlite. * (seebs) 1.3 branch 2012-03-26: * (seebs) Add popen() call to set up environment. 2012-02-06: * (seebs) Merge O_LARGEFILE into flags, not mode (thanks to Lei Liu at Wind River for the fix). 2012-02-02: * (seebs) stash dir name for DIR * from opendir using dirfd. * (seebs) add closedir. * (seebs) add initial pass at renameat() * (seebs) update makewrappers with smarter *dirfd handling. * (seebs) in base_path, don't try to strlen the result if fd_path() returns NULL. 2011-11-02: * (seebs) Call this 1.2 because the UNLOAD change is moderately significant, and so's the clone change. 2011-11-01: * (mhatle) Stop valgrind from reporting use of uninitialized memory from pseudo_client:client_ping() 2011-10-26: * (mhatle) update clone wrapper to add an intermediate function to avoid setting environment variables in the parent. 2011-10-20: * (mhatle) change from internal PSEUDO_RELOADED to external PSEUDO_UNLOAD environment variable. Enable external programs to have a safe and reliable way to unload pseudo on the next exec*. PSEUDO_UNLOAD also will disable pseudo if we're in a fork/clone situation in the same way PSEUDO_DISABLED=1 would. 2011-07-19: * (seebs) initialize a variable in that "realpath" code. 2011-06-08: * (seebs) Get the modern realpath from glibc instead of the old one inexplicably proferred by RTLD_NEXT. Fixes realpath(path, NULL) when PSEUDO_DISABLED=1. 2011-06-06: * (seebs) revise system() handler substantially. It now pollutes the environment but works. * (seebs) Call it "1.1.1" so the nice folks doing Yocto can have an official branch and not need to use git. * (seebs) add "tarball" make target. 2011-06-02: * (seebs) intercept system() so the pseudo environment is properly set for it. * (seebs) call this "1.1" since the cumulative result of all of these changes is pretty big. 2011-05-31: * (seebs) Don't mask in 0100 to filesystem modes for things which are not actually directories, because this breaks the special logic in euidaccess for X_OK. 2011-05-25: * (seebs) fix for ulckpwdf() 2011-04-21: * (seebs) don't use strerror in wrappers, because it can lead to malloc deadlocks if part of setting up a malloc operation falls into strerror which uses locale... Curse you, Fedora 13. You and your perfectly reasonable and standards-conforming behavior which happened to inconvenience me. 2011-04-16: * (seebs) remove duplicate definition of real_clone() from the oldclone port. 2011-04-13: * (seebs) base_path of an empty string should be an empty string, not $pwd. 2011-04-04: * (seebs) whitespace cleanup for Python code 2011-04-01: * (seebs) update README 2011-03-25: * (seebs) don't try to search path when you don't have one * (seebs) merge in ports branch * (seebs) fix permissions on subports/preports * (seebs) try to force debug fd to 2 2011-03-24: * (seebs) more work on OS X port. * (seebs) include errno in the verbose debug output * (seebs) fix darwin fcntl. * (seebs) fix *xattr for darwin (they take more arguments) 2011-02-18: * (seebs) moving things to Unix port, cleanup for Darwin 2011-02-14: * (seebs) first pass on splitting out ports * (seebs) various cleanup 2011-02-10: * (seebs) pseudo_client_shutdown(), and the pseudo server, have to be smart enough to make the local state directory in case the pseudo binary is invoked directly by a user before being spawned by the client. 2011-02-09: * (seebs) the long-awaited cleanup of the database initialization code. it's not really beautiful but it's quite a bit better. 2011-02-08: * (seebs) Get full paths for exec*() 2011-01-24: * (mhatle) Revert last result cache and related commits. caching proved to be unreliable. 2011-01-14: * (seebs) Automatically create prefix/state directories. * (mhatle) Avoid caching OP_EXEC calls 2011-01-13: * (seebs) Subtle cache fixup. 2010-12-17: * (mhatle) Disabled additional early setup if pseudo is disabled 2010-12-16: * (mhatle) change the journal from PERSIST to OFF * (seebs) update docs now that fakeroot and password support are in, this being long overdue * (seebs) fix parallel build issue introduced with maketables 2010-12-15: * (mhatle) add sqlite call profiling, enable with NPROFILE * (mhatle) as a result of profiling, optimize inode search * (mhatle) rearrange the pseudo_op file data operations to reduce the number of selects. * (mhatle) add the ability to cache the last select result * (mhatle) change the indexing in pseudo_db.c 2010-12-14: * (mhatle) restructure wrapfuncs.c 2010-12-09: * (mhatle) Add doc/program_flow to attempt to explain startup/running * (mhatle) guts/* minor cleanup * (mhatle) Reorganize into a new constructor for libpseudo ONLY pseudo main() now manually calls the util init new / revised init for client, wrappers and utils * (mhatle) Add central "reinit" function * (mhatle) Add manul execv* functions * (mhatle) rename pseudo_populate_wrappers to pseudo_check_wrappers 2010-12-08: * (mhatle) Add guts/clone.c to cleanup the clone support * (mhatle) guts/clone.c only run setupenv and reinit when NOT PSEUDO_RELOADED * (mhatle) guts/execve.c whitespace fixe * (mhatle) guts/fork.c similar to guts/clone.c change * (mhatle) pseudo_client.c add reinit function * (mhatle) pseudo_client.c revise client reset, include code from pseudo_wrappers.c * (mhatle) pseudo_server.c move the pid writing to the parent * (mhatle) pseudo_wrappers.c clone cleanup and populate cleanup 2010-12-07: * (seebs) whitespace fixes * (seebs) improve fork and PSEUDO_DISABLED * (seebs) add support for clone(2) * (mhatle) rework/improve clone(2) support * (mhatle) add test code for PSEUDO_DISABLED 2010-12-02: * (seebs) rework of fork/exec, add PSEUDO_DISABLED 2010-11-30: * (seebs) move *_t types to a separate file. * (seebs) remove unused tables from pseudo_db.c * (seebs) cleanup .gitignore 2010-11-17: * (seebs) add "Futures.txt" notes about future development plans * (seebs) split some of the templating code out of makewrappers 2010-11-16: * (seebs) database move functionality (first pass) 2010-10-25: * (seebs) various makewrappers cleanups (pylint, mostly) 2010-10-12: * (seebs) add missing copyright to Python makewrappers. * (seebs) detab makewrappers 2010-10-11: * (seebs) do the other *xattr() wrappers. * (seebs) Replace makewrappers with Python implementation and some template files. 2010-10-06: * (mhatle) Add the fsetxattr wrapper to return ENOTSUP (note: workaround gnu coreutils 'cp') 2010-09-16: * (seebs) change exec*() to use file, rather than path or filename, also add OP_EXEC where it was missing. 2010-09-15: * (seebs) allow setting default RPATH entry distinct from sqlite3 directory. 2010-09-08: * (seebs) handle mkfifo without guaranteeing an EINVAL response. 2010-09-02: * (seebs) fix errno for getcwd() with insufficient size * (seebs) Add an RPATH entry to the pseudo binary to find the sqlite3 library. 2010-09-01: * (seebs) add missing casts to even more printf arguments 2010-08-31: * (seebs) add missing casts to printf arguments, after being warned about them a mere twenty or thirty thousand times. 2010-08-27: * (seebs) fix a bug caused by memcmp with wrong length * (seebs) stop hand-coding lengths of memcmp (torek was right...) 2010-08-26: * (seebs) make offsets.c slightly less useless * (seebs) don't overwrite LD_LIBRARY_PATH values that include us 2010-08-25: * (seebs) fix the signal mask restore 2010-08-24: * (seebs) try to restore signal mask before calling exec() * (seebs) move errno restoration after code which could set errno 2010-08-19: * (seebs) handle insane edge case involving regcomp/regexec 2010-08-17: * (seebs) create speculative-deletion logic * (seebs) remove crackpot theories about cross-device renames 2010-08-16: * (rp) Fix ld_preload/ld_library_path mixup. * (seebs) Handle failed allocations. * (seebs) Fix logic for dropping empty LD_PRELOAD. 2010-08-12: * (seebs) Fix install of libpseudo so the plain library is created when using $(SUFFIX), this is needed so pseudo daemons don't need to know $(SUFFIX) so you can use prebuilts. * (seebs) Remove spurious "const" from modifiable table. 2010-08-11: * (seebs) document the new variables. 2010-08-10: * (mhatle) add execl, execle, execlp, execv, and execvp wrappers * (seebs) handle ... for execl, etc. * (mhatle) add a local cache of variables, instead of using environ * (mhatle) rewrite pseudo_setupenv, pseudo_dropenv routines we now support running "/usr/bin/env -i env" in pseudo! 2010-08-06: * (mhatle) Fix an exec program with an empty environment 2010-08-03: * (mhatle) Fix parallel build problem * (mhatle) allow both environment CFLAGS and internals CFLAGS * (mhatle) add PSEUDO_BINDIR, PSEUDO_LIBDIR, PSEUDO_LOCALSTATEDIR to allow specific overrides above and beyond PSEUDO_PREFIX 2010-07-30: * (kscherer) added .gitignore file * (kscherer) added sqlite version check to configure script * (kscherer) added basic test harness * (kscherer) fixed bug that when moving a directory the contents of the dir were removed from the db 2010-06-29: * (seebs) handle the other half of the suffix case -- when libpseudo is in LD_PRELOAD under another name. * (seebs) remove a couple of debugging messages. 2010-06-28: 0.3 * (seebs) back out PSEUDO_SUFFIX -- it causes problem when rebuilding the library but not the server, but this is a permissible use case. 2010-06-21: * (seebs) add mkstemp64 2010-06-02: * (seebs) add PSEUDO_NOSYMLINKEXP feature and documentation. 2010-04-30: * (seebs) rework pdb_history * (seebs) small cleanups and bulletproofing. * (seebs) fix up PSEUDO_DEBUG_FILE, use it for server as well. 2010-04-27: * (seebs) fix -P in pseudolog * (seebs) document PSEUDO_DEBUG_FILE 2010-04-26: * (seebs) many bug fixes and updates * (seebs) allow deleting entries in pseudolog * (seebs) correct race conditions and related bugs 2010-04-20: * (seebs) add quick sanity-check option for pseudo * (seebs) report on rows deleted * (seebs) unlink after removing db entry to reduce race conditions 2010-04-19: * (seebs) fix crash if xstat() or similar routine called with null path * (seebs) fix list of client processes still running * (seebs) fix pathname mismatches introduced by chroot() support 2010-04-16: * (seebs) add tracking of program names * (seebs) track message types * (seebs) small bug fixes and improvements galore 2010-04-06: * (seebs) implement various passwd-related utilities, various bugfixes. 2010-03-25: * (seebs) fix return values. 2010-03-24: * (seebs) add chroot syscall * (seebs) add chroot handling to path canonicalization * (seebs) add many calls just to get path fixups * (seebs) handle virtualizing rootness of absolute symlinks 2010-03-24: * (seebs) regenerate wrappers when makewrappers is changed. * (seebs) begin prep for chroot * (seebs) standardize path expansion * (seebs) extend makewrappers to handle function pointer args 2010-03-17: * (seebs) fixup help options * (seebs) use strerror() in a couple more places * (seebs) mention ^ specification in pseudolog -h output. 2010-03-16: * (seebs) Fix missing error checking noted by comp.lang.c reader. 2010-03-16: 0.2 * first public release (There's no changelog before that, sorry.)