usr/src/cmd/cups/Patches/12-base-tx.patch
author Cyril Plisko <cyril.plisko@grigale.com>
Sat, 22 Jan 2011 12:27:08 -0800
changeset 64 707ce1130311
parent 60 0d167ac031c9
permissions -rw-r--r--
Import sfw build 158 Bugs Fixed ---------- 6955181 memcached denial-of-service 7007860 SFW still contains multiple references to /var/svc/manifest files that got moved to /lib 7009105 OPENSSL_VERSION_NUMBER changed format breaking ON build 7009580 preparations for upgrading to a new compiler 7009623 gld fails to execute 7010920 CUPS ships /var/run in error 7011373 time to update default package copyright again
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     1
Index: Makedefs.in
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     2
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     3
--- Makedefs.in	(revision 8801)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     4
+++ Makedefs.in	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     5
@@ -125,7 +125,7 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     6
 BANNERTOPS	=	@BANNERTOPS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     7
 CFLAGS		=	@CPPFLAGS@ @CFLAGS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     8
 COMMONLIBS	=	@LIBS@ -lscf
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     9
-CUPSDLIBS	=	@CUPSDLIBS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    10
+CUPSDLIBS	=	@CUPSDLIBS@ @LABELING_LIBS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    11
 CXXFLAGS	=	@CPPFLAGS@ @CXXFLAGS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    12
 CXXLIBS		=	@CXXLIBS@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    13
 DBUS_NOTIFIER	=	@DBUS_NOTIFIER@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    14
Index: config-scripts/cups-labeling.m4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    15
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    16
--- config-scripts/cups-labeling.m4	(revision 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    17
+++ config-scripts/cups-labeling.m4	(revision 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    18
@@ -0,0 +1,38 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    19
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    20
+dnl    Security Labeled environment support for the Common UNIX Printing System (CUPS).
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    21
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    22
+dnl    Copyright 2009 by Sun Microsystems, Inc.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    23
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    24
+dnl   This program is free software; you can redistribute it and/or modify
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    25
+dnl   it under the terms of the GNU General Public License as published by
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    26
+dnl   the Free Software Foundation; version 2.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    27
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    28
+dnl   This program is distributed in the hope that it will be useful, but
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    29
+dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    30
+dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    31
+dnl   General Public License for more details.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    32
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    33
+dnl   You should have received a copy of the GNU General Public License
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    34
+dnl   along with this program; if not, write to the Free Software Foundation,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    35
+dnl   Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301 USA
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    36
+dnl
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    37
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    38
+AC_ARG_ENABLE(labeling, [   --enable-labeling      enable support for labeled environments like Solaris Trusted Extensions and SELinux, default=auto])
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    39
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    40
+if test x"$enable_labeling" != xno; then
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    41
+    case "$uname" in
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    42
+        SunOS)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    43
+            AC_CHECK_LIB(tsol, str_to_label, [LABELING_LIBS="-zlazyload -lbsm -ltsol -znolazyload" AC_SUBST(LABELING_LIBS)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    44
+                         AC_CHECK_HEADER(tsol/label.h)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    45
+                         AC_DEFINE(HAVE_TSOL)])
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    46
+            ;;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    47
+        Linux)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    48
+            AC_CHECK_LIB(selinux, getpeercon, [LABELING_LIBS="-lselinux" AC_SUBST(LABELING_LIBS)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    49
+                         AC_CHECK_HEADER(selinux/selinux.h)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    50
+                         AC_DEFINE(HAVE_SELINUX)])
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    51
+            ;;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    52
+        *)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    53
+            # All others
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    54
+            ;;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    55
+    esac
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    56
+fi
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    57
Index: data/Makefile
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    58
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    59
--- data/Makefile	(revision 8857)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    60
+++ data/Makefile	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    61
@@ -22,6 +22,7 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    62
 BANNERS	=	\
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    63
 		classified \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    64
 		confidential \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    65
