From 2a9c723f3889c002f81cd3cb3baca9c2e34b976e Mon Sep 17 00:00:00 2001
From: Jason Hiser <jdhiser@gmail.com>
Date: Mon, 16 Sep 2019 21:50:36 -0400
Subject: [PATCH] afl support

---
 irdb-libs/libMEDSannotation/test/afl.yaml     |  6 +++
 irdb-libs/libMEDSannotation/test/do-fuzz.sh   | 41 +++++++++++++++++++
 .../libMEDSannotation/test/map-config.yaml    |  5 +++
 .../libMEDSannotation/test/map-seed1.yaml     | 10 +++++
 .../libMEDSannotation/test/map-seed2.yaml     | 10 +++++
 .../libMEDSannotation/test/map-seed3.yaml     | 10 +++++
 6 files changed, 82 insertions(+)
 create mode 100644 irdb-libs/libMEDSannotation/test/afl.yaml
 create mode 100755 irdb-libs/libMEDSannotation/test/do-fuzz.sh
 create mode 100644 irdb-libs/libMEDSannotation/test/map-config.yaml
 create mode 100644 irdb-libs/libMEDSannotation/test/map-seed1.yaml
 create mode 100644 irdb-libs/libMEDSannotation/test/map-seed2.yaml
 create mode 100644 irdb-libs/libMEDSannotation/test/map-seed3.yaml

