libmpdserver

Parser combinator library for MPD client commands

git clone https://git.8pit.net/libmpdserver.git

 1# libmpdserver
 2
 3Parser combinator library for [MPD][musicpd] client commands.
 4
 5## Status
 6
 7Currently primarily a toy project for experimenting with parser
 8combinators. Buggy, incomplete and unstable at the moment. Nonetheless,
 9I started implementing a custom [MPD server][mmp github] with this
10library.
11
12## Design Goals
13
14This library attempts to follow some of the [langsec][langsec website]
15principles outlined in [\[1\]][curing the vulnerable parsers]. This
16include a strict input grammar enforced using a parser combinator and
17performing full input recognition in the library before doing further
18processing in the application.
19
20## Compilation
21
22Compile using:
23
24	$ make
25
26Run the test suite using:
27
28	$ make check
29
30Perform some sanity check with valgrind using:
31
32	$ make valgrind
33
34## Known Issues
35
36* Not all double quoted arguments are escaped before further processing.
37  This means that commands like `pause "\0"` are incorrectly considered
38  invalid.
39
40## License
41
42This program is free software: you can redistribute it and/or modify it
43under the terms of the GNU Affero General Public License as published by
44the Free Software Foundation, either version 3 of the License, or (at
45your option) any later version.
46
47This program is distributed in the hope that it will be useful, but
48WITHOUT ANY WARRANTY; without even the implied warranty of
49MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
50General Public License for more details.
51
52You should have received a copy of the GNU Affero General Public License
53along with this program. If not, see <https://www.gnu.org/licenses/>.
54
55[musicpd]: https://musicpd.org/
56[langsec website]: http://langsec.org/
57[curing the vulnerable parsers]: https://www.usenix.org/publications/login/spring2017/bratus
58[mmp github]: https://github.com/nmeum/mmp