]> ruderich.org/simon Gitweb - nsscash/nsscash.git/log
nsscash/nsscash.git
5 years agonsscash: main_test: wrap overlong line
Simon Ruderich [Thu, 1 Aug 2019 20:16:13 +0000 (22:16 +0200)]
nsscash: main_test: wrap overlong line

5 years agonsscash: add basic tests for ParsePasswds()
Simon Ruderich [Thu, 1 Aug 2019 20:07:12 +0000 (22:07 +0200)]
nsscash: add basic tests for ParsePasswds()

5 years agonsscash: fix typo in test comment
Simon Ruderich [Sun, 14 Jul 2019 06:18:33 +0000 (08:18 +0200)]
nsscash: fix typo in test comment

5 years agoREADME: fix typo
Simon Ruderich [Sat, 29 Jun 2019 08:18:58 +0000 (10:18 +0200)]
README: fix typo

5 years agonsscash: main_test: add special tests
Simon Ruderich [Wed, 26 Jun 2019 12:13:31 +0000 (14:13 +0200)]
nsscash: main_test: add special tests

5 years agonsscash: main_test: add group tests
Simon Ruderich [Wed, 26 Jun 2019 12:13:02 +0000 (14:13 +0200)]
nsscash: main_test: add group tests

5 years agonsscash: main_test: add plain tests
Simon Ruderich [Wed, 26 Jun 2019 12:12:26 +0000 (14:12 +0200)]
nsscash: main_test: add plain tests

5 years agonsscash: main_test: add passwd tests
Simon Ruderich [Wed, 26 Jun 2019 12:11:29 +0000 (14:11 +0200)]
nsscash: main_test: add passwd tests

5 years agonsscash: main_test: add infrastructure and first basic test
Simon Ruderich [Wed, 26 Jun 2019 12:07:32 +0000 (14:07 +0200)]
nsscash: main_test: add infrastructure and first basic test

5 years agonsscash: file_test: restore log output after the test
Simon Ruderich [Wed, 26 Jun 2019 07:30:24 +0000 (09:30 +0200)]
nsscash: file_test: restore log output after the test

Otherwise this affects other test files as well.

5 years agoREADME: mention why write bits are removed from generated files
Simon Ruderich [Tue, 25 Jun 2019 08:07:45 +0000 (10:07 +0200)]
README: mention why write bits are removed from generated files

5 years agonsscash: remove write permissions of created files
Simon Ruderich [Mon, 17 Jun 2019 19:17:03 +0000 (21:17 +0200)]
nsscash: remove write permissions of created files

5 years agonsscash: test deployFile() sets permissions properly
Simon Ruderich [Mon, 17 Jun 2019 19:07:19 +0000 (21:07 +0200)]
nsscash: test deployFile() sets permissions properly

5 years agonss: remove pointer indirection in search_key's id member
Simon Ruderich [Mon, 17 Jun 2019 18:43:42 +0000 (20:43 +0200)]
nss: remove pointer indirection in search_key's id member

There's no reason to use a pointer here. Setting name to NULL already
marks that an id is to be used.

5 years agonss: reduce code duplication in _nss_cash_setpwent/_nss_cash_setgrent
Simon Ruderich [Mon, 17 Jun 2019 18:39:52 +0000 (20:39 +0200)]
nss: reduce code duplication in _nss_cash_setpwent/_nss_cash_setgrent

5 years agonsscash: convert: create file atomically
Simon Ruderich [Fri, 14 Jun 2019 18:28:29 +0000 (20:28 +0200)]
nsscash: convert: create file atomically

Previously the file was first truncated or created and then written to.
Although "convert" is not designed to be used for deployment, it is a
unexpected behavior.

5 years agonsscash: go fmt
Simon Ruderich [Fri, 14 Jun 2019 18:21:12 +0000 (20:21 +0200)]
nsscash: go fmt

