summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2019-02-12 23:38:29 +0900
committerCaolán McNamara <caolanm@redhat.com>2019-02-13 11:31:58 +0100
commit38707435918b250d8a722f7ae324c29f00622a0b (patch)
treebdd229077b9634dd992f628d53f3df6b2f8ff856 /shell
parentc9e1a5e8894dac6c5f1044dd0e98bc2d453fa995 (diff)
tdf#119890 Lookup XDG_(DOCUMENTS|TEMPLATES)_DIR correctly
... for My Documents and My Templates. It seems customary to name XDG_*_DIR in all uppercase. This also fixes buffer overrun IIUC, as osl_readLine() does not return the newline delimiter. Change-Id: If85ca7e6abe663e29d36b65a08d358d3d7d27c4b Reviewed-on: https://gerrit.libreoffice.org/67757 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/source/backends/desktopbe/desktopbackend.cxx10
1 files changed, 5 insertions, 5 deletions
diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx
index 8cfaefc9f9c9..5923c6583fb7 100644
--- a/shell/source/backends/desktopbe/desktopbackend.cxx
+++ b/shell/source/backends/desktopbe/desktopbackend.cxx
@@ -129,6 +129,7 @@ void Default::setPropertyValue(OUString const &, css::uno::Any const &)
OUString xdg_user_dir_lookup (const char *type)
{
+ size_t nLenType = strlen(type);
char *config_home;
char *p;
bool bError = false;
@@ -161,11 +162,10 @@ OUString xdg_user_dir_lookup (const char *type)
rtl::ByteSequence seq;
while (osl_File_E_None == osl_readLine(handle , reinterpret_cast<sal_Sequence **>(&seq)))
{
- /* Remove newline at end */
int relative = 0;
int len = seq.getLength();
- if(len>0 && seq[len-1] == '\n')
- seq[len-1] = 0;
+ seq.realloc(len + 1);
+ seq[len] = 0;
p = reinterpret_cast<char *>(seq.getArray());
while (*p == ' ' || *p == '\t')
@@ -173,9 +173,9 @@ OUString xdg_user_dir_lookup (const char *type)
if (strncmp (p, "XDG_", 4) != 0)
continue;
p += 4;
- if (strncmp (p, type, strlen (type)) != 0)
+ if (strncmp (p, OString(type, nLenType).toAsciiUpperCase().getStr(), nLenType) != 0)
continue;
- p += strlen (type);
+ p += nLenType;
if (strncmp (p, "_DIR", 4) != 0)
continue;
p += 4;