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 this10library.1112## Design Goals1314This library attempts to follow some of the [langsec][langsec website]15principles outlined in [\[1\]][curing the vulnerable parsers]. This16include a strict input grammar enforced using a parser combinator and17performing full input recognition in the library before doing further18processing in the application.1920## Compilation2122Compile using:2324 $ make2526Run the test suite using:2728 $ make check2930Perform some sanity check with valgrind using:3132 $ make valgrind3334## Known Issues3536* Not all double quoted arguments are escaped before further processing.37 This means that commands like `pause "\0"` are incorrectly considered38 invalid.3940## License4142This program is free software: you can redistribute it and/or modify it43under the terms of the GNU Affero General Public License as published by44the Free Software Foundation, either version 3 of the License, or (at45your option) any later version.4647This program is distributed in the hope that it will be useful, but48WITHOUT ANY WARRANTY; without even the implied warranty of49MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero50General Public License for more details.5152You should have received a copy of the GNU Affero General Public License53along with this program. If not, see <https://www.gnu.org/licenses/>.5455[musicpd]: https://musicpd.org/56[langsec website]: http://langsec.org/57[curing the vulnerable parsers]: https://www.usenix.org/publications/login/spring2017/bratus58[mmp github]: https://github.com/nmeum/mmp