summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Blin <kai@samba.org>2011-07-08 15:06:13 +0200
committerKarolin Seeger <kseeger@samba.org>2011-07-24 20:45:50 +0200
commit407ae61fbfc8ee1643a4db8ea9b104f031b32e0f (patch)
tree5a989b8ffe702f5e51cf6adff01da39376a8f3d4
parent4850456845d2da5e3451716a5ad4ca0ef034e01f (diff)
downloadsamba-407ae61fbfc8ee1643a4db8ea9b104f031b32e0f.tar.gz
samba-407ae61fbfc8ee1643a4db8ea9b104f031b32e0f.tar.xz
samba-407ae61fbfc8ee1643a4db8ea9b104f031b32e0f.zip
s3 swat: Add XSRF protection to printer page
Signed-off-by: Kai Blin <kai@samba.org>
-rw-r--r--source/web/swat.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/source/web/swat.c b/source/web/swat.c
index 524248481b9..4582a632edd 100644
--- a/source/web/swat.c
+++ b/source/web/swat.c
@@ -1332,18 +1332,15 @@ static void printers_page(void)
int i;
int mode = 0;
unsigned int parm_filter = FLAG_BASIC;
+ const char form_name[] = "printers";
+
+ if (!verify_xsrf_token(form_name)) {
+ goto output_page;
+ }
if (share)
snum = lp_servicenumber(share);
- printf("<H2>%s</H2>\n", _("Printer Parameters"));
-
- printf("<H3>%s</H3>\n", _("Important Note:"));
- printf("%s",_("Printer names marked with [*] in the Choose Printer drop-down box "));
- printf("%s",_("are autoloaded printers from "));
- printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name"));
- printf("%s\n", _("Attempting to delete these printers from SWAT will have no effect."));
-
if (cgi_variable("Commit") && snum >= 0) {
commit_parameters(snum);
if (snum >= iNumNonAutoPrintServices)
@@ -1372,8 +1369,6 @@ static void printers_page(void)
}
}
- printf("<FORM name=\"swatform\" method=post>\n");
-
if ( cgi_variable("ViewMode") )
mode = atoi(cgi_variable_nonull("ViewMode"));
if ( cgi_variable("BasicMode"))
@@ -1381,6 +1376,19 @@ static void printers_page(void)
if ( cgi_variable("AdvMode"))
mode = 1;
+output_page:
+ printf("<H2>%s</H2>\n", _("Printer Parameters"));
+
+ printf("<H3>%s</H3>\n", _("Important Note:"));
+ printf("%s",_("Printer names marked with [*] in the Choose Printer drop-down box "));
+ printf("%s",_("are autoloaded printers from "));
+ printf("<A HREF=\"/swat/help/smb.conf.5.html#printcapname\" target=\"docs\">%s</A>\n", _("Printcap Name"));
+ printf("%s\n", _("Attempting to delete these printers from SWAT will have no effect."));
+
+
+ printf("<FORM name=\"swatform\" method=post>\n");
+ print_xsrf_token(cgi_user_name(), cgi_user_pass(), form_name);
+
ViewModeBoxes( mode );
switch ( mode ) {
case 0: