/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: 2021-02-03 23:10:42 UTC
  • Revision ID: teddy@recompile.se-20210203231042-2z3egrvpo1zt7nej
mandos-ctl: Fix bad test for command.Remove and related minor issues

The test for command.Remove removes all clients from the spy server,
and then loops over all clients, looking for the corresponding Remove
command as recorded by the spy server.  But since since there aren't
any clients left after they were removed, no assertions are made, and
the test therefore does nothing.  Fix this.

In tests for command.Approve and command.Deny, add checks that clients
were not somehow removed by the command (in which case, likewise, no
assertions are made).

Add related checks to TestPropertySetterCmd.runTest; i.e. test that a
sequence is not empty before looping over it and making assertions.

* mandos-ctl (TestBaseCommands.test_Remove): Save a copy of the
  original "clients" dict, and loop over those instead.  Add assertion
  that all clients were indeed removed.  Also fix the code which looks
  for the Remove command, which now needs to actually work.
  (TestBaseCommands.test_Approve, TestBaseCommands.test_Deny): Add
  assertion that there are still clients before looping over them.
  (TestPropertySetterCmd.runTest): Add assertion that the list of
  values to get is not empty before looping over them.  Also add check
  that there are still clients before looping over clients.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
# For info about _FORTIFY_SOURCE, see feature_test_macros(7)
31
31
# and <https://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html>.
32
 
FORTIFY:=-fstack-protector-all -fPIC
33
 
CPPFLAGS+=-D_FORTIFY_SOURCE=3
 
32
FORTIFY:=-D_FORTIFY_SOURCE=2 -fstack-protector-all -fPIC
34
33
LINK_FORTIFY_LD:=-z relro -z now
35
34
LINK_FORTIFY:=
36
35
 
42
41
#COVERAGE=--coverage
43
42
OPTIMIZE:=-Os -fno-strict-aliasing
44
43
LANGUAGE:=-std=gnu11
45
 
CPPFLAGS+=-D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
 
44
FEATURES:=-D_FILE_OFFSET_BITS=64
46
45
htmldir:=man
47
 
version:=1.8.17
 
46
version:=1.8.14
48
47
SED:=sed
49
48
PKG_CONFIG?=pkg-config
50
49
 
64
63
# DRACUTMODULE:=$(DESTDIR)/usr/lib/dracut/modules.d/90mandos
65
64
# STATEDIR:=$(DESTDIR)/var/lib/mandos
66
65
# LIBDIR:=$(PREFIX)/lib
67
 
# DBUSPOLICYDIR:=$(DESTDIR)/etc/dbus-1/system.d
68
66
##
69
67
 
70
68
## These settings are for a package-type install
85
83
                        break; \
86
84
                fi; \
87
85
        done)
88
 
DBUSPOLICYDIR:=$(DESTDIR)/usr/share/dbus-1/system.d
89
86
##
90
87
 
91
88
SYSTEMD:=$(DESTDIR)$(shell $(PKG_CONFIG) systemd \
99
96
GNUTLS_LIBS:=$(shell $(PKG_CONFIG) --libs gnutls)
100
97
AVAHI_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I avahi-core)
101
98
AVAHI_LIBS:=$(shell $(PKG_CONFIG) --libs avahi-core)
102
 
GPGME_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I gpgme 2>/dev/null \
103
 
        || gpgme-config --cflags; getconf LFS_CFLAGS)
104
 
