/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Teddy Hogeborn
  • Date: 2015-07-20 03:03:33 UTC
  • Revision ID: teddy@recompile.se-20150720030333-203m2aeblypcsfte
Bug fix for GnuTLS 3: be compatible with old 2048-bit DSA keys.

The mandos-keygen program in Mandos version 1.6.0 and older generated
2048-bit DSA keys, and when GnuTLS uses these it has trouble
connecting using the Mandos default priority string.  This was
previously fixed in Mandos 1.6.2, but the bug reappeared when using
GnuTLS 3, so the default priority string has to change again; this
time also the Mandos client has to change its default, so now the
server and the client should use the same default priority string:

SECURE256:!CTYPE-X.509:+CTYPE-OPENPGP:!RSA:+SIGN-DSA-SHA256

* mandos (main/server_defaults): Changed default priority string.
* mandos-options.xml (/section/para[id="priority_compat"]): Removed.
  (/section/para[id="priority"]): Changed default priority string.
* mandos.conf ([DEFAULT]/priority): - '' -
* mandos.conf.xml (OPTIONS/priority): Refer to the id "priority"
                                      instead of "priority_compat".
* mandos.xml (OPTIONS/--priority): - '' -
* plugins.d/mandos-client.c (main): Changed default priority string.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WARN=-O -Wall -Wformat=2 -Winit-self -Wmissing-include-dirs \
2
 
        -Wswitch-default -Wswitch-enum -Wunused-parameter \
3
 
        -Wstrict-aliasing=1 -Wextra -Wfloat-equal -Wundef -Wshadow \
 
1
WARN=-O -Wall -Wextra -Wdouble-promotion -Wformat=2 -Winit-self \
 
2
        -Wmissing-include-dirs -Wswitch-default -Wswitch-enum \
 
3
        -Wunused -Wuninitialized -Wstrict-overflow=5 \
 
4
        -Wsuggest-attribute=pure -Wsuggest-attribute=const \
 
5
        -Wsuggest-attribute=noreturn -Wfloat-equal -Wundef -Wshadow \
4
6
        -Wunsafe-loop-optimizations -Wpointer-arith \
5
7
        -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings \
6
 
        -Wconversion -Wstrict-prototypes -Wold-style-definition \
7
 
        -Wpacked -Wnested-externs -Winline -Wvolatile-register-var
8
 
#       -Wunreachable-code
 
8
        -Wconversion -Wlogical-op -Waggregate-return \
 
9
        -Wstrict-prototypes -Wold-style-definition \
 
10
        -Wmissing-format-attribute -Wnormalized=nfc -Wpacked \
 
11
        -Wredundant-decls -Wnested-externs -Winline -Wvla \
 
12
        -Wvolatile-register-var -Woverlength-strings
9
13
#DEBUG=-ggdb3
10
 
# For info about _FORTIFY_SOURCE, see
11
 
# <http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html>
 
14
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
12
15
# and <http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
13
16
FORTIFY=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
14
17
LINK_FORTIFY_LD=-z relro -z now
20
23
LINK_FORTIFY += -pie
21
24
endif
22
25
#COVERAGE=--coverage
23
 
OPTIMIZE=-Os
24
 
LANGUAGE=-std=gnu99
 
26
OPTIMIZE=-Os -fno-strict-aliasing
 
27
LANGUAGE=-std=gnu11
25
28
htmldir=man
26
 
version=1.6.2
 
29
version=1.6.9
27
30
SED=sed
28
31
 
29
32
USER=$(firstword $(subst :, ,$(shell getent passwd _mandos || getent passwd nobody || echo 65534)))
36
39
# MANDIR=$(PREFIX)/man
37
40
# INITRAMFSTOOLS=$(DESTDIR)/etc/initramfs-tools
38
41
# STATEDIR=$(DESTDIR)/var/lib/mandos
 
42
# LIBDIR=$(PREFIX)/lib
39
43
##
40
44
 
