wrapping dynamic syscalls with wrap(1)
Oliver Fromme
olli at lurza.secnetix.de
Thu Sep 27 07:32:16 PDT 2007
cpghost <cpghost at cordula.ws> wrote:
> Daichi GOTO wrote:
> > And unusual commands like chflags I just suppose are no much
I think that chflags(1) is not "unusual". A non-standard
extension to rm(1) would be unusual.
> > point in this case. What is important is that adding mistake
> > protecting functions into common commands like rm(1) itself.
>
> Perhaps the solution is not general enough: rm(1) is but one
> program using the unlink(2) syscall. Why not protect unlink(2)
> itself by wrapping it into a function that does all this checking
> that you're putting into safety-rm right now?
>
> Users who want to protect themselves could then dynamically
> link this unlink-wrapper into all their applications. When an
> application calls unlink(2), that call will be diverted to
> unlink(3), the wrapper.
That's an interesting idea.
> Ideally, users should have a generic way to wrap syscalls (or
> other dynamic library calls) with a program similar to env(1),
> let's call it wrap(1). A call to wrap(1):
>
> $ wrap lib1 lib2 lib3 ... prog
How is that different from this:
$ LD_PRELOAD="lib1 lib2 lib3 ..." prog
Well, if you want to save a little bit of typing, wrap(1)
could be trivially implemented as a shell script:
#/bin/sh -
if [ $# -lt 1 ]; then
echo "Usage: ${0##*/} [<lib> ...] <prog>" >&2
exit 1
fi
eval PROG=\$$#
LIBS=${*%$PROG}
LD_PRELOAD="${LIBS% }" exec "$PROG"
By the way, I have used the LD_PRELOAD trick in the past;
it works fine. I used it to wrap a few functions in libX11
in order to capture video and audio from certain closed-
source player applications that didn't allow to save media
files to disk.
Best regards
Oliver
--
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd
"FreeBSD is Yoda, Linux is Luke Skywalker"
-- Daniel C. Sobral
More information about the freebsd-current
mailing list