GPGME_LIBS:=$(shell $(PKG_CONFIG) --libs gpgme 2>/dev/null \
105
 
        || gpgme-config --libs; getconf LFS_LIBS; \
 
99
GPGME_CFLAGS:=$(shell gpgme-config --cflags; getconf LFS_CFLAGS)
 
100
GPGME_LIBS:=$(shell gpgme-config --libs; getconf LFS_LIBS; \
106
101
        getconf LFS_LDFLAGS)
107
102
LIBNL3_CFLAGS:=$(shell $(PKG_CONFIG) --cflags-only-I libnl-route-3.0)
108
103
LIBNL3_LIBS:=$(shell $(PKG_CONFIG) --libs libnl-route-3.0)
111
106
 
112
107
# Do not change these two
113
108
CFLAGS+=$(WARN) $(DEBUG) $(FORTIFY) $(COVERAGE) $(OPTIMIZE) \
114
 
        $(LANGUAGE) -DVERSION='"$(version)"'
 
109
        $(LANGUAGE) $(FEATURES) -DVERSION='"$(version)"'
115
110
LDFLAGS+=-Xlinker --as-needed $(COVERAGE) $(LINK_FORTIFY) $(strip \
116
111
        ) $(foreach flag,$(LINK_FORTIFY_LD),-Xlinker $(flag))
117
112
 
289
284
                --expression='s/\(mandos_\)[0-9.]\+\(\.orig\.tar\.gz\)/\1$(version)\2/' \
290
285
                $@)
291
286
 
292
 
# Does the linker support the --no-warn-execstack option?
293
 
ifeq ($(shell echo 'int main(){}'|$(CC) --language=c /dev/stdin -o /dev/null -Xlinker --no-warn-execstack >/dev/null 2>&1 && echo yes),yes)
294
 
# These programs use nested functions, which uses an executable stack
295
 
plugin-runner: LDFLAGS += -Xlinker --no-warn-execstack
296
 
dracut-module/password-agent: LDFLAGS += -Xlinker --no-warn-execstack
297
 
plugins.d/password-prompt: LDFLAGS += -Xlinker --no-warn-execstack
298
 
plugins.d/mandos-client: LDFLAGS += -Xlinker --no-warn-execstack
299
 
plugins.d/plymouth: LDFLAGS += -Xlinker --no-warn-execstack
300
 
endif
301
 
 
302
287
# Need to add the GnuTLS, Avahi and GPGME libraries
303
288
plugins.d/mandos-client: CFLAGS += $(GNUTLS_CFLAGS) $(strip \
304
289
        ) $(AVAHI_CFLAGS) $(GPGME_CFLAGS)
311
296
 
312
297
# Need to add the GLib and pthread libraries
313
298
dracut-module/password-agent: CFLAGS += $(GLIB_CFLAGS)
314
 
# Note: -lpthread is unnecessary with the GNU C library 2.34 or later
315
299
dracut-module/password-agent: LDLIBS += $(GLIB_LIBS) -lpthread
316
300
 
317
301
.PHONY: clean
385
369
 
386
370
# Used by run-server
387
371
confdir/mandos.conf: mandos.conf
388
 
        install -D --mode=u=rw,go=r $^ $@
 
372
        install --directory confdir
 
373
        install --mode=u=rw,go=r $^ $@
389
374
confdir/clients.conf: clients.conf keydir/seckey.txt keydir/tls-pubkey.pem
390
 
        install -D --mode=u=rw $< $@
 
375
        install --directory confdir
 
376
        install --mode=u=rw $< $@
391
377
# Add a client password
392
378
        ./mandos-keygen --dir keydir --password --no-ssh >> $@
393
379
statedir:
398
384
 
399
385
.PHONY: install-html
400
386
install-html: html
401
 
        install -D --mode=u=rw,go=r --target-directory=$(htmldir) \
 
387
        install --directory $(htmldir)
 
388
        install --mode=u=rw,go=r --target-directory=$(htmldir) \
402
389
                $(htmldocs)
403
390
 
404
391
.PHONY: install-server
405
392
install-server: doc
 
393
        install --directory $(CONFDIR)
406
394
        if install --directory --mode=u=rwx --owner=$(USER) \
407
395
                --group=$(GROUP) $(STATEDIR); then \
408
396
                :; \
409
397
        elif install --directory --mode=u=rwx $(STATEDIR); then \
410
398
                chown -- $(USER):$(GROUP) $(STATEDIR) || :; \
411
399
        fi
