summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@digia.com>2018-11-21 15:23:08 +0100
committerEike Ziller <eike.ziller@qt.io>2018-11-21 17:30:14 +0000
commit069ac16e1917441a89e3e24405e36255a3bfe184 (patch)
tree2a9f1e05e5b957260611bba0fe324ca390af79e7
parentca7c534e58161f2aa89b0e04571894ea1419e958 (diff)
downloadqt-creator-069ac16e1917441a89e3e24405e36255a3bfe184.tar.gz
Android: Fix passing binary data through pipe on Windows
Passing binary data through a pipe may break as soon it hits a control sequence. Encode binary data before piping and decode it on the device before writing to file. Fixes: QTCREATORBUG-21547 Change-Id: Iddef5582631575fdd2091c3795d2468be10b8c74 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/android/androidrunnerworker.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp
index 17004b1035..f76f202bba 100644
--- a/src/plugins/android/androidrunnerworker.cpp
+++ b/src/plugins/android/androidrunnerworker.cpp
@@ -278,7 +278,8 @@ bool AndroidRunnerWorker::uploadFile(const QString &from, const QString &to, con
if (!f.open(QIODevice::ReadOnly))
return false;
runAdb({"shell", "run-as", m_packageName, "rm", to});
- auto res = runAdb({"shell", "run-as", m_packageName, QString("sh -c 'cat > %1'").arg(to)}, 60, f.readAll());
+ const QByteArray data = f.readAll();
+ const bool res = runAdb({"shell", "run-as", m_packageName, QString("sh -c 'base64 -d > %1'").arg(to)}, 60, data.toBase64());
if (!res)
return false;
return runAdb({"shell", "run-as", m_packageName, "chmod", flags, to});