2
0
mirror of https://github.com/msantos/xmppipe synced 2024-11-16 00:12:59 +00:00
Commit Graph

17 Commits

Author SHA1 Message Date
Michael Santos
26ef980678 makefile: env vars to pass extra build flags 2017-04-26 07:23:55 -04:00
Michael Santos
db0769c1fd makefile: fix static target 2017-04-23 09:55:09 -04:00
Michael Santos
3e9f34f1fb openbsd/freebsd: cc hardening flags 2017-04-20 11:33:25 -04:00
Michael Santos
140470458f makefile: ensure compile before tests 2017-04-16 15:24:01 -04:00
Michael Santos
ad39d23c05 test: base64 encode/decode 2017-02-18 09:56:22 -05:00
Michael Santos
7d1fb8fdb8 makefile: add target for test 2017-02-17 09:57:32 -05:00
Michael Santos
4a440def98 Enforce sandboxing 2017-02-05 09:18:56 -05:00
Michael Santos
2bf9415683 sandbox: enable capabilities sandbox on FreeBSD 2017-02-04 09:00:49 -05:00
Michael Santos
707d7cf19d Display enforced sandbox in verbose mode 2017-02-03 09:47:12 -05:00
Michael Santos
c346c863e4 sandbox: set number of allowed fd's
The number of file descriptors enforced by setrlimit() can now be set at
compile time using a flag. The flag defaults to 0 on Linux and -1
everywhere else:

    XMPPIPE_SANDBOX=XMPPIPE_SANDBOX_RLIMIT \
    XMPPIPE_SANDBOX_RLIMIT_NOFILE=-1 \
    make

The meaning of the XMPPIPE_SANDBOX_RLIMIT_NOFILE is:

* -1 : set rlim_cur/rlim_max to the lowest allocated file desciptor

* >=0: set rlim_cur/rlim_max to this number

On some platforms, setting rlim_cur below the value of the highest
allocated fd may interfere with polling. See commit a34d5766c5 for
details.
2017-02-01 10:25:38 -05:00
Michael Santos
cc665538cb sandbox: stdio mode using pledge(2) on OpenBSD 2017-01-30 10:17:54 -05:00
Michael Santos
a7d0ca7e47 Initial support for sandboxing
Prepare for sandboxing the xmppipe process by adding a function called
after all file descriptors are allocated.

The intent of the sandbox is to limit the xmppipe process to the role
of a component in a shell pipeline: reading from stdin, reading/writing
to the XMPP socket and writing to stdout. Any activity not involved with
using stdio should force the process to exit.

The sandbox function will vary based on the capabilities of the
platform. The default sandbox function does nothing.

Limitations of the sandbox:

Probably the biggest risk is in session establishment:
* the TLS handshake
* the XML parsing

The sandbox is enforced after the TLS connection is established, i.e.,
after the file descriptor for the XMPP session is allocated and so has no
effect on the TLS handshake or the initial XMPP handshake.

Possibly an initial sandbox could be setup for the connection phase
followed by a stricter sandbox for the stdio phase.
2017-01-29 09:44:12 -05:00
Michael Santos
a7717f381e Add compiler hardening flags 2016-02-03 10:17:31 -05:00
Michael Santos
a392e836a0 Compile on BSDs
Use uuid_create(3) and uuid_to_string(3) to create the message id on
BSDs. Only tested on FreeBSD but should work on OpenBSD and NetBSD.

Add untested support for compiling on Solaris and Mac OS X:

* SmartOS has libuuid installed by default with rsyslog via pkgsrc

* Mac OS X has libuuid as part of libSystem:

http://lists.apple.com/archives/unix-porting/2009/Aug/msg00006.html
2015-07-01 09:31:44 -04:00
Michael Santos
da5fecd041 makefile: static target, link against libresolv
libresolv is required for base64 encoding.
2015-05-25 10:20:04 -04:00
Michael Santos
353951298e Generate a unique ID per message
Add a ID per message. Seems to fix the duplicate messages seen with MUCs
on the Conversations android client whenever the network is switched
(e.g., from wifi to cell).

Introduce a dependency on Linux's libuuid which introduces portability
issues. However, it should be simple to add support for the BSD UUID
interface.

libuuid was used because it is a fast and simple way of generating
a unique id.  Realistically, the ID only needs to be unique within
the MUC and so could probably be replaced with an sprintf() combining
time of day, PID and a random number.
2015-05-14 06:56:58 -04:00
Michael Santos
3d79e9fda8 Forward stdin over XMPP 2015-05-11 15:19:35 -04:00