From 53b091f15e916b5962bd23c7d035d989508bf0c9 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Mon, 2 Oct 2017 15:04:21 +0200 Subject: [PATCH] Merge #11193: [Qt] Terminate string *pszExePath after readlink and without using memset Summary: 3a4401a [Qt] Terminate string *pszExePath after readlink and without using memset (practicalswift) Pull request description: Terminate string `*pszExePath` after `readlink` and before passing to operator `<<`. * `ssize_t readlink(const char *pathname, char *buf, size_t bufsiz)` does not append a null byte to `buf`. * Operator `<<` expects a null-terminated string. Tree-SHA512: fc18844bb23059fead8db0cb9b4b4ba6188f58e3f19ab4719c2737cc5dd6df23ae7d4804ef2820d39b334204a48ee3de1d202c272bcd156e60761af2fcb9349d Backport of Core PR11193 https://github.com/bitcoin/bitcoin/pull/11193/ Test Plan: make check ./bitcoin-qt Reviewers: deadalnix, Fabien, jasonbcox, O1 Bitcoin ABC, #bitcoin_abc Reviewed By: Fabien, O1 Bitcoin ABC, #bitcoin_abc Differential Revision: https://reviews.bitcoinabc.org/D3933 --- src/qt/guiutil.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 67473e1ca..25f53a810 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -739,11 +739,12 @@ bool SetStartOnSystemStartup(bool fAutoStart) { fs::remove(GetAutostartFilePath()); } else { char pszExePath[MAX_PATH + 1]; - memset(pszExePath, 0, sizeof(pszExePath)); - if (readlink("/proc/self/exe", pszExePath, sizeof(pszExePath) - 1) == - -1) { + ssize_t r = + readlink("/proc/self/exe", pszExePath, sizeof(pszExePath) - 1); + if (r == -1) { return false; } + pszExePath[r] = '\0'; fs::create_directories(GetAutostartDir());