[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Sun Aug 18 20:05:23 UTC 2019
vcl/unx/generic/printer/cupsmgr.cxx | 39 +++++++++++++++++++++++++++++++-----
1 file changed, 34 insertions(+), 5 deletions(-)
New commits:
commit 931b63db1ce15b309eb6f879f1da992986bf974d
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Aug 17 21:14:58 2019 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Aug 18 22:04:17 2019 +0200
Related: tdf#53029 escape backslash in username for 'domain\username'
Change-Id: I645623886396b55ccea273bfd697cf319b53f506
Reviewed-on: https://gerrit.libreoffice.org/77651
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/generic/printer/cupsmgr.cxx b/vcl/unx/generic/printer/cupsmgr.cxx
index 7d107de5724d..8d0c6528dbcd 100644
--- a/vcl/unx/generic/printer/cupsmgr.cxx
+++ b/vcl/unx/generic/printer/cupsmgr.cxx
@@ -745,6 +745,35 @@ namespace
}
}
+namespace
+{
+ OString EscapeCupsOption(const OString& rIn)
+ {
+ OStringBuffer sRet;
+ sal_Int32 nLen = rIn.getLength();
+ for (sal_Int32 i = 0; i < nLen; ++i)
+ {
+ switch(rIn[i])
+ {
+ case '\\':
+ case '\'':
+ case '\"':
+ case ',':
+ case ' ':
+ case '\f':
+ case '\n':
+ case '\r':
+ case '\t':
+ case '\v':
+ sRet.append('\\');
+ break;
+ }
+ sRet.append(rIn[i]);
+ }
+ return sRet.makeStringAndClear();
+ }
+}
+
bool CUPSManager::endSpool( const OUString& rPrintername, const OUString& rJobTitle, FILE* pFile, const JobData& rDocumentJobData, bool bBanner, const OUString& rFaxNumber )
{
SAL_INFO( "vcl.unx.print", "endSpool: " << rPrintername << "," << rJobTitle << " copy count = " << rDocumentJobData.m_nCopies );
@@ -804,18 +833,18 @@ bool CUPSManager::endSpool( const OUString& rPrintername, const OUString& rJobTi
{
OString sAuth;
if (bDomain)
- sAuth = aDialog.getDomain().replaceAll(",", "\\,");
+ sAuth = EscapeCupsOption(aDialog.getDomain());
if (bUser)
{
- if (!sAuth.isEmpty())
+ if (bDomain)
sAuth += ",";
- sAuth += aDialog.getUserName().replaceAll(",", "\\,");
+ sAuth += EscapeCupsOption(aDialog.getUserName());
}
if (bPass)
{
- if (!sAuth.isEmpty())
+ if (bUser || bDomain)
sAuth += ",";
- sAuth += aDialog.getPassword().replaceAll(",", "\\,");
+ sAuth += EscapeCupsOption(aDialog.getPassword());
}
nNumOptions = cupsAddOption("auth-info", sAuth.getStr(), nNumOptions, &pOptions);
}
More information about the Libreoffice-commits
mailing list