diff options
author | Martin Michlmayr <tbm@cyrius.com> | 2016-02-15 13:58:18 -0800 |
---|---|---|
committer | Martin Michlmayr <tbm@cyrius.com> | 2016-02-15 13:58:18 -0800 |
commit | c5f68caa9e4fa9fb1fc44a62af9aeace12206469 (patch) | |
tree | 978a828da976ff740726bddf0bd23637a275dfd6 | |
parent | 82ef9dc388a9eb42e7e13b8d1a79c98b6e857ada (diff) | |
download | fork-ledger-c5f68caa9e4fa9fb1fc44a62af9aeace12206469.tar.gz fork-ledger-c5f68caa9e4fa9fb1fc44a62af9aeace12206469.tar.bz2 fork-ledger-c5f68caa9e4fa9fb1fc44a62af9aeace12206469.zip |
Increase maximum length for regex
Fixes bug #981
-rw-r--r-- | doc/NEWS | 4 | ||||
-rw-r--r-- | src/token.cc | 4 | ||||
-rw-r--r-- | test/regress/981.test | 28 |
3 files changed, 34 insertions, 2 deletions
@@ -1,5 +1,9 @@ Ledger NEWS +* 3.1.2 + +- Increased maximum length for regex from 255 to 4095. + * 3.1.1 - Added a --no-revalued option diff --git a/src/token.cc b/src/token.cc index 0bbff6ea..f616ae3e 100644 --- a/src/token.cc +++ b/src/token.cc @@ -303,8 +303,8 @@ void expr_t::token_t::next(std::istream& in, const parse_flags_t& pflags) kind = SLASH; } else { // terminal context // Read in the regexp - char buf[256]; - READ_INTO_(in, buf, 255, c, length, c != '/'); + char buf[4096]; + READ_INTO_(in, buf, 4095, c, length, c != '/'); if (c != '/') expected('/', c); in.get(c); diff --git a/test/regress/981.test b/test/regress/981.test new file mode 100644 index 00000000..14ef19ff --- /dev/null +++ b/test/regress/981.test @@ -0,0 +1,28 @@ + +; Test a regex longer than 255 char + +tag Project + check value =~ /^(0ad|ankur|aptosid|archlinux|chakra|debian|debconf14|debconf15|debconf16|drizzle|ffmpeg|ffmpeg|fluxbox|freedesktop|freedombox|gallery|texmacs|haskell|jenkins|libreoffice|madwifi|mingw|openvas|openwrt|openbioinformatics|openembedded|openvoting|osunix|path64|plan9|postgresql|privoxy|smc|helios|tidesdk|tux4kids|yafaray|spi)$/ + +2016-01-01 * Test - correct tag + Expenses:Hosting 20.00 USD + ; Project: debian + Assets:Cash -20.00 USD + +2016-02-01 * Test - wrong tag + Expenses:Hosting 20.00 USD + ; Project: foo + Assets:Cash -20.00 USD + +test bal + -40.00 USD Assets:Cash + 40.00 USD Expenses:Hosting +-------------------- + 0 +__ERROR__ +Warning: "/home/tbm/tmp/src/ledger/test/regress/981.test", line 15: Metadata check failed for (Project: foo): (value =~ /^(0ad|ankur|aptosid|archlinux|chakra|debian|debconf14|debconf15|debconf16|drizzle|ffmpeg|ffmpeg|fluxbox|freedesktop|freedombox|gallery|texmacs|haskell|jenkins|libreoffice|madwifi|mingw|openvas|openwrt|openbioinformatics|openembedded|openvoting|osunix|path64|plan9|postgresql|privoxy|smc|helios|tidesdk|tux4kids|yafaray|spi)$/) +end test + +test reg --limit 'payee =~ /XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/' +end test + |