summaryrefslogtreecommitdiff
path: root/source3/printing/printing.c
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2019-10-31 12:46:38 +0100
committerAndreas Schneider <asn@cryptomilk.org>2019-11-07 16:01:21 +0000
commit8846887a55b0c97a1639fc6ecb228941cf16b8f2 (patch)
treed268d59c43fa3b7506ff88adb252fef7b20b3128 /source3/printing/printing.c
parentede00779ab2d881e061adb9d861879e8c68e272b (diff)
downloadsamba-8846887a55b0c97a1639fc6ecb228941cf16b8f2.tar.gz
s3:printing: Fix %J substition
print_run_command() uses lp_print_command() which internally performs basic substition by calling talloc_sub_basic(). As a result. any of the variables in the "basic set", including "%J" are already substituted. To prevent the unwanted subtitution, we declare all affected configuration options as const, which disabled the basic substition. As a result print_run_command() can run manual substitution on all characters, including %J, in the variadic argument list *before* calling lp_string() to run basic substition which we had disabled before with the const. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13745 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org> Autobuild-Date(master): Thu Nov 7 16:01:21 UTC 2019 on sn-devel-184
Diffstat (limited to 'source3/printing/printing.c')
-rw-r--r--source3/printing/printing.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index c6bf6ec69dd..0f4db52e011 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -1717,7 +1717,7 @@ static void print_queue_update(struct messaging_context *msg_ctx,
/* don't strip out characters like '$' from the printername */
lpqcommand = talloc_string_sub2(ctx,
- lp_lpq_command(talloc_tos(), snum),
+ lp_lpq_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);
@@ -1737,7 +1737,7 @@ static void print_queue_update(struct messaging_context *msg_ctx,
}
lprmcommand = talloc_string_sub2(ctx,
- lp_lprm_command(talloc_tos(), snum),
+ lp_lprm_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);
@@ -2199,7 +2199,7 @@ static bool print_job_delete1(struct tevent_context *ev,
{
result = (*(current_printif->job_delete))(
lp_printername(talloc_tos(), snum),
- lp_lprm_command(talloc_tos(), snum),
+ lp_lprm_command(snum),
pjob);
/* Delete the tdb entry if the delete succeeded or the job hasn't
@@ -3027,7 +3027,7 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum,
/* don't strip out characters like '$' from the printername */
lpq_cmd = talloc_string_sub2(tmp_ctx,
- lp_lpq_command(talloc_tos(), snum),
+ lp_lpq_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);