diff options
author | Christian Stenger <christian.stenger@digia.com> | 2018-11-21 15:23:08 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2018-11-21 17:30:14 +0000 |
commit | 069ac16e1917441a89e3e24405e36255a3bfe184 (patch) | |
tree | 2a9f1e05e5b957260611bba0fe324ca390af79e7 | |
parent | ca7c534e58161f2aa89b0e04571894ea1419e958 (diff) | |
download | qt-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.cpp | 3 |
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}); |