+		labeled \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    66
 		secret \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    67
 		standard \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    68
 		topsecret \
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    69
Index: data/labeled
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    70
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    71
--- data/labeled	(revision 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    72
+++ data/labeled	(revision 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    73
@@ -0,0 +1,4 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    74
+#CUPS-BANNER
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    75
+Show job-id job-name job-originating-user-name job-originating-host-name job-billing
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    76
+Image images/cups.png
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    77
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    78
Index: configure.in
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    79
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    80
--- configure.in	(revision 8857)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    81
+++ configure.in	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    82
@@ -41,6 +41,7 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    83
 sinclude(config-scripts/cups-pap.m4)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    84
 sinclude(config-scripts/cups-pdf.m4)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    85
 sinclude(config-scripts/cups-scripting.m4)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    86
+sinclude(config-scripts/cups-labeling.m4)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    87
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    88
 INSTALL_LANGUAGES=""
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    89
 UNINSTALL_LANGUAGES=""
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    90
Index: config.h.in
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    91
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
    92
--- config.h.in.orig	Thu Aug 12 21:11:46 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
    93
+++ config.h.in	Tue Dec  7 01:30:14 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
    94
@@ -665,7 +665,17 @@
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
    95
 #undef HAVE_SYS_STATVFS_H
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
    96
 #undef HAVE_SYS_VFS_H
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    97
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    98
+/*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    99
+ * Do we have Solaris Trusted Extensions support?
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   100
+ */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   101
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   102
+#undef HAVE_TSOL
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   103
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   104
+/*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   105
+ * Do we have SELinux support?
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   106
+ */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   107
+#undef HAVE_SELINUX
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   108
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   109
 #endif /* !_CUPS_CONFIG_H_ */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   110
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   111
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   112
Index: scheduler/ipp.c
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   113
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   114
--- scheduler/ipp.c.orig	Wed Oct  6 13:07:44 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   115
+++ scheduler/ipp.c	Tue Dec  7 01:30:14 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   116
@@ -856,7 +856,52 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   117
   return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   118
 }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   119
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   120
+static int
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   121
+compare_labels(char *label1, char *label2)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   122
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   123
+  int result = 0;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   124
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   125
+  if ((label1 != NULL) && (label2 != NULL))
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   126
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   127
+#if defined(HAVE_TSOL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   128
+    if (is_system_labeled())
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   129
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   130
+      result = (strcmp(label1, label2) != 0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   131
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   132
+      cupsdLogMessage(CUPSD_LOG_DEBUG2, "compare_labels(%s, %s): %d",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   133
+                      label1, label2, result);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   134
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   135
+#elif defined(HAVE_SELINUX)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   136
+#endif /* HAVE_TSOL || HAVE_SELINUX */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   137
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   138
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   139
+  return(result);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   140
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   141
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   142
+static char *
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   143
+label_to_page_top_bottom_string(char *label)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   144
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   145
+  char *result = label;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   146
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   147
+#if defined(HAVE_TSOL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   148
+  if (is_system_labeled())
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   149
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   150
+    m_label_t *sl = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   151
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   152
+    if (str_to_label(label, &sl, USER_CLEAR, L_NO_CORRECTION, NULL) == 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   153
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   154
+      (void) label_to_str(sl, &result, PRINTER_TOP_BOTTOM, DEF_NAMES);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   155
+      if (result == NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   156
+        result = label;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   157
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   158
+      m_label_free(sl);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   159
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   160
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   161
+#endif
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   162
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   163
+  return (result);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   164
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   165
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   166
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   167
  * 'accept_jobs()' - Accept print jobs to a printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   168
  */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   169
@@ -1361,6 +1406,17 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   170
 		  filetype, filetype ? filetype->super : "none",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   171
 		  filetype ? filetype->type : "none");
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   172
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   173
+  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   174
+   * Validate that the label associated with the connection is acceptable for
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   175
+   * printing on the printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   176
+   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   177
+  if (cupsdInPrinterLabelRange(con->slabel, printer) == 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   178
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   179
+    send_ipp_status(con, IPP_NOT_AUTHORIZED, _("label violation."));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   180
+    return (NULL);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   181
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   182
+  
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   183
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   184
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   185
   * Check remote printing to non-shared printer...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   186
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   187
@@ -1620,6 +1676,19 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   188
     return (NULL);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   189
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   190
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   191
+  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   192
+   *  Add the label to the job...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   193
+   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   194
+  if (con->slabel)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   195
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   196
+    job->slabel = strdup(con->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   197
+    ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "security-label",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   198
+		 NULL, job->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   199
+    /* used by filters to add header/footer labels to output */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   200
+    ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "page-label",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   201
+		 NULL, label_to_page_top_bottom_string(job->slabel));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   202
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   203
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   204
   job->dtype   = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT |
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   205
                                   CUPS_PRINTER_REMOTE);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   206
   job->attrs   = con->request;
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   207
@@ -3761,6 +3830,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   208
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   209
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   210
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   211
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   212
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   213
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   214
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   215
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   216
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   217
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   218
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   219
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   220
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   221
   * See if the job has been completed...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   222
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   223
@@ -4129,6 +4207,16 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   224
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   225
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   226
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   227
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   228
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   229
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   230
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   231
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   232
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   233
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   234
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   235
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   236
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   237
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   238
   * See if the job is owned by the requesting user...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   239
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   240
@@ -6389,6 +6477,16 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   241
 	send_ipp_status(con, IPP_NOT_FOUND, _("Job %d not found!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   242
 	return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   243
       }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   244
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   245
+      if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   246
+      {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   247
+       /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   248
+        * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   249
+        */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   250
+        send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"),
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   251
+                        jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   252
+        return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   253
+      }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   254
     }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   255
     else
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   256
       job = NULL;
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   257
@@ -6936,6 +7034,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   258
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   259
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   260
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   261
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   262
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   263
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   264
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   265
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   266
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   267
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   268
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   269
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   270
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   271
   * Copy attributes...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   272
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   273
@@ -7156,6 +7263,14 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   274
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   275
     cupsdLoadJob(job);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   276
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   277
+    if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   278
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   279
+     /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   280
+      * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   281
+      */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   282
+      continue;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   283
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   284
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   285
     if (!job->attrs)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   286
     {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   287
       cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d!",
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   288
@@ -8212,6 +8327,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   289
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   290
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   291
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   292
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   293
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   294
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   295
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   296
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   297
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   298
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   299
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   300
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   301
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   302
   * See if the job is owned by the requesting user...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   303
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   304
@@ -8466,6 +8590,14 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   305
                       _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   306
       return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   307
     }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   308
+    else if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   309
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   310
+     /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   311
+      * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   312
+      */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   313
+      send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   314
+      return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   315
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   316
     else
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   317
     {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   318
      /*
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   319
@@ -8488,6 +8620,27 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   320
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   321
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   322
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   323
+  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   324
+   * Validate that the label associated with the connection is acceptable for
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   325
+   * printing on the printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   326
+   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   327
+  if (cupsdInPrinterLabelRange(con->slabel, dprinter) == 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   328
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   329
+    send_ipp_status(con, IPP_NOT_AUTHORIZED, _("label violation."));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   330
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   331
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   332
+  
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   333
+  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   334
+   * Validate that the label associated with the job is acceptable for
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   335
+   * printing on the printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   336
+   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   337
+  if (cupsdInPrinterLabelRange(job->slabel, dprinter) == 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   338
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   339
+    send_ipp_status(con, IPP_NOT_AUTHORIZED, _("label violation."));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   340
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   341
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   342
+  
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   343
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   344
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   345
   * Now move the job or jobs...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   346
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   347
@@ -9318,6 +9471,16 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   348
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   349
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   350
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   351
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   352
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   353
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   354
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   355
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   356
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   357
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   358
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   359
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   360
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   361
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   362
   * See if job is "held"...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   363
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   364
@@ -9544,6 +9707,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   365
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   366
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   367
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   368
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   369
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   370
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   371
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   372
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   373
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   374
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   375
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   376
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   377
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   378
   * See if job is in any of the "completed" states...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   379
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   380
@@ -9899,6 +10071,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   381
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   382
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   383
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   384
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   385
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   386
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   387
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   388
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   389
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   390
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   391
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   392
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   393
   printer = cupsdFindDest(job->dest);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   394
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   395
  /*
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   396
@@ -10488,6 +10669,15 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   397
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   398
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   399
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   400
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   401
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   402
+   /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   403
+    * If the labels don't match, we can't tell them about it.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   404
+    */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   405
+    send_ipp_status(con, IPP_NOT_FOUND, _("Job #%d does not exist!"), jobid);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   406
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   407
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   408
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   409
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   410
   * See if the job has been completed...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   411
   */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   412
@@ -10825,7 +11015,6 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   413
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   414
   * Return a list of attributes that can be set via Set-Printer-Attributes.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   415
   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   416
-
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   417
   if ((attr = ippFindAttribute(con->request, "printer-location",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   418
                                IPP_TAG_TEXT)) != NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   419
   {
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   420
@@ -11584,6 +11773,11 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   421
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   422
   strlcpy(username, get_username(con), userlen);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   423
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   424
+  if (compare_labels(con->slabel, job->slabel) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   425
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   426
+    return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   427
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   428
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   429
  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   430
   * Check the username against the owner...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   431
   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   432
Index: scheduler/printers.c
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   433
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   434
--- scheduler/printers.c.orig	Wed Sep 22 11:35:07 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   435
+++ scheduler//printers.c	Tue Dec  7 01:30:14 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   436
@@ -1011,7 +1011,93 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   437
   p->users     = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   438
 }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   439
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   440
+#if defined(HAVE_TSOL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   441
+static char *
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   442
+log_tsol_str_to_label_error(char *s, int e)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   443
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   444
+  char *mesg = strerror(errno);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   445
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   446
+  if (errno == EINVAL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   447
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   448
+    switch (e) {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   449
+    case M_BAD_STRING:
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   450
+      mesg = "bad string";
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   451
+      break;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   452
+    case M_BAD_LABEL:
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   453
+      mesg = "bad label";
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   454
+      break;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   455
+    case M_OUTSIDE_AR:
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   456
+      mesg = "outside DIA Accreditation Range";
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   457
+      break;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   458
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   459
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   460
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   461
+  return (mesg);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   462
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   463
+#endif /* HAVE_TSOL */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   464
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   465
+/* 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   466
+ * 'cupsdInPrinterLabelRange()' - validate that the supplied slabel is in the
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   467
+ *                                label range of the supplied printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   468
+ *     0 - failure, 1 - success
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   469
+ */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   470
+int
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   471
+cupsdInPrinterLabelRange(char *slabel, cupsd_printer_t *p)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   472
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   473
+  /* unlabeled client objects are always in range. */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   474
+  if (slabel == NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   475
+    return (1);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   476
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   477
+  if (p == NULL) /* this should never happen */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   478
+    return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   479
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   480
+#if defined(HAVE_TSOL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   481
+  if (is_system_labeled())
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   482
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   483
+    int in_range = 0;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   484
+    int err = 0;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   485
+    m_range_t *range;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   486
+    m_label_t *sl = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   487
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   488
+    if (p->device_uri == 0) /* this should never happen */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   489
+      return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   490
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   491
+    if (str_to_label(slabel, &sl, USER_CLEAR, L_NO_CORRECTION, &err) < 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   492
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   493
+      cupsdLogMessage(CUPSD_LOG_ERROR, "str_to_label(%s): %s", slabel,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   494
+                      log_tsol_str_to_label_error(slabel, err));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   495
+      return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   496
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   497
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   498
+    if ((range = getdevicerange((const char *)(p->device_uri))) == NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   499
+    {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   500
+      cupsdLogMessage(CUPSD_LOG_ERROR,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   501
+                    "cupsdInPrinterLabelRange(%s, %s): getdevicerange(%s): %s",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   502
+                    slabel, p->name, p->device_uri, strerror(errno));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   503
+      m_label_free(sl);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   504
+      return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   505
+    }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   506
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   507
+    /* is the client supplied object label is within the printer label range? */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   508
+    in_range = blinrange(sl, range);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   509
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   510
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdInPrinterLabelRange(%s, %s): %d",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   511
+                    slabel, p->name, in_range);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   512
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   513
+    m_label_free(sl);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   514
+    m_label_free(range->lower_bound);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   515
+    m_label_free(range->upper_bound);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   516
+    free(range);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   517
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   518
+    return (in_range);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   519
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   520
+#elif defined(HAVE_SELINUX)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   521
+#endif /* HAVE_TSOL || HAVE_SELINUX */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   522
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   523
+  /* we should probably never get here */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   524
+  return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   525
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   526
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   527
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   528
  * 'cupsdLoadAllPrinters()' - Load printers from the printers.conf file.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   529
  */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   530
Index: scheduler/job.c
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   531
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   532
--- scheduler/job.c.orig	Sat Oct 16 21:13:56 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   533
+++ scheduler/job.c	Tue Dec  7 01:30:14 2010
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   534
@@ -911,8 +911,14 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   535
     }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   536
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   537
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   538
-  if (Classification && !banner_page)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   539
+  if (job->slabel != NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   540
   {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   541
+    snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   542
+             job->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   543
+    envp[envc ++] = classification;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   544
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   545
+  else if (Classification && !banner_page)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   546
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   547
     if ((attr = ippFindAttribute(job->attrs, "job-sheets",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   548
                                  IPP_TAG_NAME)) == NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   549
       snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   550
@@ -1276,6 +1282,12 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   551
     job->num_files = 0;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   552
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   553
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   554
+  if (job->slabel)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   555
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   556
+    free(job->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   557
+    job->slabel = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   558
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   559
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   560
   if (job->history)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   561
     free_job_history(job);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   562
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   563
@@ -1562,6 +1574,10 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   564
     goto error;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   565
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   566
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   567
+  if ((attr = ippFindAttribute(job->attrs, "security-label",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   568
+                                IPP_TAG_NAME)) != NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   569
+    cupsdSetString(&job->slabel, attr->values[0].string.text);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   570
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   571
   job->sheets     = ippFindAttribute(job->attrs, "job-media-sheets-completed",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   572
                                      IPP_TAG_INTEGER);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   573
   job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   574
@@ -3977,6 +3993,18 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   575
   if (!cupsdLoadJob(job))
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   576
     return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   577
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   578
+  /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   579
+   * Verify that the job sensitivity label is in range of the printer.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   580
+   */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   581
+  if (cupsdInPrinterLabelRange(job->slabel, printer) == 0) {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   582
+    cupsdLogMessage(CUPSD_LOG_ERROR,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   583
+                    "start_job(): job label outside of printer label range");
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   584
+    cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   585
+                     "job label is outside of printer label range");
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   586
+    cupsdCheckJobs();
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   587
+    return;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   588
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   589
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   590
   cupsdSetJobState(job, IPP_JOB_PROCESSING, CUPSD_JOB_DEFAULT, NULL);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   591
   cupsdSetPrinterState(printer, IPP_PRINTER_PROCESSING, 0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   592
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   593
Index: scheduler/printers.h
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   594
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   595
--- scheduler/printers.h.orig	Tue Mar 30 15:07:33 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   596
+++ scheduler/printers.h	Tue Dec  7 01:30:14 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   597
@@ -151,6 +151,8 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   598
 			                const char *username);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   599
 extern void		cupsdFreePrinterUsers(cupsd_printer_t *p);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   600
 extern void		cupsdFreeQuotas(cupsd_printer_t *p);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   601
+extern int              cupsdInPrinterLabelRange(char *slabel,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   602
+						 cupsd_printer_t *p);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   603
 extern void		cupsdLoadAllPrinters(void);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   604
 extern void		cupsdRenamePrinter(cupsd_printer_t *p,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   605
 			                   const char *name);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   606
Index: scheduler/job.h
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   607
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   608
--- scheduler/job.h	(revision 8857)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   609
+++ scheduler/job.h	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   610
@@ -83,6 +83,8 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   611
   krb5_ccache		ccache;		/* Kerberos credential cache */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   612
   char			*ccname;	/* KRB5CCNAME environment variable */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   613
 #endif /* HAVE_GSSAPI */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   614
+  char                  *slabel;		/* security context for security
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   615
+					   labeled environments */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   616
 };
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   617
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   618
 typedef struct cupsd_joblog_s		/**** Job log message ****/
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   619
Index: scheduler/client.c
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   620
===================================================================
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   621
--- scheduler/client.c.orig	Sat Oct 16 21:13:56 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   622
+++ scheduler/client.c	Tue Dec  7 01:30:14 2010
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   623
@@ -90,7 +90,12 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   624
 #  include <tcpd.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   625
 #endif /* HAVE_TCPD_H */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   626
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   627
+#ifdef HAVE_TSOL
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   628
+#include <ucred.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   629
+#include <tsol/label.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   630
+#endif /* HAVE_TSOL */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   631
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   632
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   633
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   634
  * Local functions...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   635
  */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   636
@@ -123,7 +128,40 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   637
 				   struct stat *filestats);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   638
 static void		write_pipe(cupsd_client_t *con);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   639
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   640
+#ifdef HAVE_TSOL
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   641
+/*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   642
+ * Retrieve the sensitivity label from the peer connection.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   643
+ */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   644
+static int
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   645
+getpeerseclabel(int fd, char **label)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   646
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   647
+  if ((fd < 0) || (label == NULL)) {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   648
+    errno = EINVAL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   649
+    return (-1);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   650
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   651
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   652
+  *label = NULL; /* default to unlabeled */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   653
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   654
+  if (is_system_labeled()) {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   655
+    ucred_t *cred = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   656
+    m_label_t *slabel;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   657
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   658
+    if (getpeerucred(fd, &cred) == -1)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   659
+      return (-1);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   660
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   661
+    slabel = ucred_getlabel(cred);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   662
+    *label = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   663
+    if (label_to_str(slabel, label, M_INTERNAL, DEF_NAMES) != 0)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   664
+      cupsdLogMessage(CUPSD_LOG_ERROR, "getpeercon(%d, 0x%8.8x): %s",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   665
+                      fd, (int)label, strerror(errno));
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   666
+    ucred_free(cred);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   667
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   668
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   669
+  return (0);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   670
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   671
+#endif /* HAVE_TSOL */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   672
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   673
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   674
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   675
  * 'cupsdAcceptClient()' - Accept a new client.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   676
  */
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   677
@@ -391,6 +429,21 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   678
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   679
 #endif /* HAVE_TCPD_H */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   680
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   681
+#if defined(HAVE_TSOL) || defined(HAVE_SELINUX)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   682
+ /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   683
+  * Get the sensitivity label from the peer connection.
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   684
+  */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   685
+  if (getpeerseclabel(con->http.fd, &con->slabel))
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   686
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   687
+    cupsdLogMessage(CUPSD_LOG_ERROR,
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   688
+                    "cupsdAcceptClient: failed to retrieve label from peer: %s",
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   689
+                    con->http.hostname);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   690
+    con->slabel = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   691
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   692
+  else
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   693
+    cupsdLogMessage(CUPSD_LOG_INFO, "cupsdAcceptClient: label=%s", con->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   694
+#endif /* HAVE_TSOL || HAVE_SELINUX */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   695
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   696
 #ifdef AF_INET6
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   697
   if (con->http.hostaddr->addr.sa_family == AF_INET6)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   698
     cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdAcceptClient: %d from %s:%d (IPv6)",
60
0d167ac031c9 Import sfw build 156
Cyril Plisko <cyril.plisko@grigale.com>
parents: 4
diff changeset
   699
@@ -680,6 +733,12 @@
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   700
     }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   701
   }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   702
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   703
+  if (con->slabel != NULL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   704
+  {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   705
+    free(con->slabel);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   706
+    con->slabel = NULL;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   707
+  }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   708
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   709
   if (!partial)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   710
   {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   711
    /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   712
Index: scheduler/client.h
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   713
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   714
--- scheduler/client.h	(revision 8857)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   715
+++ scheduler/client.h	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   716
@@ -64,6 +64,8 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   717
 #ifdef HAVE_AUTHORIZATION_H
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   718
   AuthorizationRef	authref;	/* Authorization ref */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   719
 #endif /* HAVE_AUTHORIZATION_H */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   720
+  char                  *slabel;		/* security context for security
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   721
+					   labeled environments */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   722
 };
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   723
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   724
 #define HTTP(con) &((con)->http)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   725
Index: scheduler/cupsd.h
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   726
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   727
--- scheduler/cupsd.h	(revision 8857)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   728
+++ scheduler/cupsd.h	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   729
@@ -50,7 +50,19 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   730
 #  include <CoreFoundation/CoreFoundation.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   731
 #endif /* HAVE_CDSASSL */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   732
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   733
+#if defined(HAVE_TSOL)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   734
+#include <tsol/label.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   735
+#endif /* HAVE_TSOL */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   736
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   737
+#if defined(HAVE_SELINUX)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   738
+#include <selinux/selinux.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   739
+#include <selinux/context.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   740
+#include <selinux/avc.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   741
+#include <selinux/flask.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   742
+#include <selinux/av_permissions.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   743
+#include <selinux/get_context_list.h>
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   744
+#endif /* HAVE_SELINUX */
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   745
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   746
 /*
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   747
  * Some OS's don't have hstrerror(), most notably Solaris...
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
   748
  */