412
 
        if [ "$(TMPFILES)" != "$(DESTDIR)" ]; then \
413
 
                install -D --mode=u=rw,go=r tmpfiles.d-mandos.conf \
 
400
        if [ "$(TMPFILES)" != "$(DESTDIR)" \
 
401
                        -a -d "$(TMPFILES)" ]; then \
 
402
                install --mode=u=rw,go=r tmpfiles.d-mandos.conf \
414
403
                        $(TMPFILES)/mandos.conf; \
415
404
        fi
416
 
        if [ "$(SYSUSERS)" != "$(DESTDIR)" ]; then \
417
 
                install -D --mode=u=rw,go=r sysusers.d-mandos.conf \
 
405
        if [ "$(SYSUSERS)" != "$(DESTDIR)" \
 
406
                        -a -d "$(SYSUSERS)" ]; then \
 
407
                install --mode=u=rw,go=r sysusers.d-mandos.conf \
418
408
                        $(SYSUSERS)/mandos.conf; \
419
409
        fi
420
 
        install --directory $(PREFIX)/sbin
421
 
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
422
 
                mandos
 
410
        install --mode=u=rwx,go=rx mandos $(PREFIX)/sbin/mandos
423
411
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
424
412
                mandos-ctl
425
413
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
426
414
                mandos-monitor
427
 
        install --directory $(CONFDIR)
428
415
        install --mode=u=rw,go=r --target-directory=$(CONFDIR) \
429
416
                mandos.conf
430
417
        install --mode=u=rw --target-directory=$(CONFDIR) \
431
418
                clients.conf
432
 
        install -D --mode=u=rw,go=r dbus-mandos.conf \
433
 
                $(DBUSPOLICYDIR)/mandos.conf
434
 
        install -D --mode=u=rwx,go=rx init.d-mandos \
 
419
        install --mode=u=rw,go=r dbus-mandos.conf \
 
420
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
 
421
        install --mode=u=rwx,go=rx init.d-mandos \
435
422
                $(DESTDIR)/etc/init.d/mandos
436
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" ]; then \
437
 
                install -D --mode=u=rw,go=r mandos.service \
438
 
                        $(SYSTEMD); \
 
423
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
 
424
                install --mode=u=rw,go=r mandos.service $(SYSTEMD); \
439
425
        fi
440
 
        install -D --mode=u=rw,go=r default-mandos \
 
426
        install --mode=u=rw,go=r default-mandos \
441
427
                $(DESTDIR)/etc/default/mandos
442
428
        if [ -z $(DESTDIR) ]; then \
443
429
                update-rc.d mandos defaults 25 15;\
444
430
        fi
445
 
        install --directory $(MANDIR)/man8 $(MANDIR)/man5
446
431
        gzip --best --to-stdout mandos.8 \
447
432
                > $(MANDIR)/man8/mandos.8.gz
448
433
        gzip --best --to-stdout mandos-monitor.8 \
458
443
 
459
444
.PHONY: install-client-nokey
460
445
install-client-nokey: all doc
 
446
        install --directory $(LIBDIR)/mandos $(CONFDIR)
461
447
        install --directory --mode=u=rwx $(KEYDIR) \
462
448
                $(LIBDIR)/mandos/plugins.d \
463
449
                $(LIBDIR)/mandos/plugin-helpers
464
 
        if [ "$(SYSUSERS)" != "$(DESTDIR)" ]; then \
465
 
                install -D --mode=u=rw,go=r sysusers.d-mandos.conf \
 
450
        if [ "$(SYSUSERS)" != "$(DESTDIR)" \
 
451
                        -a -d "$(SYSUSERS)" ]; then \
 
452
                install --mode=u=rw,go=r sysusers.d-mandos.conf \
466
453
                        $(SYSUSERS)/mandos-client.conf; \
467
454
        fi
468
455
        if [ "$(CONFDIR)" != "$(LIBDIR)/mandos" ]; then \
469
 
                install --directory \
