From 7c128638eaf14e5c2b653afff63b2bec7102d501 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 3 Feb 2022 17:56:28 +0100 Subject: [PATCH] Docker/Linux: Fix outputForRunInShell ... in case there is embedded NUL in the output. Change-Id: Ic899bcf8d01cceed4ea6e16d4991fb80b7ac70ca Reviewed-by: Christian Stenger Reviewed-by: Jarek Kobus Reviewed-by: --- src/libs/utils/mimetypes/mimedatabase.cpp | 2 ++ src/plugins/docker/dockerdevice.cpp | 2 +- src/plugins/remotelinux/linuxdevice.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/mimetypes/mimedatabase.cpp b/src/libs/utils/mimetypes/mimedatabase.cpp index 656797c44fd..35e0257e5e7 100644 --- a/src/libs/utils/mimetypes/mimedatabase.cpp +++ b/src/libs/utils/mimetypes/mimedatabase.cpp @@ -738,6 +738,8 @@ MimeType Utils::mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode) MimeType Utils::mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode) { MimeDatabase mdb; + if (filePath.needsDevice()) + return mdb.mimeTypeForUrl(filePath.toUrl()); return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode)); } diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index eda67d973f9..cf355fed182 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -1733,7 +1733,7 @@ QString DockerDevicePrivate::outputForRunInShell(const CommandLine &cmd) const LOG("Run command in shell:" << cmd.toUserOutput() << "output size:" << output.size()); if (QTC_GUARD(output.endsWith(markerWithNewLine))) output.chop(markerWithNewLine.size()); - return QString::fromUtf8(output); + return QString::fromUtf8(output, output.size()); } // Factory diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 2fa40838e50..abf8667018f 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -270,7 +270,7 @@ public: if (pos >= 0) output = output.left(pos); DEBUG("CHOPPED2 " << output); - return QString::fromUtf8(output); + return QString::fromUtf8(output, output.size()); } bool isRunning() const { return m_shell; }