41
45
## These settings are for a package-type install
45
49
MANDIR=$(PREFIX)/share/man
46
50
INITRAMFSTOOLS=$(DESTDIR)/usr/share/initramfs-tools
47
51
STATEDIR=$(DESTDIR)/var/lib/mandos
 
52
LIBDIR=$(shell \
 
53
        for d in \
 
54
        "/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`" \
 
55
        "`rpm --eval='%{_libdir}' 2>/dev/null`" /usr/lib; do \
 
56
                if [ -d "$$d" -a "$$d" = "$${d%/}" ]; then \
 
57
                        echo "$(DESTDIR)$$d"; \
 
58
                        break; \
 
59
                fi; \
 
60
        done)
48
61
##
49
62
 
50
63
SYSTEMD=$(DESTDIR)$(shell pkg-config systemd --variable=systemdsystemunitdir)
56
69
GPGME_CFLAGS=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
57
70
GPGME_LIBS=$(shell gpgme-config --libs; getconf LFS_LIBS; \
58
71
        getconf LFS_LDFLAGS)
 
72
LIBNL3_CFLAGS=$(shell pkg-config --cflags-only-I libnl-route-3.0)
 
73
LIBNL3_LIBS=$(shell pkg-config --libs libnl-route-3.0)
59
74
 
60
75
# Do not change these two
61
76
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
72
87
        --param man.authors.section.enabled     0 \
73
88
        /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl \
74
89
        $(notdir $<); \
75
 
        $(MANPOST) $(notdir $@);\
76
90
        if locale --all 2>/dev/null | grep --regexp='^en_US\.utf8$$' \
77
91
        && type man 2>/dev/null; then LANG=en_US.UTF-8 MANWIDTH=80 \
78
92
        man --warnings --encoding=UTF-8 --local-file $(notdir $@); \
79
93
        fi >/dev/null)
80
 
# DocBook-to-man post-processing to fix a '\n' escape bug
81
 
MANPOST=$(SED) --in-place --expression='s,\\\\en,\\en,g;s,\\n,\\en,g'
82
94
 