5 years agonsscash: return error instead of calling log.Fatal()
Simon Ruderich [Fri, 14 Jun 2019 18:20:25 +0000 (20:20 +0200)]
nsscash: return error instead of calling log.Fatal()

5 years agonsscash: split main() into separate functions
Simon Ruderich [Fri, 14 Jun 2019 18:19:02 +0000 (20:19 +0200)]
nsscash: split main() into separate functions

5 years agonsscash: store and check hash of deployed files
Simon Ruderich [Thu, 13 Jun 2019 06:25:09 +0000 (08:25 +0200)]
nsscash: store and check hash of deployed files

The goal is to detect manual modifications of the deployed files. As we
store only the last modification in the state file and don't check the
deployed file itself, modifications go unnoticed.

An alternative would be to check the last modification time of the
deployed files. But a hash is safer as possible corruptions to the file
are detected as well.

5 years agonsscash: write state on each successful run
Simon Ruderich [Thu, 13 Jun 2019 05:58:04 +0000 (07:58 +0200)]
nsscash: write state on each successful run

5 years agoMakefile: remove recursion from go commands
Simon Ruderich [Wed, 12 Jun 2019 07:30:35 +0000 (09:30 +0200)]
Makefile: remove recursion from go commands

All go files are in the top level directory.

5 years agonss: add todo
Simon Ruderich [Wed, 12 Jun 2019 07:20:10 +0000 (09:20 +0200)]
nss: add todo

5 years agoREADME: use proper comment character for TOML files
Simon Ruderich [Wed, 12 Jun 2019 06:51:30 +0000 (08:51 +0200)]
README: use proper comment character for TOML files

5 years agoMakefile: run go test in test target, not all target
Simon Ruderich [Wed, 12 Jun 2019 06:51:13 +0000 (08:51 +0200)]
Makefile: run go test in test target, not all target

5 years agonsscash: go fmt
Simon Ruderich [Wed, 12 Jun 2019 06:50:39 +0000 (08:50 +0200)]
nsscash: go fmt

5 years agonsscash: replace %s with %v in format string for File.Type
Simon Ruderich [Wed, 12 Jun 2019 06:48:16 +0000 (08:48 +0200)]
nsscash: replace %s with %v in format string for File.Type

File.Type is an int value with a stringer go:generate statement. Using
%s breaks running `go test` (which runs `go vet`) before running `go
generate`. Using %v has the same result and uses the stringified version
when available.

5 years agonsscash: report error for passwd/group without trailing newline
Simon Ruderich [Wed, 12 Jun 2019 06:45:49 +0000 (08:45 +0200)]
nsscash: report error for passwd/group without trailing newline

Previously this case was hidden because ReadString() can return a string
and an EOF error. To prevent this issue from going unnoticed error out.

5 years agonss: Makefile: don't link against asan
Simon Ruderich [Tue, 11 Jun 2019 09:05:49 +0000 (11:05 +0200)]
nss: Makefile: don't link against asan

This is not necessary and was only a hack to handle non-empty LD_PRELOAD
environment variables. We explicitly empty LD_PRELOAD before calling our
test binaries.

5 years agoCheck size limits and abort if they are violated
Simon Ruderich [Tue, 11 Jun 2019 09:05:08 +0000 (11:05 +0200)]
Check size limits and abort if they are violated

Also document them in the README and add tests.

5 years agonsscash: handle errors in SerializePasswd(), SerializeGroup()
Simon Ruderich [Tue, 11 Jun 2019 08:56:44 +0000 (10:56 +0200)]
nsscash: handle errors in SerializePasswd(), SerializeGroup()

No such errors are defined yet.

5 years agonsscash: support longer lines in passwd/group files
Simon Ruderich [Tue, 11 Jun 2019 08:53:43 +0000 (10:53 +0200)]
nsscash: support longer lines in passwd/group files

bufio.Scanner has an internal limit on the maximum token (= line)
length. We want to support larger lines in the future.

