-
Notifications
You must be signed in to change notification settings - Fork 281
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Terminate empty ASCII strings #1486
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you augment the test suite, please?
Is there a less obtuse if statement, such as:
value_ += value_.size() ? '' : '\0';
Not the same thing - I presume the check whether the non-empty string is already terminated was there for a reason... I'll work on that test case. |
If you don't want to change that code, please a comment to explain it and reference this bug report. I would prefer that you change it. |
I've changed my mind. Your code's good and I'm happy if you add a comment. int AsciiValue::read(const std::string& buf)
{
value_ = buf;
// ensure count>0 and nul terminated # https://github.com/Exiv2/exiv2/issues/1484
if (value_.size() == 0 || value_[value_.size()-1] != '\0') value_ += '\0';
return 0;
} Here's a test: tests/bugfixes/github/test_issue_1484.py # -*- coding: utf-8 -*-
from system_tests import CaseMeta, CopyTmpFiles, path
@CopyTmpFiles("$data_path/Stonehenge.exv")
class test_issue_1484(metaclass=CaseMeta):
url = "https://github.com/Exiv2/exiv2/issues/1484"
filename = path("$tmp_path/Stonehenge.exv")
commands = [ "$exiv2 -g Copyright $filename"
, "$exiv2 -M\"set Exif.Image.Copyright Ascii ''\" $filename"
, "$exiv2 -g Copyright $filename"
]
stdout = ["","","""Exif.Image.Copyright Ascii 1
"""]
stderr = [""]*len(commands)
retval = [ 1,0,0] |
Thanks Robin, you were quicker ;) |
We want to do things quickly and efficiently. When the CI turns green, I will merge and close this one. Much the same with the mime matters. If you tweak BmffImage::mimeType() to generate the mime types that you consider appropriate, I'll update the test code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good Job. Thanks for doing this.
Whoops. Found a way to break the fix! If you fix the C++, I'll give you the modified code for test_issue_1484.py 845 rmills@rmillsm1:~/temp $ exiv2 -M'set Exif.Image.Copyright ' Stonehenge.jpg
846 rmills@rmillsm1:~/temp $ exiv2 -g Copyright Stonehenge.jpg
Exif.Image.Copyright Ascii 0
847 rmills@rmillsm1:~/temp $ |
Nice catch, grrrr... The debugger session will have to wait for a slot. |
The revised code is: // ensure count>0 and nul terminated # https://github.com/Exiv2/exiv2/issues/1484
if (value_.size() == 0 || (value_.size() > 0 && value_[value_.size()-1] != '\0')) value_ += '\0'; And the test is: # -*- coding: utf-8 -*-
from system_tests import CaseMeta, CopyTmpFiles, path
@CopyTmpFiles("$data_path/Stonehenge.exv")
class test_issue_1484(metaclass=CaseMeta):
url = "https://github.com/Exiv2/exiv2/issues/1484"
filename = path("$tmp_path/Stonehenge.exv")
commands = [ "$exiv2 -g Copyright $filename"
, "$exiv2 -M\"set Exif.Image.Copyright Ascii ''\" $filename"
, "$exiv2 -g Copyright $filename"
, "$exiv2 -M\"del Exif.Image.Copyright Ascii\" $filename"
, "$exiv2 -g Copyright $filename"
, "$exiv2 -M\"set Exif.Image.Copyright\" $filename"
, "$exiv2 -g Copyright $filename"
, "$exiv2 -M\"set Exif.Image.Copyright me 2021-\" $filename"
, "$exiv2 -g Copyright $filename"
]
stdout = ["","",
"""Exif.Image.Copyright Ascii 1
""","","","",
"""Exif.Image.Copyright Ascii 1
""","",
"""Exif.Image.Copyright Ascii 9 me 2021-
"""]
stderr = [""]*len(commands)
retval = [1,0,0,0,1,0,0,0,0]
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kmilos. I've pushed the fix. If you're happy and the CI is green, please merge and close.
…27.4 Alejandro Criado-Pérez (1): Added ES translations Alex Esseling (2): add_cr3_tags fixing exceptions and reordering tags Christoph Hasse (10): Implement handling of new Nikon LensData version 8.0 and 8.01 try and fix ci-build try and fix ci-build 2/N try and fix ci-build 3/N add shutter mode and mechanical shutter count to nikon makernote 3 include test of shutter mode and mech shutter count in lensdata 8 test use EXV_PRINT_TAG macro instead of specific print function fix formatting introduce parseTiff method to parse exif run clang-format on new files Freddie Witherden (2): Add support for Sony lens aberration correction parameters. Add support for Fuji's CropMode tag. Ingo Weyrich (1): Use a.rfind(b, 0) == 0 instead of a.find(b) == 0 to reduce processing time when checking that a starts wit b, #1459 Jan Tojnar (2): cmake: Fix paths with absolute GNUInstallDirs cmake: Fix include_directories for exiv2lib target Kevin Backhouse (26): Fix incorrect delete. Regression test for Exiv2/exiv2#1530 Fix integer overflow. Fix test name Use $kerCorruptedMetadata, rather than hard-coded string. Regression test for GHSA-5p8g-9xf3-gfrr Improve bound checking in WebPImage::doWriteMetadata() Regression test for GHSA-jgm9-5fw5-pw9p Better bounds checking in Jp2Image::encodeJp2Header() Fix signed/unsigned compiler warnings. Regression test for GHSA-8949-hhfh-j7rj Add more bounds checks in Jp2Image::encodeJp2Header Regression test for GHSA-7569-phvm-vwc2 Add bounds check in Jp2Image::doWriteMetadata(). Fix infinite loop caused by subBox with zero size. Prevent large allocation. Initialize field. Use readOrThrow to check error conditions of iIo.read(). Fix quadratic complexity performance bug. Regression test for Exiv2/exiv2#1570. Fix out-of-bounds read in bmffimage.cpp Stop the test from failing when EXIV2_ENABLE_BMFF=Off. Fix signed/unsigned compiler warning. Fix signed/unsigned compiler warning. Fix LGTM warning about format specifier Check that the string is properly terminated. Lemures Lemniscati (1): samples/xmpprint.cpp: Fix typos LeoHsiao (76): Converted two bash test scripts into Python scripts as an example Correct ioTest's execution directory Rename unit_test and import it in system_tests.py Update the documentation for the test cases Let bash_test read the configuration parameters from suite.conf Rename bash_test to bash_tests Wrap shell commands in single quotes Rename tests/README.md Rename the variable `output` to `out` Add default parameter value to the function 'runTest' Define a class 'Log' to merge logs into Python exception message Rewrite testcase 'addmoddel' Add methods setUp() and tearDown() Add some functions to replace shell commands: cp, rm, cat, grep, save, diff Rewrite testcase 'conversions' Rewrite testcase 'crw-test' Clear the log buffer after test Rewrite testcase 'exifdata-test' Add functions: mv, md5sum Rewrite testcase 'icc-test' Optimize class 'Log' and add class 'Conf' Add excute() to replace runTest() Optimize cat(), save() and excute() to handle bytes type content Rename bash_tests.utils as BT Optimize Conf.init() in bash_tests.utils Completed test_io() Remove copyTestFiles() Add class 'Output' to simulate the stdout buffer Refactor exiv2-test.sh to test_exiv2() Rewrite diff() to simulate the output of GNU diff Refactor imagetest.sh to test_image() Rename class 'Conf' to 'Config' Rename test cases from 'test*()' format to '*test()' format Mainly optimize utils.py: Add functions: diff_byte(), diffCheck() Refactor iptctest.sh to iptc_test() Modify printTest(): Ignore the difference of data_dir Add environment variables: EXIV2_HTTP, EXIV2_PORT Adjust line breaks, binary extension on Windows Adjust the format of the command on Windows Ignore printTest() output differences on Windows Ignore conversions_test() output differences on Windows Ignore .vscode Deprecated Config.exiv2_ext Refactor modify-test.sh to iso65k_test() Refactor path-test.sh to path_test() Adjust code spacing Refactor function execute() to class Executer Refactor modify-test.sh to modify_test() Add find() Refactor preview-test.sh to preview_test() Refactor stdin-test.sh to stdin_test() Refactor stringto-test.sh to stringto_test() Refactor tiff-test.sh to tiff_test() Add description for the module lxml Refactor version_test.sh to version_test() Refactor webp-test.sh to webp_test() Optimize diff() Refactor write-test.sh to write_test() Refactor write2-test.sh to write2_test() Refactor xmpparser-test.sh to xmpparser_test() Ignore the difference in the path separator for stdin_test Fix webp_test: correct a test file name Enhance function find(), cp(), rm(), mv() add nls_test() Fix variable LANG in nls_test() Correct the output of exiv2-test Fix nls_test(): Check only part of the output Supports setting EXIV2_HTTP or EXIV2_PORT to '' to ignore HTTP test Support to display the command to execute Support variables: DYLD_LIBRARY_PATH, LD_LIBRARY_PATH Set the variable EXIV2_ECHO when executing `make python_tests VERBOSE=1` let `make python_tests` runs in verbose mode Set the default value for the variable VALGRIN to empty Cancel adding a newline when testing Simplify functions: runTest(), verbose_version() Leonardo Brondani Schenkel (2): Detect Sigma 18-35mm f/1.8 DC HSM (firmware 2.x) Make lens name consistent with models 150 and 368 Luis Diaz Mas (1): Use check_cxx_compiler_flags instead of C version Luis Díaz Más (17): Use ctime instead of time.h Assume existence of stdint.h Move winsock2 inclusion to http.cpp WIN32_LEAN_AND_MEAN propagated with exiv2lib target Include winsock2 at the beginning of http.cpp Revert "change implementation of Exiv2::base64encode() to adopt implementation from same URL as base64decode()." Hide exiv2-xmp dependency in CMake config file: Use latest available version of Conan in CI Hide zlib absolute path in cmake config file Adding Ubuntu 18.04 & 20.04 to travis builds CI: Special packages for Ubuntu 20.04 CI: Fix how we pass CMake options in travis Modify strncpy0 to avoid warning ci: use always pip3 for installing conan ci: Use same travis jobs as in main (drop Ubuntu 16.04) New mergify config file to forward changes to main ci-travis: trying to fix valgrind build Miloš Komarčević (40): Remove EXIV2_EXT variable references Remove remaining vestiges of binary_extension Add more easy accessors for Exif & TIFF/EP overlap Add DateTimeOriginal to easyaccess Test cover for added easyaccess methods Fix easyaccess-test Preserve trailing space in test_easyaccess.py output Fix CanonFi typo in man page exiv2 pr uses easyaccess API (co-authored with clanmills) actions: simplify print summary using easyaccess Add some DNG related tag values Fix syntax error, improve value name style Add DNG CFALayout values Also use existing light source pretty print for DNG Update CalibrationIlluminant test Add remaining DNG 1.3 tag values Minor DNG related changes after review Moved ambient tags to Exif only list, other refactoring Complete DNG 1.4 spec support Fix Pana tag typo and improve Fuji tag description Add DNG 1.5 tags and values Promote remaining SHORT/LONG tags default type Pretty print PlanarConfig Add DNG 1.6 support Add DNG 1.6 test Fix MinGW build for Ninja generator Adding DNG 1.6 triple-illuminant calibration tags Include HEIC type in docs Minor whitespace formatting Revert style changes Terminate empty ASCII strings as well Include HEIC type explicitly Add comment and test case Include a few more BMFF major brands Add mif1 brand to heif mime type Replace tabs to fix indentation issues Fix readme typo Check for symlinks when uninstalling Match closing statement, doh Update bmffimage.hpp include order and path (#1648) Olli Lupton (2): Add LensType entry for Olympus M.Zuiko Digital ED 17mm F1.2 Pro lens. Add a test for PR 1375, checking the Olympus 17mm f/1.2 Pro lens is recognised correctly. Peter Kovář (17): [WIP] Add ISO/IEC Base Media File Format Small corrections [WIP] Added box types [WIP] Base Media File Format [WIP] Redefine tags [WIP] Another try [WIP] Correction [WIP] 64-bit length [WIP] Correction to make Travis CI happy [WIP] Yet another type cast correction to make Travis CI happy [WIP] Fixed Image Spatial Extents Property Handling Corrected format string Add CR3 image dimensions Update README.md Add artist tag Revert "Add artist tag" Remove executable bits from test data files Pydera (1): Fix out of buffer access in #1529 Robin Mills (179): fix_1236_0.27 Reverting changes to test/icc-test.sh for investigation. Fix correctly this time and tested with the user files. Test suite updated to use Reagan2.jp2 Fixed typo declaration of pad when writing ICC profile. Update icc-test.out Disable libiconv support when building with Visual Studio. fix_1266_GPSProcessingMethod fix_1268_GPSProcessingMethod fix_solaris_stack_protection_0.27 fix_solaris_stack_protection_0.27 fix_1297_crwtest_linux_coverage This is a copy of master/.travis.yml to see what happens on the CI. fix_cygwin_stack_protection_0.27 Second effort to unexpose winsock2.h from include <exiv2/exiv2.hpp> using EXIV2_BUILDING_EXIV2 mechanism. Updated reference output. Well spotted, @piponazo. Fixing previous incorrect commit. fix_1353_mingw_toolchain_0.27 Exiv2/exiv2#1356 (comment) fix_1393_iptc_tags_web_0.27 I hope I've made a better job of this at this attempt. I don't thing the "section" enum is of much importance. I don't believe anything in particular is done with with it. Fix tag GPSHPositioningError to use printValue() pretty-printer. Clarified definition and use of enum SectionId @kmilos: please review/approve. Documentation revision in response to #1394 New profiles as documented in README-CONAN.md Add ribbon to README-SAMPLES.md. Fixing typos. Moved orphaned declaration of exifGPSDirRef. Documented exiv2lib_export.h Update script cmd64.bat following review by @tester0077 I hope this is the final change to this PR. WIP #1402 rafimage::printStructure() improved formatting. bumpRevision_0.27.4.9 WIP: working to understand how to support tiffIfd in tiffvisitor_int.cpp Remove debugging code. Add FujiIFD to TiffCreator::tiffGroupStruct_ Success. It's working! Code/comment tidy. Add to test harness. Fix significant typo in cmd64.bat Pointless change to trigger CI to build again. Hoping for CI Contentment! Calming Test Suite concerning Continuous and CropMode confusion. fix_1431_binary_comment. appveyor_mingw_0.27 Changed APPVEYOR_BUILD_WORKER_IMAGE Try again. One more time. And another go. Getting better. Modify the path. Might build this time. Fix typo. Run python_tests. Reformmated. Try again! Debugging mingw.yml Last change, I hope. And another try. And another. Debugging mingw.yml Debugging mingw.yml More debugging. Debugging More debugging. Only run python_tests Try to build using Cygwin/64 Debugging cygwin/64 Cygwin Cygwin: Add zlib and expat to install Cygwin/64 install depedencies. libexpat-devel Use C++98 and run python tests. Install pip Trying to get pip to install. Com'on pip3. Install libxml2 and libxslt python38-libxml2 Build and test both MinGW/msys2 and Cygwin64 Fix matrix syntax. Try again. Build Cygwin and MinGW in parallel. Try again. Fixing typo Rename appveyor configuration file. Modified install to only install what's required for BUILD Restored 0.27.2 "toString()" behaviour of Exifdatum.value().toString() for CommentValue. Fixing test suite. Revert "Fixing test suite." Revert "fix_1431_binary_comment." Revert "Restored 0.27.2 "toString()" behaviour of Exifdatum.value().toString() for CommentValue." Revert "Revert "fix_1431_binary_comment."" Add test image. Add test script. Enhanced documentation formatting. Fixing test suite. I've explained the changes in a note in the PR. Fix image handler to give jp2image code higher priority than the next isobmff code. Rename class ISOBMFF => class bmffImage to match other image handlers. Removed C++11 style code. Removed unused code. Fixing Linux build/test issues. Fix Linux build-breaker when ENABLE_ISOBMFF=False and EXIV2_TEAM_WARNINGS_AS_ERRORS=On Modified ci/install.sh to install cmake before dependencies. fix_1464_sony2010e Fix c++ code fix_1464_sony2010e Add test file and test script fix_1464_sony2010e test script fix_1471_sony2010_0.27 Test suite update. Change test suite timeout. C++ simplification. WIP: Refactored readMetadata() into recursive boxHandler() Fixing a build breaker. Fix linux/CI build breaker. Fix msvc/CI build breakers. Fix linux/CI build breaker. Fixing warnings from LGTM/CI. More fixes for LGTM/CI warnings. WIP: Added class Iloc and related code. Fixed recursion issue in the meta box. Tidying up. 1. pixelHeight_. 2. refactored indenter() -> indent(). 3. EXIV2_DEBUG_MESSAGES outputs to std::cerr Updating .gitignore. Parse Exif in .HEIC/.AVIF Cleanup. 1. Recursively process uuid/cano box. 2. Fix LGTM/CI sprintf grumbles. 3. Comment parseTiff() in bmffimage.hpp. Tidy up. Rename Tag::cr3_exif -> Tag:cmt2 Revised following code review by @hassec. Thank You, Christoph. Remove bmffimage::printStructure() as discussed in review with @hassec. Corpse removal and cleanup in bmpfimage.hpp Added parseXmp() to parse Xmp metadata. Fix .CR3 files to call parseXmp(). Rename test image. WIP: adding BmffImage::printStructure() and support for colr box. Cosmetic change to -pR/-pS output. Adding HIF tests. Fix MSVC build breaker and modify test_pr_1475_HIF.py to run on Windows. Renamed a test file. Test suite updates. Add SECURITY.md and reference it from the Security Tab in the GitHub Web UI. Following review by @hassec, I use static base64_encoding vector in both Exiv2::base64encode() and Exiv2::base64decode(). Move system_tests.runTest() and system_tests.verbose_version() to system_tests.BT fix_1486_effort2 Exiv2/exiv2#1486 (comment) use raise from test_pr1475*.py Add unit_tests to suite.conf Add python scripts equivalent to test/version_test.sh and unit_test.sh Refactor CMakeList.txt to run all tests using tests/runner.py Add test/ReadMe.txt Fix typos. Fix comments. Fix LD_LIBRARY_PATH. Add option arg raw=False to runTest() Use raw=True in unit_test.py. Sniff for unit_tests.exe! Better logic and error message. exiv2_v27_4_rc1 exiv2 --verbose --version was reporting have_strerror_r twice! Massive code prolog cleanup. Exiv2 v0.27.4 RC1 Preview. v27_4_rc1_effort2 Updated the user documents. Most changes relate to running the test suite. Add optional parameter forgive=False to reportTest() for use by nls_test to avoid false fails. Downgrade version to 0.27.4.10 = 0.27.4 RC1 Preview. Fixing typos. Bump revision number to Exiv2 v0.27.4 RC1. PR will be marked for review. Clarify bmff suppport as readonly. Set LD_LIBRARY_PATH to run bundled bin/exiv2. Push change in PR #1500. Thank you @kmilos. Update releasenotes.txt with more credit for Milos (and trigger macOS/CI which is red). All platform build on MacMini. fix_1507_avif_size0x0 Documentation Update (as discussed in #1508) Use the documented 5 line prolog in every sample application. Tidy up sample prologs and header code. fix_1508_enableBMMF_effort2 Add test script. fix_1504_metacopy_optstring fix_1503_JXL_bmff Added test file and script. Fix build breaker in test_issue_1503.py. fix_1522_jp2image_exif_asan test fix_1522_jp2image_exif_asan update_README_localisation v0.27.4RC2 v0.27.4 RC2 Release Notes. bump_release_number_0.37.4.39 fix_enableBMFF Bump version number. Update releasenotes.txt update changelog fix_broken_man_page v0.27.4 Thomas Petazzoni (1): Properly detect availability of flags in cmake/compilerFlags.cmake (#1252) clanmills (78): fix_1276_BUILD_PO_0.27 Do not build WebReady with Visual Studio. Build with C++11 Disable coverage (see #1297) Tweak conversion.sh for TZ conversion error in MSVC. Fix #1300 Use ubuntu on CI Remove .. from CMAKE_OPTIONS. -CMAKE_CXX_STANDARD=98 and Disable UNIT_TESTS. Simplify ci/run.sh Don't use ASAN on CI. -DCMAKE fix. Thanks @piponazo Disable Fedora/CentOS/Archlinux on gitlab/CI. fix 1307 ASAN issues with RemoteIo fix_1329_remove_bigtiff_0.27 Remove bigtiffimage.hpp from include/exiv2/CMakeLists.txt Fix: https://travis-ci.org/github/Exiv2/exiv2/jobs/730867927 run_stdin-test.sh_0.27 fix_1335_winsock2_0.27 pythonic_bash_ci_0.27 temporarily disable stdin-test and webp-test to get the CI operational again. nls-test script and reference file. Makefile updated to run nls-test.sh as part of bash_tests Adding test files to test suite. Script and reference file changes. Adding test files and bash script/reference-output Code changes C++ changes requested by @piponazo. Fix python png_test() recommended by @LeoHsiao1. Update reference output. Enable CentOS on gitLab-ci. Adding test files to test suite. Script and reference file changes. Temporarily neuter DEXIV2_TEAM_USE_SANITIZERS to get CentOS to build. Revert the last two changes. GitLab/centOS makes no sense. Will build on MacMini. Fix compiling http.cpp and reinstate centOS on gitLab. Disable centOS on CI. The web-server goes crazy althought this doesn't happen in the terminal on centOS. Fixing variable LANG replace base64encode in src/futils.cpp change implementation of Exiv2::base64encode() to adopt implementation from same URL as base64decode(). Add +x (execute) attribute to shell scripts. Fix handling of environment string VERBOSE Don't set --verbose in makefile. Don't treat exiv2_echo == VERBOSE. Fixing VERBOSE in environment (args.verbose==2 when set. args.verbose==0 when not set). Fixing EXIV2_PORT on MinGW/msys2. Disable OpenSUSE on CI. It's complaining about being unable to install the correct version of curl. Adding support for environment strings EXIV2_HTTP and EXIV2_PORT Adding support for VALGRIND and EXIV2_BINDIR Disable exiv2 option --binary Adding python test Updating man page. fix_929_exif2.31_0.27 Fix python test breaker Fixing exiv2-test.sh message when test/tmp is empty. Adding test images. Changed CI build default -DEXIV2_ENABLE_BMFF=On. Fixed suite to run with/without bmff. -pS and -pR same for bmff. Added 2.19 Support for bmff files Updated for bmff. Re-awaken obsolete command-line argument --binary and store class Task. refactored setModeAndPrintStructure() to respect class Task.binary_ when printing ICC profiles. Minor corrections and clarification concerning enableBMFF(). Fix box.length == to use bigEndian decode! Fix toAscii() to emit on ascii 32-127 bytes. Test suite update. With good fortune, bmffimage is ready for review. Replaced the ugly code in Exiv2::base64encode() and update the test suite. Fix Linux build breakers. Replaced Exiv2::base64encode() because last effort failed unit test on msvc. This should be it. Test suite fixed. Trick to avoid msvc issue with final line of base64 data. Fix ICC profile handling (my bad, iOS files are correct). Restoring i < dataLength trigraph that I should not have removed. Restore -pC --binary to output everything. Test suite updated to suit. Fix #1358. This should be in a different PR. Keep changes to base64 encode/decode together. Another effort to fix base64decode and associated unit test. Updated to adopt Review suggestions by @kmilos. Thank You, Milos. Fix msvc build breaker. Thank You @piponazo for the code review. I've made the changes you requested. Following review by @piponazo, I am clarifying the bool return from Exiv2::enableBMFF(). fix_1473_LocationShown Exiv2/exiv2#1486 (comment) czgnp (3): Update canonmn_int.cpp and a test case for Python and the test files evanokeeffe (1): found a bug in metacopy, the -x parameter wasn't in the optstring. rectified that hanno@schwalm-bremen.de (3): Adding support for DefaultUserCrop and BaselineExposureOffset Fix typo and remove empty line. Revert exv commit and remove empty line. postscript-dev (7): Add missing "Xmp" to project description Update PACKAGE_URL and PROJECT_DESCRIPTION text Fix langAltValue::read() parsing Add static to LangAltValue::read() const values Change LangAltValue::read() tests to unitTests Fix spelling mistakes in LangAltValue::read() Update exiv2 man page - langAlt format tbeu (1): Fix write ability flags of PSD files (#1260)
Fixes #1484