diff --git a/irdb-libs/libMEDSannotation/test/afl.yaml b/irdb-libs/libMEDSannotation/test/afl.yaml
new file mode 100644
index 000000000..8a9de7fe1
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/afl.yaml
@@ -0,0 +1,6 @@
+name: 'baseline afl config'
+fuzzing-time: '600 minutes'
+input-timeout: '30 seconds'
+memory-limit: '50 MB'
+num-cores: 2
+working-dir:  /tmp/medsannotparser-fuzzing
diff --git a/irdb-libs/libMEDSannotation/test/do-fuzz.sh b/irdb-libs/libMEDSannotation/test/do-fuzz.sh
new file mode 100755
index 000000000..0a9d38262
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/do-fuzz.sh
@@ -0,0 +1,41 @@
+#!/bin/bash 
+
+function main()
+{
+
+
+	g++ test.cpp -I ../include -fmax-errors=2 -L../../lib -lMEDSannotation -g -o test.exe
+
+	# force reinstall tools so we are always up-to-date
+	yes | sudo bash -c "$(curl -fsSL allzp.zephyr-software.io/turbo/cli-install.sh)"
+
+	# better done with boost add -q -i 
+	turbo-cli boost add map_so || true
+	local bid=$(turbo-cli boost list|grep map_so|cut -d"	" -f1)
+
+	# add seeds, ignore errors if they already exist.
+	turbo-cli seed add $bid ./map-seed1.yaml || true
+	turbo-cli seed add $bid ./map-seed2.yaml || true
+	turbo-cli seed add $bid ./map-seed3.yaml || true
+
+	local vid=$(turbo-cli version add -q $bid ../../lib/libMEDSannotation.so)
+	turbo-cli fuzz --fuzz-config ./afl.yaml --app-config ./map-config.yaml --ver-id $vid
+
+	local report="$(turbo-cli log get report $vid)"
+
+	echo "The report is: "
+	echo "$report"
+
+	local declare crash_count=$(echo "$report"|shyaml get-value failing-input-count)
+
+	if [[ $crash_count == 0 ]]; then
+		echo "No crashes found"
+		exit 0
+	else
+		echo "$crash_count count crashes found!"
+		exit 1
+	fi
+
+}
+
+main "$@"
diff --git a/irdb-libs/libMEDSannotation/test/map-config.yaml b/irdb-libs/libMEDSannotation/test/map-config.yaml
new file mode 100644
index 000000000..db454bc4b
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/map-config.yaml
@@ -0,0 +1,5 @@
+
+name: "map test config"
+
+ld-path-prepend-version: "libMEDSannotation.so"
+
diff --git a/irdb-libs/libMEDSannotation/test/map-seed1.yaml b/irdb-libs/libMEDSannotation/test/map-seed1.yaml
new file mode 100644
index 000000000..b0b340625
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/map-seed1.yaml
@@ -0,0 +1,10 @@
+name: long ls
+cmdline:
+  - ./test.exe
+  - filename: ls.annot
+env: ~
+network: ~
+files:
+  - name: ls.annot
+    contents: ICAgICAgICAgICAgICAgICAwICAgICAgMSBEQVRBUkVGIEdMT0JBTCAgICAgMTIyMyAyMjEzMTEgUEFSRU5UIGJ5dGVfMjIxMzExICBWT0lEIFJXCiAgICAgICAgICAgICAgICAgMCAgICAgMTAgREFUQVJFRiBHTE9CQUwgICAgIDEyNTEgMjIxMzY2IFBBUkVOVCBTTVBfZHVtbXk0MTQgIFZPSUQgUlcKICAgICAgICAgICAgICAgICAwICAgICAxNiBEQVRBUkVGIEdMT0JBTCAgICAgMTI1MiAyMjEzNzAgUEFSRU5UIHRwICBWT0lEIFJXIEFHR1JFR0FURQogICAgICAgICAgICAgICAgIDAgICAgICA4IERBVEFSRUYgR0xPQkFMICAgICAxMjUzIDIyMTM3MCBDSElMRE9GIDEyNTIgT0ZGU0VUIDAgdHAgKyAwIEZJRUxEIERJUkVDVAogICAgICAgICAgICAgICAgIDAgICAgICA4IERBVEFSRUYgR0xPQkFMICAgICAxMjU0IDIyMTM3MCBDSElMRE9GIDEyNTIgT0ZGU0VUIDggdHAgKyA4IEZJRUxEIERJUkVDVAogICAgICAgICAgICAgICAgIDAgICAgICA4IERBVEFSRUYgR0xPQkFMICAgICAxMjU1IDIyMTM4MCBQQVJFTlQgcHRyICBWT0lEIFJXCiAgICAgICAgICAgICAgICAgMCAgICAgIDggREFUQVJFRiBHTE9CQUwgICAgIDEyNTYgMjIxMzg4IFBBUkVOVCBxd29yZF8yMjEzODggIFZPSUQgUlcKICAgICAgICAgICAgICAgICAwICAgICAgMSBEQVRBUkVGIEdMT0JBTCAgICAgMTI1NyAyMjEzOTAgUEFSRU5UIGJ5dGVfMjIxMzkwICBWT0lEIFJXCiAgICAgICAgICAgICAgICAgMCAgICAgIDggREFUQVJFRiBHTE9CQUwgICAgIDEyODIgMjIxNTU4IFBBUkVOVCBzICBWT0lEIFJXCiAgICAgICAgICAgICAgMzc1OCAgICAgMjMgRlVOQyBHTE9CQUwgLmluaXRfcHJvYyBGVU5DX1NBRkUgTk9GUCBSRVQgICAgICAgICAgICAgICAzNzZlIAogICAgICAgICAgICAgIDM3NTggICAgICAwIEZVTkMgRlJBTUVSRVNUT1JFIDAgMCAyIDEgMCAwIDIgMCAwIDMgMCAwIDQgMCA4IDUgMCAxIDYgMCAwIDcgMCAwIDggMCAwIDkgMCAwIDEwIDAgMCAxMSAwIDAgMTIgMCAxNiAxMyAwIDAgMTQgMCAwIDE1IDAgMCBaWgogICAgICAgICAgICAgIDM3NTggICAgICAwIEZVTkMgTU1TQUZFTkVTUyBTQUZFCiAgICAgICAgICAgICAgMzc1OCAgICAgIDQgSU5TVFIgQkVMT05HVE8gMzc1OCAKICAgICAgICAgICAgICAzNzU4ICAgICAtMSBJTlNUUiBMT0NBTCBTYWZlRnJhbWVBbGxvYyBzdWIgICAgIHJzcCwgODsgX2luaXQgCiAgICAgICAgICAgICAgMzc1OCAgICAgIDggTUVNT1JZSE9MRSBTVEFDSyBlc3AgKyA4IFJldHVybkFkZHJlc3MgCiAgICAgICAgICAgICAgMzc1OCAgICAgIDggREFUQVJFRiBTVEFDSyAxMjgzIGVzcCArIDAgUEFSRU5UIExvY2FsRnJhbWUgTE9DQUxGUkFNRQogICAgICAgICAgICAgIDM3NTggICAgICA0IElOU1RSIERFQURSRUdTICBFRkxBR1MgUkFYIFpaIHN1YiAgICAgcnNwLCA4OyBfaW5pdCAKICAgICAgICAgICAgICAzNzVjICAgICAgNyBJTlNUUiBCRUxPTkdUTyAzNzU4IAogICAgICAgICAgICAgIDM3NWMgICAgIC0yIElOU1RSIExPQ0FMIG4gUkFYIFpaICBOdW1lcmljREVGcyBtb3YgICAgIHJheCwgY3M6X19nbW9uX3N0YXJ0X19fcHRyIAogICAgICAgICAgICAgIDM3NWMgICAgICA3IElOU1RSIERFQURSRUdTICBFRkxBR1MgUkFYIFpaIG1vdiAgICAgcmF4LCBjczpfX2dtb25fc3RhcnRfX19wdHIgCiAgICAgICAgICAgICAgMzc2MyAgICAgIDMgSU5TVFIgQkVMT05HVE8gMzc1OCAKICAgICAgICAgICAgICAzNzYzICAgICAtMSBJTlNUUiBMT0NBTCBOb01ldGFVcGRhdGUgdGVzdCAgICByYXgsIHJheCAKICAgICAgICAgICAgICAzNzYzICAgICAgMyBJTlNUUiBERUFEUkVHUyAgRUZMQUdTIFpaIHRlc3QgICAgcmF4LCByYXggCiAgICAgICAgICAgICAgMzc2NiAgICAgIDIgSU5TVFIgQkVMT05HVE8gMzc1OCAKICAgICAgICAgICAgICAzNzY2ICAgICAtMSBJTlNUUiBMT0NBTCBOb01ldGFVcGRhdGUganogICAgICBzaG9ydCBsb2NfMzc2QSAKICAgICAgICAgICAgICAzNzY4ICAgICAgMiBJTlNUUiBCRUxPTkdUTyAzNzU4IAogICAgICAgICAgICAgIDM3NjggICAgIC0xIElOU1RSIExPQ0FMIE5vTWV0YVVwZGF0ZSBjYWxsICAgIHJheCA7IF9fZ21vbl9zdGFydF9fIAogICAgICAgICAgICAgIDM3NjggICAgICAyIElOU1RSIERFQURSRUdTICBFRkxBR1MgWlogY2FsbCAgICByYXggOyBfX2dtb25fc3RhcnRfXyAKICAgICAgICAgICAgICAzNzZhICAgICAgNCBJTlNUUiBCRUxPTkdUTyAzNzU4IAogICAgICAgICAgICAgIDM3NmEgICAgICA0IElOU1RSIERFQURSRUdTICBFRkxBR1MgWlogYWRkICAgICByc3AsIDggCiAgICAgICAgICAgICAgMzc2ZSAgICAgIDEgSU5TVFIgQkVMT05HVE8gMzc1OCAKICAgICAgICAgICAgICAzNzZlICAgICAgOCBERUFMTE9DIFNUQUNLIGVzcCAtIDggcmV0bgogICAgICAgICAgICAgIDM3NmUgICAgICAxIElOU1RSIERFQURSRUdTICBFRkxBR1MgWlogcmV0biAKICAgICAgICAgICAgICAzNzZlICAgICAtNCBJTlNUUiBMT0NBTCBTYWZlUmV0dXJuIHJldG4KICAgICAgICAgICAgICAzNzcwICAgICAxMiBGVU5DIEdMT0JBTCBzdWJfMzc3MCBGVU5DX1VOU0FGRSBOT0ZQIFJFVCAgICAgICAgICAgICAgIDM3N2IgCiAgICAgICAgICAgICAgMzc3MCAgICAgIDAgRlVOQyBGUkFNRVJFU1RPUkUgMCAwIDAgMSAwIDAgMiAwIDAgMyAwIDAgNCAwIDAgNSAwIDAgNiAwIDAgNyAwIDAgOCAwIDAgOSAwIDAgMTAgMCAwIDExIDAgMCAxMiAwIDAgMTMgMCAwIDE0IDAgMCAxNSAwIDAgWloKICAgICAgICAgICAgICAzNzcwICAgICAgMCBGVU5DIE1NU0FGRU5FU1MgVU5TQUZFCiAgICAgICAgICAgICAgMzc3MCAgICAgIDYgSU5TVFIgQkVMT05HVE8gMzc3MCAKICAgICAgICAgICAgICAzNzcwICAgICAgOCBNRU1PUllIT0xFIFNUQUNLIGVzcCArIDggUmV0dXJuQWRkcmVzcyAKICAgICAgICAgICAgICAzNzcwICAgICAgOCBEQVRBUkVGIFNUQUNLIDEyODQgZXNwICsgMCBQQVJFTlQgTG9jYWxGcmFtZSBMT0NBTEZSQU1FCiAgICAgICAgICAgICAgMzc3MCAgICAgIDggREFUQVJFRiBTVEFDSyAxMjg1IGVzcCArIDAgQ0hJTERPRiAxMjg0IE9GRlNFVCAwIE91dEFyZ3NSZWdpb24gT1VUQVJHUwogICAgICAgICAgICAgIDM3NzYgICAgICA2IElOU1RSIEJFTE9OR1RPIDM3NzAgCiAgICAgICAgICAgICAgMzc3NiAgICAgLTEgSU5TVFIgTE9DQUwgTm9NZXRhVXBkYXRlIGptcCAgICAgY3M6cXdvcmRfMjFGQzQ4IAogICAgICAgICAgICAgIDU5YzAgICAgNjUwIEZVTkMgR0xPQkFMIHN1Yl81OUMwIEZVTkNfVU5TQUZFIE5PRlAgUkVUIEZVTkNfTEVBRiAgICAgICAgICAgICAgIDVjNDkgCiAgICAgICAgICAgICAgNTljMCAgICAgIDAgRlVOQyBGUkFNRVJFU1RPUkUgMCAwIDIgMSAwIDEgMiAwIDIgMyAtNDggNCA0IDAgOCA1IC00MCA4IDYgMCA0IDcgMCA0IDggMCA0IDkgMCA0IDEwIDAgMCAxMSAwIDE2IDEyIC0zMiA0IDEzIC0yNCAxIDE0IC0xNiA0IDE1IC04IDE2IFpaCiAgICAgICAgICAgICAgNTljMCAgICAgIDAgRlVOQyBNTVNBRkVORVNTIFNBRkUKICAgICAgICAgICAgICA1OWMwICAgICAgMyBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDU5YzAgICAgICAzIElOU1RSIERFQURSRUdTICBFRkxBR1MgUkFYIFI4IFI5IFIxMCBSMTEgWlogbW92ICAgICByOCwgW3JzaV0gCiAgICAgICAgICAgICAgNTljMyAgICAgIDMgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1OWMzICAgICAgMyBJTlNUUiBERUFEUkVHUyAgRUZMQUdTIFJBWCBSOSBSMTAgUjExIFpaIG1vdiAgICAgcjksIFtyZGldIAogICAgICAgICAgICAgIDU5YzYgICAgICA3IElOU1RSIEJFTE9OR1RPIDU5YzAgCiAgICAgICAgICAgICAgNTljNiAgICAgIDcgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQVggUjEwIFIxMSBaWiBsZWEgICAgIHIxMSwganB0XzVBODEgCiAgICAgICAgICAgICAgNTljZCAgICAgIDIgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1OWNkICAgICAtMyBJTlNUUiBMT0NBTCBOb1dhcm4gcHVzaCAgICByMTUgCiAgICAgICAgICAgICAgNTljZCAgICAgIDIgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQVggUjEwIFpaIHB1c2ggICAgcjE1IAogICAgICAgICAgICAgIDU5Y2YgICAgICAzIElOU1RSIEJFTE9OR1RPIDU5YzAgCiAgICAgICAgICAgICAgNTljZiAgICAgLTIgSU5TVFIgTE9DQUwgbiBSMTAgWlogIEFsd2F5c05VTSB4b3IgICAgIHIxMGQsIHIxMGQgCiAgICAgICAgICAgICAgNTljZiAgICAgIDMgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQVggUjEwIFIxNSBaWiB4b3IgICAgIHIxMGQsIHIxMGQgCiAgICAgICAgICAgICAgNTlkMiAgICAgIDIgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1OWQyICAgICAtMyBJTlNUUiBMT0NBTCBOb1dhcm4gcHVzaCAgICByMTQgCiAgICAgICAgICAgICAgNTlkMiAgICAgIDIgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQVggUjE1IFpaIHB1c2ggICAgcjE0IAogICAgICAgICAgICAgIDU5ZDQgICAgICA1IElOU1RSIEJFTE9OR1RPIDU5YzAgCiAgICAgICAgICAgICAgNTlkNCAgICAgLTEgSU5TVFIgTE9DQUwgTWV0YWRhdGFVbnVzZWQgbW92ICAgICBlYXgsIDEgCiAgICAgICAgICAgICAgNTlkNCAgICAgIDUgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQVggUjE0IFIxNSBaWiBtb3YgICAgIGVheCwgMSAKICAgICAgICAgICAgICA1OWQ5ICAgICAgMiBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDU5ZDkgICAgIC0zIElOU1RSIExPQ0FMIE5vV2FybiBwdXNoICAgIHIxMyAKICAgICAgICAgICAgICA1OWQ5ICAgICAgMiBJTlNUUiBERUFEUkVHUyAgRUZMQUdTIFIxNCBSMTUgWlogcHVzaCAgICByMTMgCiAgICAgICAgICAgICAgNTlkYiAgICAgIDIgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1OWRiICAgICAtMyBJTlNUUiBMT0NBTCBOb1dhcm4gcHVzaCAgICByMTIgCiAgICAgICAgICAgICAgNTlkYiAgICAgIDIgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSMTMgUjE0IFIxNSBaWiBwdXNoICAgIHIxMiAKICAgICAgICAgICAgICA1OWRkICAgICAgMyBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDU5ZGQgICAgIC0xIElOU1RSIExPQ0FMIE1ldGFkYXRhVW51c2VkIG1vdiAgICAgcjEyZCwgZWR4IAogICAgICAgICAgICAgIDU5ZGQgICAgICAzIElOU1RSIERFQURSRUdTICBFRkxBR1MgUjEyIFIxMyBSMTQgUjE1IFpaIG1vdiAgICAgcjEyZCwgZWR4IAogICAgICAgICAgICAgIDU5ZTAgICAgICAxIElOU1RSIEJFTE9OR1RPIDU5YzAgCiAgICAgICAgICAgICAgNWMyOCAgICAgIDUgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1YzI4ICAgICAtMSBJTlNUUiBMT0NBTCBNZXRhZGF0YVJlZHVuZGFudCBsZWEgICAgIHIxNGQsIFtyMTMrcjE0LTM3aF0gCiAgICAgICAgICAgICAgNWMyOCAgICAgIDUgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQ1ggUjE1IFpaIGxlYSAgICAgcjE0ZCwgW3IxMytyMTQtMzdoXSAKICAgICAgICAgICAgICA1YzJkICAgICAgNSBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDVjMmQgICAgIC0xIElOU1RSIExPQ0FMIE5vTWV0YVVwZGF0ZSBqbXAgICAgIGxvY181QjI4IAogICAgICAgICAgICAgIDVjMmQgICAgICA1IElOU1RSIERFQURSRUdTICBFRkxBR1MgUkNYIFIxMyBSMTUgWlogam1wICAgICBsb2NfNUIyOCAKICAgICAgICAgICAgICA1YzM4ICAgICAgNCBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDVjMzggICAgIC0yIElOU1RSIExPQ0FMIG4gUjE0IFpaICBBbHdheXNOVU0gc2hsICAgICByMTRkLCA0IAogICAgICAgICAgICAgIDVjMzggICAgICA0IElOU1RSIERFQURSRUdTICBFRkxBR1MgUkNYIFIxNSBaWiBzaGwgICAgIHIxNGQsIDQgCiAgICAgICAgICAgICAgNWMzYyAgICAgIDQgSU5TVFIgQkVMT05HVE8gNTljMCAKICAgICAgICAgICAgICA1YzNjICAgICAgNCBJTlNUUiBERUFEUkVHUyAgRUZMQUdTIFJDWCBSMTUgWlogYWRkICAgICByOCwgMSAKICAgICAgICAgICAgICA1YzQwICAgICAgNSBJTlNUUiBCRUxPTkdUTyA1OWMwIAogICAgICAgICAgICAgIDVjNDAgICAgIC0xIElOU1RSIExPQ0FMIE1ldGFkYXRhUmVkdW5kYW50IGxlYSAgICAgcjE0ZCwgW3IxMytyMTQtNTdoXSAKICAgICAgICAgICAgICA1YzQwICAgICAgNSBJTlNUUiBERUFEUkVHUyAgRUZMQUdTIFJDWCBSMTUgWlogbGVhICAgICByMTRkLCBbcjEzK3IxNC01N2hdIAogICAgICAgICAgICAgIDVjNDUgICAgICA1IElOU1RSIEJFTE9OR1RPIDU5YzAgCiAgICAgICAgICAgICAgNWM0NSAgICAgLTEgSU5TVFIgTE9DQUwgTm9NZXRhVXBkYXRlIGptcCAgICAgbG9jXzVCMjggCiAgICAgICAgICAgICAgNWM0NSAgICAgIDUgSU5TVFIgREVBRFJFR1MgIEVGTEFHUyBSQ1ggUjEzIFIxNSBaWiBqbXAgICAgIGxvY181QjI4IAo=
+    perms: rw
diff --git a/irdb-libs/libMEDSannotation/test/map-seed2.yaml b/irdb-libs/libMEDSannotation/test/map-seed2.yaml
new file mode 100644
index 000000000..164a5bdef
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/map-seed2.yaml
@@ -0,0 +1,10 @@
+name: long ls
+cmdline:
+  - ./test.exe
+  - filename: ls.annot
+env: ~
+network: ~
+files:
+  - name: ls.annot
+    contents: ICAgICAgICAgICAgICAzNzU4ICAgICAyMyBGVU5DIFJFVFVSTlRZUEUgUkFYIDIKICAgICAgICAgICAgICAzNzU4ICAgICAyMyBGVU5DIElOQVJHUyAgICA2ICBBUkcwIDAgQVJHMSAwIEFSRzIgMCBBUkczIDAgQVJHNCAwIEFSRzUgMCAKICAgICAgICAgICAgICAzNzcwICAgICAxMiBGVU5DIFJFVFVSTlRZUEUgUkFYIDAKICAgICAgICAgICAgICAzNzcwICAgICAxMiBGVU5DIFBST0JMRU0gc3ViXzM3NzAgSlVNUFVOUkVTT0xWRUQgCiAgICAgICAgICAgICAgMzc4MCAgICAgIDYgRlVOQyBSRVRVUk5UWVBFIFJBWCAwCiAgICAgICAgICAgICAgMzc4MCAgICAgIDYgRlVOQyBQUk9CTEVNIC5fX2N0eXBlX3RvdXBwZXJfbG9jIEpVTVBVTlJFU09MVkVEIAogICAgICAgICAgICAgIDM3OTAgICAgICA2IEZVTkMgUkVUVVJOVFlQRSBSQVggMAogICAgICAgICAgICAgIDM3YjAgICAgICA2IEZVTkMgUFJPQkxFTSAuc2lncHJvY21hc2sgSlVNUFVOUkVTT0xWRUQgCiAgICAgICAgICAgICAgM2U3OCAgICAgIDYgRlVOQyBSRVRVUk5UWVBFIFJBWCAwCiAgICAgICAgICAgICAgM2U3OCAgICAgIDYgRlVOQyBQUk9CTEVNIG1hbGxvYyBKVU1QVU5SRVNPTFZFRCAKICAgICAgICAgICAgICAzZTgwICAgICAgNiBGVU5DIFJFVFVSTlRZUEUgUkFYIDAKICAgICAgICAgICAgICAzZTgwICAgICAgNiBGVU5DIFBST0JMRU0gX19jeGFfZmluYWxpemUgSlVNUFVOUkVTT0xWRUQgCiAgICAgICAgICAgICAgM2U5MCAgIDY1ODcgRlVOQyBSRVRVUk5UWVBFIFJBWCAwCiAgICAgICAgICAgICAgM2U5MCAgIDY1ODcgRlVOQyBJTkFSR1MgICAgNiAgQVJHMCAwIEFSRzEgNCBBUkcyIDAgQVJHMyAwIEFSRzQgMCBBUkc1IDAgCiAgICAgICAgICAgICAgNDBlYiAgICAgIDYgSU5TVFIgQ09ERVBUUiAxIG1vdiAgICAgcjE1ZCwgMQogICAgICAgICAgICAgIDQxMjQgICAgICA1IElOU1RSIENIRUNLIE9WRVJGTE9XIFVOU0lHTkVEIDMyICBSQVggWlogYWRkICAgICBlYXgsIDgzaDsgc3dpdGNoIDI3NiBjYXNlcyAKICAgICAgICAgICAgICA0MTUxICAgICAgNSBJTlNUUiBDT0RFUFRSIDEgbW92ICAgICBieXRlIHB0ciBbcnNwKzg4aCt2YXJfNzhdLCAxOyBqdW1wdGFibGUgMDAwMDAwMDAwMDAwNDEzQyBjYXNlIDEwNwogICAgICAgICAgICAgIGE5YjggICAgICA1IElOU1RSIENPREVQVFIgNSBtb3YgICAgIGVkeCwgNTsgY2F0ZWdvcnkKICAgICAgICAgICAgICBhOWRkICAgICAxICAgICAgICAgMTVlZGYgICAgICA1IElOU1RSIENPREVQVFIgNzMgbW92ICAgICBlYXgsIDczaCA7ICdzJwogICAgICAgICAgICAgMTYwNGYgICAgICA0IElOU1RSIENIRUNLIE9WRVJGTE9XIE5PRkxBR1VOU0lHTkVEIDY0IFJBWCsyIFpaIGxlYSAgICAgcmN4LCBbcmF4KzJdIAogICAgICAgICAgICAgMTYwNTMgICAgICA0IElOU1RSIENIRUNLIE9WRVJGTE9XIE5PRkxBR1VOU0lHTkVEIDY0IFJBWCszIFpaIGxlYSAgICAgcmRpLCBbcmF4KzNdOyBzaXplIAogICAgICAgICAgICAgMTYwODEgICAgICAzIElOU1RSIENIRUNLIFVOREVSRkxPVyBVTlNJR05FRCA2NCAgUkRJIFpaIHN1YiAgICAgcmRpLCByZHggCiAgICAgICAgICAgICAxNjA4NCAgICAgIDQgSU5TVFIgQ0hFQ0sgT1ZFUkZMT1cgVU5TSUdORUQgNjQgIFJEWCBaWiBhZGQgICAgIHJkeCwgMTsgbiAKICAgICAgICAgICAgIDE2MDhiICAgICAgMyBJTlNUUiBDSEVDSyBPVkVSRkxPVyBVTlNJR05FRCA2NCAgUkRJIFpaIElESU9NIDE4IE1FTU9SWVNJTksgYWRkICAgICByZGksIHIxNSAKICAgICAgICAgICAgIDE2MDhlICAgICAgMyBJTlNUUiBDSEVDSyBPVkVSRkxPVyBVTlNJR05FRCA2NCAgUkRJIFpaIElESU9NIDE4IE1FTU9SWVNJTksgYWRkICAgICByZGksIHIxMjsgZGVzdCAKICAgICAgICAgICAgIDE2MDliICAgICAgNSBJTlNUUiBDSEVDSyBPVkVSRkxPVyBOT0ZMQUdVTlNJR05FRCA2NCBSMTIrUjE1IFpaIElESU9NIDE4IE1FTU9SWVNJTksgbGVhICAgICByZGksIFtyMTIrcjE1LTFdOyBkZXN0IAogICAgICAgICAgICAgMTYwOWIgICAgICA1IElOU1RSIENIRUNLIE9WRVJGTE9XIE5PRkxBR1VOU0lHTkVEIDY0IFIxMitSMTUrLTEgWlogSURJT00gMTggTUVNT1JZU0lOSyBsZWEgICAgIHJkaSwgW3IxMityMTUtMV07IGRlc3QgCiAgICAgICAgICAgICAxNjBhMCAgICAgIDQgSU5TVFIgQ0hFQ0sgT1ZFUkZMT1cgTk9GTEFHVU5TSUdORUQgNjQgUjEzKzEgWlogSURJT00gMTggTUVNT1JZU0lOSyBsZWEgICAgIHJkeCwgW3IxMysxXTsgbiAKICAgICAgICAgICAgIDE2MGZiICAgICAgNSBJTlNUUiBDT0RFUFRSIDEgbW92ICAgICBlZHgsIDEKICAgICAgICAgICAgIDE2MTQxICAgICAgNCBJTlNUUiBDSEVDSyBPVkVSRkxPVyBOT0ZMQUdVTlNJR05FRCA2NCBSQVgrMiBaWiBsZWEgICAgIHJjeCwgW3JheCsyXSAKICAgICAgICAgICAgIDE2MTQ1ICAgICAgNCBJTlNUUiBDSEVDSyBPVkVSRkxPVyBOT0ZMQUdVTlNJR05FRCA2NCBSQVgrMyBaWiBsZWEgICAgIHJzaSwgW3JheCszXTsgc2l6ZSAKICAgICAgICAgICAgIDE2MWEwICAgIDEyMyBGVU5DIFJFVFVSTlRZUEUgUkFYIDEKICAgICAgICAgICAgIDE2MWEwICAgIDEyMyBGVU5DIElOQVJHUyAgICA2ICBBUkcwIDQgQVJHMSAwIEFSRzIgMSBBUkczIDAgQVJHNCAwIEFSRzUgMCAKICAgICAgICAgICAgIDE2MWYyICAgICAgNSBJTlNUUiBDT0RFUFRSIDEgbW92ICAgICBlZHgsIDE7IHdoZW5jZQogICAgICAgICAgICAgMTYyMjAgICAgIDY0IEZVTkMgUkVUVVJOVFlQRSBSQVggMAogICAgICAgICAgICAgMTYyMjAgICAgIDY0IEZVTkMgSU5BUkdTICAgIDYgIEFSRzAgNCBBUkcxIDAgQVJHMiAwIEFSRzMgMCBBUkc0IDAgQVJHNSAwIAogICAgICAgICAgICAgMTYyNGIgICAgICA1IElOU1RSIENPREVQVFIgMSBtb3YgICAgIGVkeCwgMQogICAgICAgICAgICAgMTYyNjAgICAgIDg3IEZVTkMgUkVUVVJOVFlQRSBSQVggMAogICAgICAgICAgICAgMTYyNjAgICAgIDg3IEZVTkMgSU5BUkdTICAgIDYgIEFSRzAgNCBBUkcxIDEgQVJHMiAyIEFSRzMgMCBBUkc0IDAgQVJHNSAwIAogICAgICAgICAgICAgMTYyYzAgICAgMTAxIEZVTkMgUkVUVVJOVFlQRSBSQVggMgogICAgICAgICAgICAgMTYyYzAgICAgMTAxIEZVTkMgSU5BUkdTICAgIDYgIEFSRzAgMCBBUkcxIDAgQVJHMiAwIEFSRzMgMCBBUkc0IDAgQVJHNSAwIAogICAgICAgICAgICAgMTYyYzAgICAgMTAxIEZVTkMgUFJPQkxFTSBpbml0IENBTExVTlJFU09MVkVEIAogICAgICAgICAgICAgMTYzMGQgICAgICA0IElOU1RSIENIRUNLIE9WRVJGTE9XIFVOU0lHTkVEIDY0ICBSQlggWlogYWRkICAgICByYngsIDEgCiAgICAgICAgICAgICAxNjMzMCAgICAgIDIgRlVOQyBSRVRVUk5UWVBFIFJBWCAwCiAgICAgICAgICAgICAxNjMzMCAgICAgIDIgRlVOQyBJTkFSR1MgICAgNiAgQVJHMCAwIEFSRzEgMCBBUkcyIDAgQVJHMyAxIEFSRzQgMCBBUkc1IDAgCiAgICAgICAgICAgICAxNjM0MCAgICAgNDEgRlVOQyBSRVRVUk5UWVBFIFJBWCAxNgogICAgICAgICAgICAgMTYzNDAgICAgIDQxIEZVTkMgSU5BUkdTICAgIDYgIEFSRzAgMiBBUkcxIDAgQVJHMiAwIEFSRzMgMCBBUkc0IDAgQVJHNSAwIAogICAgICAgICAgICAgMTYzNmMgICAgICA5IEZVTkMgUkVUVVJOVFlQRSBSQVggMAogICAgICAgICAgICAgMTYzNmMgICAgICA5IEZVTkMgSU5BUkdTICAgIDYgIEFSRzAgMCBBUkcxIDAgQVJHMiAwIEFSRzMgMCBBUkc0IDAgQVJHNSAwIAogICA4MDAwMDAwICAgICAgMiBTVUNDRVNTIEFOQUxZU0lTQ09NUExFVEVECg==
+    perms: rw
diff --git a/irdb-libs/libMEDSannotation/test/map-seed3.yaml b/irdb-libs/libMEDSannotation/test/map-seed3.yaml
new file mode 100644
index 000000000..bece710b1
--- /dev/null
+++ b/irdb-libs/libMEDSannotation/test/map-seed3.yaml
@@ -0,0 +1,10 @@
+name: long ls
+cmdline:
+  - ./test.exe
+  - filename: ls.annot
+env: ~
+network: ~
+files:
+  - name: ls.annot
+    contents: ICAgICAgICAgICAgIDE1NGYwICAgICAgMCBJTlNUUiBYUkVGIElCVCBGUk9NREFUQSAgICAgICAgICAgICAgIDExMzggCiAgICAgICAgICAgICAxNTVlMCAgICAgIDAgSU5TVFIgWFJFRiBJQlQgRlJPTURBVEEgICAgICAgICAgICAgICAxMGQ4IAogICAgICAgICAgICAgMTU2MjAgICAgICAwIElOU1RSIFhSRUYgSUJUIEZST01EQVRBICAgICAgICAgICAgICAgMTBhOCAKICAgICAgICAgICAgIDE1NjkwICAgICAgMCBJTlNUUiBYUkVGIElCVCBGUk9NREFUQSAgICAgICAgICAgICAgIDEwMzAgCiAgICAgICAgICAgICAxNjJjMCAgICAgIDAgSU5TVFIgWFJFRiBJQlQgRlJPTURBVEEgICAgICAgICAgICAgICA1ODY2IAogICAgICAgICAgICAgMTYzMzAgICAgICAwIElOU1RSIFhSRUYgSUJUIEZST01EQVRBICAgICAgICAgICAgICAgNTg1ZiAKICAgICAgICAgICAgIDE2MzZjICAgICAgMCBJTlNUUiBYUkVGIElCVCBGUk9NREFUQSAgICAgICAgICAgICAgICBlZTAgCiAgICAgICAgICAgICAxNjJmMSAgICAgIDEgSU5TVFIgWFJFRiBJQlQgRlJPTUlCICAgICAgICAgICAgICAgMzc2ZSBSRVRVUk5UQVJHRVQKICAgICAgICAgICAgICA0MGQ3ICAgICAgNyBJTlNUUiBYUkVGIFRBS0VTX0FERFJFU1NfT0YgREFUQSAgICAgICAgICAgICAgMTY1OTgKICAgICAgICAgICAgICA0MGY4ICAgICAgNyBJTlNUUiBYUkVGIFRBS0VTX0FERFJFU1NfT0YgREFUQSAgICAgICAgICAgICAyMWYyZTAKICAgICAgICAgICAgICA0MGZmICAgICAgNyBJTlNUUiBYUkVGIFRBS0VTX0FERFJFU1NfT0YgREFUQSAgICAgICAgICAgICAgMWExNDgKICAgICAgICAgICAgICA0MTM0ICAgICAgNSBJTlNUUiBYUkVGIFRBS0VTX0FERFJFU1NfT0YgREFUQSAgICAgICAgICAgICAgMTY1OTgKICAgICAgICAgICAgICA0MTNlICAgICAgMiBJTlNUUiBYUkVGIElCVCBGUk9NSUIgICAgICAgICAgICAgICA0MTNjIFNXSVRDSFRBQkxFCiAgICAgICAgICAgICAgNDgzYyAgICAgIDIgSU5TVFIgWFJFRiBJQlQgRlJPTUlCICAgICAgICAgICAgICAgNDEzYyBTV0lUQ0hUQUJMRQogICAgICAgICAgICAgIDQ4NGIgICAgICAyIElOU1RSIFhSRUYgSUJUIEZST01JQiAgICAgICAgICAgICAgIDQxM2MgU1dJVENIVEFCTEUKICAgICAgICAgICAgICA1NWZmICAgICAgMiBJTlNUUiBYUkVGIElCVCBGUk9NSUIgICAgICAgICAgICAgICA0MTNjIFNXSVRDSFRBQkxFCiAgICAgICAgICAgICAgNTY5OSAgICAgIDIgSU5TVFIgWFJFRiBJQlQgRlJPTUlCICAgICAgICAgICAgICAgNDEzYyBTV0lUQ0hUQUJMRQogICAgICAgICAgICAgIDQxM2MgICAgICAyIElOU1RSIFhSRUYgRlJPTUlCIENPTVBMRVRFICAgICA2MCBTV0lUQ0hUQUJMRQogICAgICAgICAgICAgIDQxM2UgICAgICA3IElOU1RSIFhSRUYgVEFLRVNfQUREUkVTU19PRiBEQVRBICAgICAgICAgICAgIDIyMTMyZAo=
+    perms: rw
-- 
GitLab