5 years agonss: tests: sort included headers
Simon Ruderich [Tue, 11 Jun 2019 07:48:05 +0000 (09:48 +0200)]
nss: tests: sort included headers

5 years agonss: Makefile: build libcash_test.so in tests/
Simon Ruderich [Mon, 10 Jun 2019 21:53:49 +0000 (23:53 +0200)]
nss: Makefile: build libcash_test.so in tests/

Prevents accidentally copying the test library instead of the actual NSS
library.

5 years agoREADME: document practices and tested systems
Simon Ruderich [Mon, 10 Jun 2019 21:40:00 +0000 (23:40 +0200)]
README: document practices and tested systems

5 years agonsscash: improve comments
Simon Ruderich [Mon, 10 Jun 2019 21:36:05 +0000 (23:36 +0200)]
nsscash: improve comments

5 years agonsscash: add alignBufferTo() helper
Simon Ruderich [Mon, 10 Jun 2019 21:34:45 +0000 (23:34 +0200)]
nsscash: add alignBufferTo() helper

5 years agonss: improve comments
Simon Ruderich [Mon, 10 Jun 2019 21:00:25 +0000 (23:00 +0200)]
nss: improve comments

5 years agonss: gr/pw: re-used variable
Simon Ruderich [Mon, 10 Jun 2019 20:59:08 +0000 (22:59 +0200)]
nss: gr/pw: re-used variable

Now that the key argument is const we can use this to reduces code
duplication.

5 years agonss: gr/pw: use key->name for NULL check
Simon Ruderich [Mon, 10 Jun 2019 20:57:40 +0000 (22:57 +0200)]
nss: gr/pw: use key->name for NULL check

This is consistent with search.c's bsearch_callback() which also checks
key->name first.

5 years agonss: gr/pw: make data const
Simon Ruderich [Mon, 10 Jun 2019 20:56:17 +0000 (22:56 +0200)]
nss: gr/pw: make data const

We cannot modify it anyway.

5 years agonss: search: make search_key argument const
Simon Ruderich [Mon, 10 Jun 2019 20:48:39 +0000 (22:48 +0200)]
nss: search: make search_key argument const

5 years agonss: search.h: re-order struct file members
Simon Ruderich [Mon, 10 Jun 2019 20:41:48 +0000 (22:41 +0200)]
nss: search.h: re-order struct file members

5 years agonss: file.h: re-order struct file members
Simon Ruderich [Mon, 10 Jun 2019 20:27:48 +0000 (22:27 +0200)]
nss: file.h: re-order struct file members

5 years agonss: merge cash.h into file.h
Simon Ruderich [Mon, 10 Jun 2019 20:26:00 +0000 (22:26 +0200)]
nss: merge cash.h into file.h

file.h is a more logical place anyway and this gets rid of a useless
header file.

5 years agonss: simplify initialization of struct file in map_file()
Simon Ruderich [Mon, 10 Jun 2019 20:14:50 +0000 (22:14 +0200)]
nss: simplify initialization of struct file in map_file()

It's not necessary to initialize ->fd at the beginning of map_file() as
the call to open(2) will overwrite it anyway.

Also adapt a check for a valid file descriptor. Although POSIX states
that open(2) returns -1 on error, there is no reason to hard-code this
constant. Instead, check for any negative value.

5 years agoREADME: minor updates and fixes
Simon Ruderich [Sun, 9 Jun 2019 12:25:52 +0000 (14:25 +0200)]
README: minor updates and fixes

5 years agonss: Makefile: fix typo in LD_PRELOAD variable name
Simon Ruderich [Sun, 9 Jun 2019 12:11:31 +0000 (14:11 +0200)]
nss: Makefile: fix typo in LD_PRELOAD variable name

5 years agoREADME: add requirements and usage instructions
Simon Ruderich [Sat, 8 Jun 2019 14:26:17 +0000 (16:26 +0200)]
README: add requirements and usage instructions