83
95
DOCBOOKTOHTML=$(strip xsltproc --nonet --xinclude \
84
96
        --param make.year.ranges                1 \
96
108
PLUGINS=plugins.d/password-prompt plugins.d/mandos-client \
97
109
        plugins.d/usplash plugins.d/splashy plugins.d/askpass-fifo \
98
110
        plugins.d/plymouth
99
 
CPROGS=plugin-runner $(PLUGINS)
 
111
PLUGIN_HELPERS=plugin-helpers/mandos-client-iprouteadddel
 
112
CPROGS=plugin-runner $(PLUGINS) $(PLUGIN_HELPERS)
100
113
PROGS=mandos mandos-keygen mandos-ctl mandos-monitor $(CPROGS)
101
114
DOCS=mandos.8 mandos-keygen.8 mandos-monitor.8 mandos-ctl.8 \
102
115
        mandos.conf.5 mandos-clients.conf.5 plugin-runner.8mandos \
229
242
        $(LINK.c) $^ -lrt $(GNUTLS_LIBS) $(AVAHI_LIBS) $(strip\
230
243
                ) $(GPGME_LIBS) $(LOADLIBES) $(LDLIBS) -o $@
231
244
 
232
 
.PHONY : all doc html clean distclean run-client run-server install \
233
 
        install-server install-client uninstall uninstall-server \
234
 
        uninstall-client purge purge-server purge-client
 
245
plugin-helpers/mandos-client-iprouteadddel: plugin-helpers/mandos-client-iprouteadddel.c
 
246
        $(LINK.c) $(LIBNL3_CFLAGS) $^ $(LIBNL3_LIBS) $(strip\
 
247
                ) $(LOADLIBES) $(LDLIBS) -o $@
 
248
 
 
249
.PHONY : all doc html clean distclean mostlyclean maintainer-clean \
 
250
        check run-client run-server install install-html \
 
251
        install-server install-client-nokey install-client uninstall \
 
252
        uninstall-server uninstall-client purge purge-server \
 
253
        purge-client
235
254
 
236
255
clean:
237
256
        -rm --force $(CPROGS) $(objects) $(htmldocs) $(DOCS) core
252
271
        @echo "# ignored.  The messages are caused by not running as root, but   #"
253
272
        @echo "# you should NOT run \"make run-client\" as root unless you also    #"
254
273
        @echo "# unpacked and compiled Mandos as root, which is NOT recommended. #"
255
 
        @echo "# From plugin-runner: setuid: Operation not permitted             #"
 
274
        @echo "# From plugin-runner: setgid: Operation not permitted             #"
 
275
        @echo "#                     setuid: Operation not permitted             #"
256
276
        @echo "# From askpass-fifo:  mkfifo: Permission denied                   #"
257
 
        @echo "# From mandos-client: setuid: Operation not permitted             #"
258
 
        @echo "#                     seteuid: Operation not permitted            #"
259
 
        @echo "#                     klogctl: Operation not permitted            #"
 
277
        @echo "# From mandos-client:                                             #"
 
278
        @echo "#             Failed to raise privileges: Operation not permitted #"
 
279
        @echo "#             Warning: network hook \"*\" exited with status *      #"
260
280
        @echo "###################################################################"
 
281
# We set GNOME_KEYRING_CONTROL to block pam_gnome_keyring
261
282
        ./plugin-runner --plugin-dir=plugins.d \
 
283
                --plugin-helper-dir=plugin-helpers \
262
284
                --config-file=plugin-runner.conf \
263
285
                --options-for=mandos-client:--seckey=keydir/seckey.txt,--pubkey=keydir/pubkey.txt,--network-hook-dir=network-hooks.d \
 
286
                --env-for=mandos-client:GNOME_KEYRING_CONTROL= \
264
287
                $(CLIENTARGS)
265
288
 
266
289
# Used by run-client
281
304
        install --directory confdir
282
305
        install --mode=u=rw $< $@
283
306
# Add a client password
284
 
        ./mandos-keygen --dir keydir --password >> $@
 
307
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
285
308
statedir:
286
309
        install --directory statedir
287
310
 
294
317
 
295
318
install-server: doc
296
319
        install --directory $(CONFDIR)
297
 
        install --directory --mode=u=rwx --owner=$(USER) \
298
 
                --group=$(GROUP) $(STATEDIR)
 
320
        if install --directory --mode=u=rwx --owner=$(USER) \
 
321
                --group=$(GROUP) $(STATEDIR); then \
 
322
                :; \
 
323
        elif install --directory --mode=u=rwx $(STATEDIR); then \
 
324
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
 
325
        fi
299
326
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
300
327
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
301
328
                mandos-ctl
331
358
                > $(MANDIR)/man8/intro.8mandos.gz
332
359
 
333
360
install-client-nokey: all doc
334
 
        install --directory $(PREFIX)/lib/mandos $(CONFDIR)
 
361
        install --directory $(LIBDIR)/mandos $(CONFDIR)
335
362
        install --directory --mode=u=rwx $(KEYDIR) \
336
 
                $(PREFIX)/lib/mandos/plugins.d
337
 
        if [ "$(CONFDIR)" != "$(PREFIX)/lib/mandos" ]; then \
 
363
                $(LIBDIR)/mandos/plugins.d \
 
364
                $(LIBDIR)/mandos/plugin-helpers
 
365
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
338
366
                install --mode=u=rwx \
339
367
                        --directory "$(CONFDIR)/plugins.d"; \
 
368
                install --directory "$(CONFDIR)/plugin-helpers"; \
340
369
        fi
341
370
        install --mode=u=rwx,go=rx --directory \
342
371
                "$(CONFDIR)/network-hooks.d"
343
372
        install --mode=u=rwx,go=rx \
344
 
                --target-directory=$(PREFIX)/lib/mandos plugin-runner
 
373
                --target-directory=$(LIBDIR)/mandos plugin-runner
345
374
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
346
375
                mandos-keygen
347
376
        install --mode=u=rwx,go=rx \
348
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
377
                --target-directory=$(LIBDIR)/mandos/plugins.d \
349
378
                plugins.d/password-prompt
350
379
        install --mode=u=rwxs,go=rx \
351
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
380
                --target-directory=$(LIBDIR)/mandos/plugins.d \
352
381
                plugins.d/mandos-client
353
382
        install --mode=u=rwxs,go=rx \
354
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
383
                --target-directory=$(LIBDIR)/mandos/plugins.d \
355
384
                plugins.d/usplash
356
385
        install --mode=u=rwxs,go=rx \
357
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
386
                --target-directory=$(LIBDIR)/mandos/plugins.d \
358
387
                plugins.d/splashy
359
388
        install --mode=u=rwxs,go=rx \
360
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
389
                --target-directory=$(LIBDIR)/mandos/plugins.d \
361
390
                plugins.d/askpass-fifo
362
391
        install --mode=u=rwxs,go=rx \
363
 
                --target-directory=$(PREFIX)/lib/mandos/plugins.d \
 
392
                --target-directory=$(LIBDIR)/mandos/plugins.d \
364
393
                plugins.d/plymouth
 
394
        install --mode=u=rwxs,go=rx \
 
395
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
 
396
                plugin-helpers/mandos-client-iprouteadddel
365
397
        install initramfs-tools-hook \
366
398
                $(INITRAMFSTOOLS)/hooks/mandos
367
399
        install --mode=u=rw,go=r initramfs-tools-hook-conf \
412
444
        ! grep --regexp='^ *[^ #].*keyscript=[^,=]*/mandos/' \
413
445
                $(DESTDIR)/etc/crypttab
414
446
        -rm --force $(PREFIX)/sbin/mandos-keygen \
415
 
                $(PREFIX)/lib/mandos/plugin-runner \
416
 
                $(PREFIX)/lib/mandos/plugins.d/password-prompt \
417
 
                $(PREFIX)/lib/mandos/plugins.d/mandos-client \
418
 
                $(PREFIX)/lib/mandos/plugins.d/usplash \
419
 
                $(PREFIX)/lib/mandos/plugins.d/splashy \
420
 
                $(PREFIX)/lib/mandos/plugins.d/askpass-fifo \
421
 
                $(PREFIX)/lib/mandos/plugins.d/plymouth \
 
447
                $(LIBDIR)/mandos/plugin-runner \
 
448
                $(LIBDIR)/mandos/plugins.d/password-prompt \
 
449
                $(LIBDIR)/mandos/plugins.d/mandos-client \
 
450
                $(LIBDIR)/mandos/plugins.d/usplash \
 
451
                $(LIBDIR)/mandos/plugins.d/splashy \
 
452
                $(LIBDIR)/mandos/plugins.d/askpass-fifo \
 
453
                $(LIBDIR)/mandos/plugins.d/plymouth \
422
454
                $(INITRAMFSTOOLS)/hooks/mandos \
423
455
                $(INITRAMFSTOOLS)/conf-hooks.d/mandos \
424
456
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos \
430
462
                $(MANDIR)/man8/splashy.8mandos.gz \
431
463
                $(MANDIR)/man8/askpass-fifo.8mandos.gz \
432
464
                $(MANDIR)/man8/plymouth.8mandos.gz \
433
 
        -rmdir $(PREFIX)/lib/mandos/plugins.d $(CONFDIR)/plugins.d \
434
 
                 $(PREFIX)/lib/mandos $(CONFDIR) $(KEYDIR)
 
465
        -rmdir $(LIBDIR)/mandos/plugins.d $(CONFDIR)/plugins.d \
 
466
                 $(LIBDIR)/mandos $(CONFDIR) $(KEYDIR)
435
467
        update-initramfs -k all -u
436
468
 
437
469
purge: purge-server purge-client