pcroland / deew

Dolby Encoding Engine Wrapper
https://deew.dev
MIT License
194 stars 20 forks source link

[BUG] `&` in filename causes hidden unknown command error #64

Open mmenanno opened 4 days ago

mmenanno commented 4 days ago

Description of the the bug I was getting some mysterious failures during the ffmpeg step of deew so I passed in the -la flag so I could grab the exact command and run it myself. Turns out an & in the filename was causing the second half of the filename to be interpreted as an unknown command. I found I was able to get around this (outside of deew, running it myself) by wrapping the input and output in quotes.

Version deew 3.2.1

OS Ubuntu 24.04 LTS

ted423 commented 4 days ago

@mmenanno i think is dee issue

mmenanno commented 4 days ago

@ted423 no the issue happens before it even gets to dee.

For example:

ffmpeg -y -drc_scale 0 -i testfile.&.does.not.work.mkv -map 0:a:0 -c pcm_s24le -rf64 always /var/tmp/deew/testfile.&.does.not.work.mkv && dee -x /var/tmp/deew/testfile.&.does.not.work.xml --disable-xml-validation

Would result in this error:

[1] 6263
[2] 6264
[3] 6265
ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
  configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
.does.not.work.mkv: command not found
.does.not.work.mkv: command not found
.does.not.work.xml: command not found

[1]+  Stopped                 ffmpeg -y -drc_scale 0 -i testfile.
[2]   Exit 127                .does.not.work.mkv -map 0:a:0 -c pcm_s24le -rf64 always /var/tmp/deew/testfile.

This error would be avoided though if the command was instead generated with quotes around the input and output like:

ffmpeg -y -drc_scale 0 -i 'testfile.&.does.not.work.mkv' -map 0:a:0 -c pcm_s24le -rf64 always '/var/tmp/deew/testfile.&.does.not.work.mkv' && dee -x '/var/tmp/deew/testfile.&.does.not.work.xml' --disable-xml-validation