5 years agoMakefile: run all and clean in nss/ as well
Simon Ruderich [Sat, 8 Jun 2019 13:57:23 +0000 (15:57 +0200)]
Makefile: run all and clean in nss/ as well

This way a single `make all` builds the whole project.

5 years agoMakefile: add test target
Simon Ruderich [Sat, 8 Jun 2019 13:55:58 +0000 (15:55 +0200)]
Makefile: add test target

5 years agonsscache: add comment
Simon Ruderich [Sat, 8 Jun 2019 13:54:35 +0000 (15:54 +0200)]
nsscache: add comment

5 years agonss: tests: fix typo in comment
Simon Ruderich [Sat, 8 Jun 2019 13:51:44 +0000 (15:51 +0200)]
nss: tests: fix typo in comment

5 years agonsscash: use WriteByte() instead of Write() with cast
Simon Ruderich [Sat, 8 Jun 2019 13:50:34 +0000 (15:50 +0200)]
nsscash: use WriteByte() instead of Write() with cast

Less to type and easier to read.

The old solution used '0' to pad instead 0. This isn't an issue as these
bytes are not used. But fix it as well.

5 years agonsscash: improve index sanity check
Simon Ruderich [Sat, 8 Jun 2019 13:49:55 +0000 (15:49 +0200)]
nsscash: improve index sanity check

This ensures that the index has the proper size and is not missing any
entries.

5 years agoAdd support for group files
Simon Ruderich [Sat, 8 Jun 2019 13:49:33 +0000 (15:49 +0200)]
Add support for group files

5 years agonsscash: go fmt
Simon Ruderich [Sat, 8 Jun 2019 12:34:52 +0000 (14:34 +0200)]
nsscash: go fmt

5 years agonsscash: add support to convert plain files
Simon Ruderich [Sat, 8 Jun 2019 12:33:58 +0000 (14:33 +0200)]
nsscash: add support to convert plain files

For plain files this is just a copy. But it prepares for conversion of
other types in the future.

5 years agonss: add tests
Simon Ruderich [Sat, 8 Jun 2019 12:06:55 +0000 (14:06 +0200)]
nss: add tests

These also test large parts of the Go code.

5 years agonss: move NSS function definitions to separate header
Simon Ruderich [Sat, 8 Jun 2019 11:17:36 +0000 (13:17 +0200)]
nss: move NSS function definitions to separate header

Documents which functions we provide and will be used for tests in the
future.

5 years agonss: Makefile: inline library flags
Simon Ruderich [Sat, 8 Jun 2019 11:06:04 +0000 (13:06 +0200)]
nss: Makefile: inline library flags

We want to build programs in the future which will conflict with -shared
-fPIC.

5 years agonsscash: add "convert" sub-command
Simon Ruderich [Sat, 8 Jun 2019 10:51:32 +0000 (12:51 +0200)]
nsscash: add "convert" sub-command

Permits manually converting a file without having to fetch it from a
webserver.

5 years agonsscash: remove a few empty lines
Simon Ruderich [Sat, 8 Jun 2019 10:41:01 +0000 (12:41 +0200)]
nsscash: remove a few empty lines

5 years agonsscash: go fmt
Simon Ruderich [Sat, 8 Jun 2019 10:40:35 +0000 (12:40 +0200)]
nsscash: go fmt

5 years agonsscash: add "fetch" sub-command for the default action
Simon Ruderich [Sat, 8 Jun 2019 10:39:55 +0000 (12:39 +0200)]
nsscash: add "fetch" sub-command for the default action

In preparation for more sub-commands in the future.

5 years agoFirst working version
Simon Ruderich [Sat, 8 Jun 2019 10:24:27 +0000 (12:24 +0200)]
First working version

Supports only /etc/passwd at the moment.

5 years agoInitial commit
Simon Ruderich [Sat, 8 Jun 2019 08:28:39 +0000 (10:28 +0200)]
Initial commit