470
 
                        --mode=u=rwx "$(CONFDIR)/plugins.d" \
 
456
                install --mode=u=rwx \
 
457
                        --directory "$(CONFDIR)/plugins.d" \
471
458
                        "$(CONFDIR)/plugin-helpers"; \
472
459
        fi
473
 
        install --directory --mode=u=rwx,go=rx \
 
460
        install --mode=u=rwx,go=rx --directory \
474
461
                "$(CONFDIR)/network-hooks.d"
475
462
        install --mode=u=rwx,go=rx \
476
463
                --target-directory=$(LIBDIR)/mandos plugin-runner
477
464
        install --mode=u=rwx,go=rx \
478
465
                --target-directory=$(LIBDIR)/mandos \
479
466
                mandos-to-cryptroot-unlock
480
 
        install --directory $(PREFIX)/sbin
481
467
        install --mode=u=rwx,go=rx --target-directory=$(PREFIX)/sbin \
482
468
                mandos-keygen
483
469
        install --mode=u=rwx,go=rx \
501
487
        install --mode=u=rwx,go=rx \
502
488
                --target-directory=$(LIBDIR)/mandos/plugin-helpers \
503
489
                plugin-helpers/mandos-client-iprouteadddel
504
 
        install -D initramfs-tools-hook \
 
490
        install initramfs-tools-hook \
505
491
                $(INITRAMFSTOOLS)/hooks/mandos
506
 
        install -D --mode=u=rw,go=r initramfs-tools-conf \
 
492
        install --mode=u=rw,go=r initramfs-tools-conf \
507
493
                $(INITRAMFSTOOLS)/conf.d/mandos-conf
508
 
        install -D --mode=u=rw,go=r initramfs-tools-conf-hook \
 
494
        install --mode=u=rw,go=r initramfs-tools-conf-hook \
509
495
                $(INITRAMFSTOOLS)/conf-hooks.d/zz-mandos
510
 
        install -D initramfs-tools-script \
 
496
        install initramfs-tools-script \
511
497
                $(INITRAMFSTOOLS)/scripts/init-premount/mandos
512
 
        install -D initramfs-tools-script-stop \
 
498
        install initramfs-tools-script-stop \
513
499
                $(INITRAMFSTOOLS)/scripts/local-premount/mandos
514
 
        install -D --mode=u=rw,go=r \
515
 
                --target-directory=$(DRACUTMODULE) \
 
500
        install --directory $(DRACUTMODULE)
 
501
        install --mode=u=rw,go=r --target-directory=$(DRACUTMODULE) \
516
502
                dracut-module/ask-password-mandos.path \
517
503
                dracut-module/ask-password-mandos.service
518
504
        install --mode=u=rwxs,go=rx \
521
507
                dracut-module/cmdline-mandos.sh \
522
508
                dracut-module/password-agent
523
509
        install --mode=u=rw,go=r plugin-runner.conf $(CONFDIR)
524
 
        install --directory $(MANDIR)/man8
525
510
        gzip --best --to-stdout mandos-keygen.8 \
526
511
                > $(MANDIR)/man8/mandos-keygen.8.gz
527
512
        gzip --best --to-stdout plugin-runner.8mandos \
624
609
                $(DESTDIR)/etc/dbus-1/system.d/mandos.conf
625
610
                $(DESTDIR)/etc/default/mandos \
626
611
                $(DESTDIR)/etc/init.d/mandos \
 
612
                $(SYSTEMD)/mandos.service \
627
613
                $(DESTDIR)/run/mandos.pid \
628
614
                $(DESTDIR)/var/run/mandos.pid
629
 
        if [ "$(SYSTEMD)" != "$(DESTDIR)" -a -d "$(SYSTEMD)" ]; then \
630
 
                -rm --force -- $(SYSTEMD)/mandos.service; \
631
 
        fi
632
615
        -rmdir $(CONFDIR)
633
616
 
634
617
.PHONY: purge-client