Add tests modifying existing extra fields.
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index 9a1be81..8508031 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -64,6 +64,8 @@
 	extra_get.test
 	extra_get_by_id.test
 	extra_set.test
+	extra_set_modify_c.test
+	extra_set_modify_l.test
 	file_comment_encmismatch.test
 	fopen_unchanged.test
 	fread.test
diff --git a/regress/Makefile.am b/regress/Makefile.am
index 4c52171..6905c9b 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -27,6 +27,8 @@
 	broken.zip \
 	encrypt.zip \
 	encrypt_plus_extra.zip \
+	encrypt_plus_extra_modified_c.zip \
+	encrypt_plus_extra_modified_l.zip \
 	filename_duplicate.zip \
 	filename_empty.zip \
 	fileorder.zip \
@@ -141,6 +143,8 @@
 	extra_get.test \
 	extra_get_by_id.test \
 	extra_set.test \
+	extra_set_modify_c.test \
+	extra_set_modify_l.test \
 	file_comment_encmismatch.test \
 	fopen_unchanged.test \
 	fread.test \
diff --git a/regress/encrypt_plus_extra_modified_c.zip b/regress/encrypt_plus_extra_modified_c.zip
new file mode 100644
index 0000000..f50d649
--- /dev/null
+++ b/regress/encrypt_plus_extra_modified_c.zip
Binary files differ
diff --git a/regress/encrypt_plus_extra_modified_l.zip b/regress/encrypt_plus_extra_modified_l.zip
new file mode 100644
index 0000000..a546022
--- /dev/null
+++ b/regress/encrypt_plus_extra_modified_l.zip
Binary files differ
diff --git a/regress/extra_set_modify_c.test b/regress/extra_set_modify_c.test
new file mode 100644
index 0000000..9f84ced
--- /dev/null
+++ b/regress/extra_set_modify_c.test
@@ -0,0 +1,17 @@
+# change existing central extra field
+program modify
+args encrypt.zip get_extra 0 0 c get_extra 0 1 c get_extra 0 2 c get_extra 0 0 l get_extra 0 1 l get_extra 0 2 l set_extra 0 2345 0 c Extrafieldcontent get_extra 0 0 c get_extra 0 1 c get_extra 0 2 c get_extra 0 0 l get_extra 0 1 l get_extra 0 2 l
+file encrypt.zip encrypt_plus_extra.zip encrypt_plus_extra_modified_c.zip
+return 0
+stdout Extra field 0x5455: len 5, data 0x033dda4c44
+stdout Extra field 0x7855: len 0
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x5455: len 9, data 0x033dda4c444dda4c44
+stdout Extra field 0x7855: len 4, data 0x64001400
+stdout Extra field 0x5455: len 5, data 0x033dda4c44
+stdout Extra field 0x7855: len 0
+stdout Extra field 0x0929: len 17, data 0x45787472616669656c64636f6e74656e74
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x5455: len 9, data 0x033dda4c444dda4c44
+stdout Extra field 0x7855: len 4, data 0x64001400
diff --git a/regress/extra_set_modify_l.test b/regress/extra_set_modify_l.test
new file mode 100644
index 0000000..0a838b6
--- /dev/null
+++ b/regress/extra_set_modify_l.test
@@ -0,0 +1,17 @@
+# change existing local extra field
+program modify
+args encrypt.zip get_extra 0 0 c get_extra 0 1 c get_extra 0 2 c get_extra 0 0 l get_extra 0 1 l get_extra 0 2 l set_extra 0 2345 0 l Extrafieldcontent get_extra 0 0 c get_extra 0 1 c get_extra 0 2 c get_extra 0 0 l get_extra 0 1 l get_extra 0 2 l
+file encrypt.zip encrypt_plus_extra.zip encrypt_plus_extra_modified_l.zip
+return 0
+stdout Extra field 0x5455: len 5, data 0x033dda4c44
+stdout Extra field 0x7855: len 0
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x5455: len 9, data 0x033dda4c444dda4c44
+stdout Extra field 0x7855: len 4, data 0x64001400
+stdout Extra field 0x5455: len 5, data 0x033dda4c44
+stdout Extra field 0x7855: len 0
+stdout Extra field 0x0929: len 17, data 0x65787472616669656c64636f6e74656e74
+stdout Extra field 0x0929: len 17, data 0x45787472616669656c64636f6e74656e74
+stdout Extra field 0x5455: len 9, data 0x033dda4c444dda4c44
+stdout Extra field 0x7855: len 4, data 0x64001400