Skip to content

Escape sequences cannot be used inside quoted strings #8605

Description

@milas

Description of the issue

Docker Compose v2 (compose-go) is stripping out escape characters when inside of a quoted string in a command (might happen in other circumstances).

If it's not in a quoted string, they are left as-is. For example, command: printf 'Hello\tworld\n' works while command: sh -c "printf 'Hello\tworld\n'" does not.

Context information (for bug reports)

  • Using Compose V2 docker compose ...
  • Using Compose V1 docker-compose ...

Output of docker(-)compose version

Docker Compose version v2.0.0-rc.2

Output of docker version

Client:
Cloud integration: 1.0.17
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:52:10 2021
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0

Output of docker-compose config
w/ v2 (v2.0.0-rc.2):

services:
hello-world:
command:
- sh
- -c
- printf 'Hellotworldn'image: busyboxnetworks:
default: nullnetworks:
default:
name: escape-repro_default

w/ v1 (1.29.2, build 5becea4):

services:
hello-world:
command: sh -c "printf 'Hello\tworld\n'"image: busyboxversion: '3.9'

Steps to reproduce the issue

  1. Use an escape sequence (e.g. \t or \n) inside of a quoted string in command

Observed result

  • Docker Compose v2 (compose-go) strips out the \ characters

Expected result

  • Docker Compose leaves the \ characters as-is

Stacktrace / full error message

n/a

Additional information

n/a

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions