]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/commitdiff
Install libcoloredstderr.so read-only.
authorSimon Ruderich <simon@ruderich.org>
Fri, 14 Jun 2013 11:40:06 +0000 (13:40 +0200)
committerSimon Ruderich <simon@ruderich.org>
Fri, 14 Jun 2013 11:40:06 +0000 (13:40 +0200)
Prevents accidental truncates of libcoloredstderr.so with `cp` which
crash all programs which have loaded it.

README
src/Makefile.am

diff --git a/README b/README
index 34cff3029bd41bdcdf99e6bec6631c8d5990d0cd..298ce4ff3c6346ce373afcf2bb421fc77dd588ea 100644 (file)
--- a/README
+++ b/README
@@ -51,6 +51,11 @@ inconsistent state causing a segmentation fault when using any functions of
 the library. Just remove the file first and then copy it. `make install`
 handles the install in this way and is therefore not affected.
 
+As a simple safeguard, `make` builds and installs the `libcoloredstderr.so`
+file non-writable to prevent accidental overwrites. Even if the overwrite is
+forced with `cp -f`, the file is unlinked and recreated by `cp` because the
+file is non-writable, preventing the problem.
+
 
 USAGE
 -----
index 1526e1d5eafc640df46936b89fd9cff40b26fc8e..46f9289437bc038dfdcd73bfee55f96155cb85cb 100644 (file)
@@ -6,3 +6,12 @@ libcoloredstderr_la_SOURCES = coloredstderr.c \
                               hookmacros.h \
                               ldpreload.h \
                               trackfds.h
+
+# Make sure the library is not writable. See README why this is important. Is
+# not run with `make libcoloredstderr.la`, but this isn't common usage.
+all-local: $(lib_LTLIBRARIES)
+       find .libs -type f -exec chmod ugo-w '{}' \;
+# `install` uses normal permissions, "fix" them so `make install` also
+# installs non-writable files.
+install-exec-hook:
+       find $(DESTDIR)$(libdir) -type f -exec chmod ugo-w '{}' \;