- LSPP patch didn't get updated properly in 1:1.2.4-6. Use the right patch
this time (bug #208676). LSPP re-enabled.
This commit is contained in:
		
							parent
							
								
									6100f7dfeb
								
							
						
					
					
						commit
						6bb98ac828
					
				
							
								
								
									
										272
									
								
								cups-lspp.patch
									
									
									
									
									
								
							
							
						
						
									
										272
									
								
								cups-lspp.patch
									
									
									
									
									
								
							| @ -955,7 +955,7 @@ | |||||||
|  OPTIONS		= |  OPTIONS		= | ||||||
|  PAMLIBS		=	@PAMLIBS@ |  PAMLIBS		=	@PAMLIBS@ | ||||||
| --- cups-1.2.4-orig/scheduler/client.c	2006-09-19 16:44:07.000000000 -0400
 | --- cups-1.2.4-orig/scheduler/client.c	2006-09-19 16:44:07.000000000 -0400
 | ||||||
| +++ cups-1.2.4/scheduler/client.c	2006-10-02 12:44:13.000000000 -0400
 | +++ cups-1.2.4/scheduler/client.c	2006-10-03 12:04:45.000000000 -0400
 | ||||||
| @@ -44,12 +44,17 @@
 | @@ -44,12 +44,17 @@
 | ||||||
|   *   make_certificate()      - Make a self-signed SSL/TLS certificate. |   *   make_certificate()      - Make a self-signed SSL/TLS certificate. | ||||||
|   *   pipe_command()          - Pipe the output of a command to the remote client. |   *   pipe_command()          - Pipe the output of a command to the remote client. | ||||||
| @ -1033,7 +1033,7 @@ | |||||||
| +  }
 | +  }
 | ||||||
| +  else
 | +  else
 | ||||||
| +  {
 | +  {
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR, "cupsdAcceptClient: skipping getpeercon()");
 | +    cupsdLogMessage(CUPSD_LOG_INFO, "cupsdAcceptClient: skipping getpeercon()");
 | ||||||
| +    cupsdSetString(&con->scon, UNKNOWN_SL);
 | +    cupsdSetString(&con->scon, UNKNOWN_SL);
 | ||||||
| +  }
 | +  }
 | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
| @ -1053,43 +1053,46 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    status = HTTP_CONTINUE; |    status = HTTP_CONTINUE; | ||||||
| @@ -1797,6 +1860,35 @@
 | @@ -1797,6 +1860,38 @@
 | ||||||
|  	  fchmod(con->file, 0640); |  	  fchmod(con->file, 0640); | ||||||
|  	  fchown(con->file, RunUser, Group); |  	  fchown(con->file, RunUser, Group); | ||||||
|            fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC); |            fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC); | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +          if (getfilecon(con->filename, &spoolcon) == -1)
 | +          if (strncmp(con->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) != 0)
 | ||||||
| +          {
 | +          {
 | ||||||
| +            cupsdSendError(con, HTTP_SERVER_ERROR);
 | +            if (getfilecon(con->filename, &spoolcon) == -1)
 | ||||||
|  | +            {
 | ||||||
|  | +              cupsdSendError(con, HTTP_SERVER_ERROR);
 | ||||||
|  | +              freecon(spoolcon);
 | ||||||
|  | +              return (cupsdCloseClient(con));
 | ||||||
|  | +            }
 | ||||||
|  | +            clicon = context_new(con->scon);
 | ||||||
|  | +            tmpcon = context_new(spoolcon);
 | ||||||
| +            freecon(spoolcon);
 | +            freecon(spoolcon);
 | ||||||
| +            return (cupsdCloseClient(con));
 | +            if (context_range_set(tmpcon, (context_range_get(clicon))) == -1)
 | ||||||
| +          }
 | +            {
 | ||||||
| +          clicon = context_new(con->scon);
 | +              cupsdSendError(con, HTTP_SERVER_ERROR);
 | ||||||
| +          tmpcon = context_new(spoolcon);
 | +              context_free(tmpcon);
 | ||||||
| +          freecon(spoolcon);
 | +              context_free(clicon);
 | ||||||
| +          if (context_range_set(tmpcon, (context_range_get(clicon))) == -1)
 | +              return (cupsdCloseClient(con));
 | ||||||
| +          {
 | +            }
 | ||||||
| +            cupsdSendError(con, HTTP_SERVER_ERROR);
 | +            if (setfilecon(con->filename, context_str(tmpcon)) == -1)
 | ||||||
|  | +            {
 | ||||||
|  | +              cupsdSendError(con, HTTP_SERVER_ERROR);
 | ||||||
|  | +              context_free(tmpcon);
 | ||||||
|  | +              context_free(clicon);
 | ||||||
|  | +              return (cupsdCloseClient(con));
 | ||||||
|  | +            }
 | ||||||
|  | +            cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadClient: %s set to %s", 
 | ||||||
|  | +                            con->filename, context_str(tmpcon));
 | ||||||
| +            context_free(tmpcon);
 | +            context_free(tmpcon);
 | ||||||
| +            context_free(clicon);
 | +            context_free(clicon);
 | ||||||
| +            return (cupsdCloseClient(con));
 |  | ||||||
| +          }
 | +          }
 | ||||||
| +          if (setfilecon(con->filename, context_str(tmpcon)) == -1)
 |  | ||||||
| +          {
 |  | ||||||
| +            cupsdSendError(con, HTTP_SERVER_ERROR);
 |  | ||||||
| +            context_free(tmpcon);
 |  | ||||||
| +            context_free(clicon);
 |  | ||||||
| +            return (cupsdCloseClient(con));
 |  | ||||||
| +          }
 |  | ||||||
| +          cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadClient: %s set to %s", 
 |  | ||||||
| +                          con->filename, context_str(tmpcon));
 |  | ||||||
| +          context_free(tmpcon);
 |  | ||||||
| +          context_free(clicon);
 |  | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	if (con->http.state != HTTP_POST_SEND) |  	if (con->http.state != HTTP_POST_SEND) | ||||||
| @@ -3810,6 +3902,49 @@
 | @@ -3810,6 +3905,49 @@
 | ||||||
|  #endif /* HAVE_SSL */ |  #endif /* HAVE_SSL */ | ||||||
|   |   | ||||||
|   |   | ||||||
| @ -1301,7 +1304,7 @@ | |||||||
|  /* |  /* | ||||||
|   * End of "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $". |   * End of "$Id: conf.h 5696 2006-06-26 18:34:20Z mike $". | ||||||
| --- cups-1.2.4-orig/scheduler/ipp.c	2006-09-28 11:38:08.000000000 -0400
 | --- cups-1.2.4-orig/scheduler/ipp.c	2006-09-28 11:38:08.000000000 -0400
 | ||||||
| +++ cups-1.2.4/scheduler/ipp.c	2006-10-02 12:44:13.000000000 -0400
 | +++ cups-1.2.4/scheduler/ipp.c	2006-10-03 13:15:06.000000000 -0400
 | ||||||
| @@ -96,6 +96,9 @@
 | @@ -96,6 +96,9 @@
 | ||||||
|   *   validate_user()             - Validate the user for the request. |   *   validate_user()             - Validate the user for the request. | ||||||
|   */ |   */ | ||||||
| @ -1349,14 +1352,14 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %s)", con, |    cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %s)", con, | ||||||
| @@ -1349,6 +1375,93 @@
 | @@ -1349,6 +1375,101 @@
 | ||||||
|      return (NULL); |      return (NULL); | ||||||
|    } |    } | ||||||
|   |   | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +  if (is_lspp_config())
 | +  if (is_lspp_config())
 | ||||||
| +  {
 | +  {
 | ||||||
| +    if (!con->scon || strlen(con->scon) == 0)
 | +    if (!con->scon || strncmp(con->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) == 0)
 | ||||||
| +    {
 | +    {
 | ||||||
| +      cupsdLogMessage(CUPSD_LOG_ERROR, "add_job: missing classification for connection \'%s\'!", dest);
 | +      cupsdLogMessage(CUPSD_LOG_ERROR, "add_job: missing classification for connection \'%s\'!", dest);
 | ||||||
| +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Missing required secuirty attributes."));
 | +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Missing required secuirty attributes."));
 | ||||||
| @ -1367,8 +1370,8 @@ | |||||||
| +     /*
 | +     /*
 | ||||||
| +      * duplicate the security context and auid of the connection into the job structure
 | +      * duplicate the security context and auid of the connection into the job structure
 | ||||||
| +      */
 | +      */
 | ||||||
| +      job->scon    = strdup(con->scon);
 | +      job->scon = strdup(con->scon);
 | ||||||
| +      job->auid    = con->auid;
 | +      job->auid = con->auid;
 | ||||||
| +
 | +
 | ||||||
| +     /* 
 | +     /* 
 | ||||||
| +      * add the security context to the request so that on a restart the security
 | +      * add the security context to the request so that on a restart the security
 | ||||||
| @ -1438,12 +1441,20 @@ | |||||||
| +      }
 | +      }
 | ||||||
| +    }
 | +    }
 | ||||||
| +  }
 | +  }
 | ||||||
|  | +  else
 | ||||||
|  | +  {
 | ||||||
|  | +   /*
 | ||||||
|  | +    * Fill in the security context of the job as unlabeled
 | ||||||
|  | +    */
 | ||||||
|  | +    cupsdLogMessage(CUPSD_LOG_INFO, "add_job: setting context of job to %s", UNKNOWN_SL);
 | ||||||
|  | +    cupsdSetString(&job->scon, UNKNOWN_SL);
 | ||||||
|  | +  }
 | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
| +
 | +
 | ||||||
|    job->dtype   = dtype; |    job->dtype   = dtype; | ||||||
|    job->attrs   = con->request; |    job->attrs   = con->request; | ||||||
|    con->request = NULL; |    con->request = NULL; | ||||||
| @@ -1544,6 +1657,29 @@
 | @@ -1544,6 +1665,29 @@
 | ||||||
|        attr->values[0].string.text = _cupsStrAlloc(printer->job_sheets[0]); |        attr->values[0].string.text = _cupsStrAlloc(printer->job_sheets[0]); | ||||||
|        attr->values[1].string.text = _cupsStrAlloc(printer->job_sheets[1]); |        attr->values[1].string.text = _cupsStrAlloc(printer->job_sheets[1]); | ||||||
|      } |      } | ||||||
| @ -1473,7 +1484,7 @@ | |||||||
|   |   | ||||||
|      job->job_sheets = attr; |      job->job_sheets = attr; | ||||||
|   |   | ||||||
| @@ -1574,6 +1710,9 @@
 | @@ -1574,6 +1718,9 @@
 | ||||||
|  	                		    "job-sheets=\"%s,none\", " |  	                		    "job-sheets=\"%s,none\", " | ||||||
|  					    "job-originating-user-name=\"%s\"", |  					    "job-originating-user-name=\"%s\"", | ||||||
|  	        	 job->id, Classification, job->username); |  	        	 job->id, Classification, job->username); | ||||||
| @ -1483,7 +1494,7 @@ | |||||||
|  	} |  	} | ||||||
|  	else if (attr->num_values == 2 && |  	else if (attr->num_values == 2 && | ||||||
|  	         strcmp(attr->values[0].string.text, |  	         strcmp(attr->values[0].string.text, | ||||||
| @@ -1592,6 +1731,9 @@
 | @@ -1592,6 +1739,9 @@
 | ||||||
|  					    "job-originating-user-name=\"%s\"", |  					    "job-originating-user-name=\"%s\"", | ||||||
|  	        	 job->id, attr->values[0].string.text, |  	        	 job->id, attr->values[0].string.text, | ||||||
|  			 attr->values[1].string.text, job->username); |  			 attr->values[1].string.text, job->username); | ||||||
| @ -1493,7 +1504,7 @@ | |||||||
|  	} |  	} | ||||||
|  	else if (strcmp(attr->values[0].string.text, Classification) && |  	else if (strcmp(attr->values[0].string.text, Classification) && | ||||||
|  	         strcmp(attr->values[0].string.text, "none") && |  	         strcmp(attr->values[0].string.text, "none") && | ||||||
| @@ -1612,6 +1754,9 @@
 | @@ -1612,6 +1762,9 @@
 | ||||||
|  			    "job-originating-user-name=\"%s\"", |  			    "job-originating-user-name=\"%s\"", | ||||||
|  	        	    job->id, attr->values[0].string.text, |  	        	    job->id, attr->values[0].string.text, | ||||||
|  			    attr->values[1].string.text, job->username); |  			    attr->values[1].string.text, job->username); | ||||||
| @ -1503,7 +1514,7 @@ | |||||||
|          } |          } | ||||||
|        } |        } | ||||||
|        else if (strcmp(attr->values[0].string.text, Classification) && |        else if (strcmp(attr->values[0].string.text, Classification) && | ||||||
| @@ -1652,9 +1797,52 @@
 | @@ -1652,9 +1805,52 @@
 | ||||||
|  	                  "job-sheets=\"%s\", " |  	                  "job-sheets=\"%s\", " | ||||||
|  			  "job-originating-user-name=\"%s\"", |  			  "job-originating-user-name=\"%s\"", | ||||||
|  	        	 job->id, Classification, job->username); |  	        	 job->id, Classification, job->username); | ||||||
| @ -1556,7 +1567,7 @@ | |||||||
|     /* |     /* | ||||||
|      * See if we need to add the starting sheet... |      * See if we need to add the starting sheet... | ||||||
|      */ |      */ | ||||||
| @@ -3504,6 +3692,13 @@
 | @@ -3504,6 +3700,13 @@
 | ||||||
|    char		attrname[255],		/* Name of attribute */ |    char		attrname[255],		/* Name of attribute */ | ||||||
|  		*s;			/* Pointer into name */ |  		*s;			/* Pointer into name */ | ||||||
|    ipp_attribute_t *attr;		/* Attribute */ |    ipp_attribute_t *attr;		/* Attribute */ | ||||||
| @ -1570,58 +1581,61 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, "copy_banner(%p[%d], %p[%d], %s)", |    cupsdLogMessage(CUPSD_LOG_DEBUG2, "copy_banner(%p[%d], %p[%d], %s)", | ||||||
| @@ -3537,6 +3732,43 @@
 | @@ -3537,6 +3740,46 @@
 | ||||||
|   |   | ||||||
|    fchmod(cupsFileNumber(out), 0640); |    fchmod(cupsFileNumber(out), 0640); | ||||||
|    fchown(cupsFileNumber(out), RunUser, Group); |    fchown(cupsFileNumber(out), RunUser, Group); | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +  if (getfilecon(filename, &spoolcon) == -1)
 | +  if (strncmp(con->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) != 0)
 | ||||||
| +  {
 | +  {
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 | +    if (getfilecon(filename, &spoolcon) == -1)
 | ||||||
| +                    "copy_banner: Unable to get the context of the banner file %s - %s",
 | +    {
 | ||||||
| +                    filename, strerror(errno));
 | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
| +    job->num_files --;
 | +                      "copy_banner: Unable to get the context of the banner file %s - %s",
 | ||||||
| +    return (0);
 | +                      filename, strerror(errno));
 | ||||||
| +  }
 | +      job->num_files --;
 | ||||||
| +  tmpcon = context_new(spoolcon);
 | +      return (0);
 | ||||||
| +  jobcon = context_new(con->scon);
 | +    }
 | ||||||
| +  freecon(spoolcon);
 | +    tmpcon = context_new(spoolcon);
 | ||||||
| +  if (context_range_set(tmpcon, (context_range_get(jobcon))) == -1)
 | +    jobcon = context_new(con->scon);
 | ||||||
| +  {
 | +    freecon(spoolcon);
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 | +    if (context_range_set(tmpcon, (context_range_get(jobcon))) == -1)
 | ||||||
| +                    "copy_banner: Unable to set the level of the context for file %s - %s",
 | +    {
 | ||||||
| +                    filename, strerror(errno));
 | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
|  | +                      "copy_banner: Unable to set the level of the context for file %s - %s",
 | ||||||
|  | +                      filename, strerror(errno));
 | ||||||
|  | +      context_free(jobcon);
 | ||||||
|  | +      context_free(tmpcon);
 | ||||||
|  | +      job->num_files --;
 | ||||||
|  | +      return (0);
 | ||||||
|  | +    }
 | ||||||
|  | +    if (setfilecon(filename, context_str(tmpcon)) == -1)
 | ||||||
|  | +    {
 | ||||||
|  | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
|  | +                      "copy_banner: Unable to set the context of the banner file %s - %s",
 | ||||||
|  | +                      filename, strerror(errno));
 | ||||||
|  | +      context_free(jobcon);
 | ||||||
|  | +      context_free(tmpcon);
 | ||||||
|  | +      job->num_files --;
 | ||||||
|  | +      return (0);
 | ||||||
|  | +    }
 | ||||||
|  | +    cupsdLogMessage(CUPSD_LOG_DEBUG2, "copy_banner: %s set to %s",
 | ||||||
|  | +                    filename, context_str(tmpcon));
 | ||||||
| +    context_free(jobcon);
 | +    context_free(jobcon);
 | ||||||
| +    context_free(tmpcon);
 | +    context_free(tmpcon);
 | ||||||
| +    job->num_files --;
 |  | ||||||
| +    return (0);
 |  | ||||||
| +  }
 | +  }
 | ||||||
| +  if (setfilecon(filename, context_str(tmpcon)) == -1)
 |  | ||||||
| +  {
 |  | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 |  | ||||||
| +                    "copy_banner: Unable to set the context of the banner file %s - %s",
 |  | ||||||
| +                    filename, strerror(errno));
 |  | ||||||
| +    context_free(jobcon);
 |  | ||||||
| +    context_free(tmpcon);
 |  | ||||||
| +    job->num_files --;
 |  | ||||||
| +    return (0);
 |  | ||||||
| +  }
 |  | ||||||
| +  cupsdLogMessage(CUPSD_LOG_DEBUG2, "copy_banner: %s set to %s",
 |  | ||||||
| +                  filename, context_str(tmpcon));
 |  | ||||||
| +  context_free(jobcon);
 |  | ||||||
| +  context_free(tmpcon);
 |  | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
|   |   | ||||||
|   /* |   /* | ||||||
|    * Try the localized banner file under the subdirectory... |    * Try the localized banner file under the subdirectory... | ||||||
| @@ -3631,6 +3863,24 @@
 | @@ -3631,6 +3874,24 @@
 | ||||||
|        else |        else | ||||||
|          s = attrname; |          s = attrname; | ||||||
|   |   | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +      if (strcmp(s, "mls-label") == 0)
 | +      if (strcmp(s, "mls-label") == 0)
 | ||||||
| +      {
 | +      {
 | ||||||
| +        if (con->scon != NULL && strcmp(con->scon, UNKNOWN_SL) != 0)
 | +        if (con->scon != NULL && strncmp(con->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) != 0)
 | ||||||
| +        {
 | +        {
 | ||||||
| +          jobcon = context_new(con->scon);
 | +          jobcon = context_new(con->scon);
 | ||||||
| +          if (strcasecmp(name, MLS_CONFIG) == 0)
 | +          if (strcasecmp(name, MLS_CONFIG) == 0)
 | ||||||
| @ -1639,7 +1653,7 @@ | |||||||
|        if (!strcmp(s, "printer-name")) |        if (!strcmp(s, "printer-name")) | ||||||
|        { |        { | ||||||
|          cupsFilePuts(out, job->dest); |          cupsFilePuts(out, job->dest); | ||||||
| @@ -5352,6 +5602,18 @@
 | @@ -5352,6 +5613,18 @@
 | ||||||
|    cupsd_printer_t *printer;		/* Printer */ |    cupsd_printer_t *printer;		/* Printer */ | ||||||
|    cups_array_t	*list;			/* Which job list... */ |    cups_array_t	*list;			/* Which job list... */ | ||||||
|    cups_array_t	*ra;			/* Requested attributes array */ |    cups_array_t	*ra;			/* Requested attributes array */ | ||||||
| @ -1658,7 +1672,7 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs(%p[%d], %s)", con, con->http.fd, |    cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs(%p[%d], %s)", con, con->http.fd, | ||||||
| @@ -5469,6 +5731,40 @@
 | @@ -5469,6 +5742,45 @@
 | ||||||
|   |   | ||||||
|    ra = create_requested_array(con->request); |    ra = create_requested_array(con->request); | ||||||
|   |   | ||||||
| @ -1676,22 +1690,27 @@ | |||||||
| +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (getenforce)."));
 | +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (getenforce)."));
 | ||||||
| +      return;
 | +      return;
 | ||||||
| +    }
 | +    }
 | ||||||
| +    if (avc_init("cups", NULL, NULL, NULL, NULL) < 0)
 | +    if (strncmp(con->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) == 0)
 | ||||||
|  | +      selinuxcheck = 0;
 | ||||||
|  | +    else
 | ||||||
| +    {
 | +    {
 | ||||||
| +      cupsdLogMessage(CUPSD_LOG_ERROR, "get_jobs: unable avc_init");
 | +      if (avc_init("cups", NULL, NULL, NULL, NULL) < 0)
 | ||||||
| +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (avc_init)."));
 | +      {
 | ||||||
| +      return;
 | +        cupsdLogMessage(CUPSD_LOG_ERROR, "get_jobs: unable avc_init");
 | ||||||
| +    } 
 | +        send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (avc_init)."));
 | ||||||
| +    if (avc_context_to_sid(con->scon, &clisid) != 0)
 | +        return;
 | ||||||
| +    {
 | +      } 
 | ||||||
| +      cupsdLogMessage(CUPSD_LOG_ERROR, "get_jobs: unable to convert %s to SELinux sid", con->scon);
 | +      if (avc_context_to_sid(con->scon, &clisid) != 0)
 | ||||||
| +      send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (avc_context_to_sid)."));
 | +      {
 | ||||||
| +      return;
 | +        cupsdLogMessage(CUPSD_LOG_ERROR, "get_jobs: unable to convert %s to SELinux sid", con->scon);
 | ||||||
| +    }
 | +        send_ipp_status(con, IPP_INTERNAL_ERROR, _("Internal SELinux error (avc_context_to_sid)."));
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_DEBUG, "get_jobs: client context %s", con->scon);
 | +        return;
 | ||||||
|  | +      }
 | ||||||
|  | +      cupsdLogMessage(CUPSD_LOG_DEBUG, "get_jobs: client context %s", con->scon);
 | ||||||
| +
 | +
 | ||||||
| +    avr = FILE__READ;
 | +      avr = FILE__READ;
 | ||||||
| +    tclass = SECCLASS_FILE;
 | +      tclass = SECCLASS_FILE;
 | ||||||
|  | +    }
 | ||||||
| +  }
 | +  }
 | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
| +
 | +
 | ||||||
| @ -1699,12 +1718,12 @@ | |||||||
|   /* |   /* | ||||||
|    * OK, build a list of jobs for this printer... |    * OK, build a list of jobs for this printer... | ||||||
|    */ |    */ | ||||||
| @@ -5506,6 +5802,42 @@
 | @@ -5506,6 +5818,42 @@
 | ||||||
|      if (count > 0) |      if (count > 0) | ||||||
|        ippAddSeparator(con->response); |        ippAddSeparator(con->response); | ||||||
|   |   | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +    if (selinuxcheck)
 | +    if (selinuxcheck && (strncmp(job->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) != 0))
 | ||||||
| +    {
 | +    {
 | ||||||
| +      cupsdLogMessage(CUPSD_LOG_DEBUG, "get_jobs: job context %s", job->scon);
 | +      cupsdLogMessage(CUPSD_LOG_DEBUG, "get_jobs: job context %s", job->scon);
 | ||||||
| +
 | +
 | ||||||
| @ -1742,7 +1761,7 @@ | |||||||
|      count ++; |      count ++; | ||||||
|   |   | ||||||
|      cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: count = %d", count); |      cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: count = %d", count); | ||||||
| @@ -7944,12 +8276,22 @@
 | @@ -7944,12 +8292,22 @@
 | ||||||
|      * See if we need to add the ending sheet... |      * See if we need to add the ending sheet... | ||||||
|      */ |      */ | ||||||
|   |   | ||||||
| @ -1765,7 +1784,7 @@ | |||||||
|       /* |       /* | ||||||
|        * Yes... |        * Yes... | ||||||
|        */ |        */ | ||||||
| @@ -9201,6 +9543,17 @@
 | @@ -9201,6 +9559,17 @@
 | ||||||
|  	      int            userlen)	/* I - Length of username */ |  	      int            userlen)	/* I - Length of username */ | ||||||
|  { |  { | ||||||
|    cupsd_printer_t	*printer;	/* Printer for job */ |    cupsd_printer_t	*printer;	/* Printer for job */ | ||||||
| @ -1783,7 +1802,7 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, |    cupsdLogMessage(CUPSD_LOG_DEBUG2, | ||||||
| @@ -9222,6 +9575,59 @@
 | @@ -9222,6 +9591,59 @@
 | ||||||
|   |   | ||||||
|    strlcpy(username, get_username(con), userlen); |    strlcpy(username, get_username(con), userlen); | ||||||
|   |   | ||||||
| @ -1844,7 +1863,7 @@ | |||||||
|    * Check the username against the owner... |    * Check the username against the owner... | ||||||
|    */ |    */ | ||||||
| --- cups-1.2.4-orig/scheduler/job.c	2006-09-28 11:38:08.000000000 -0400
 | --- cups-1.2.4-orig/scheduler/job.c	2006-09-28 11:38:08.000000000 -0400
 | ||||||
| +++ cups-1.2.4/scheduler/job.c	2006-10-02 12:44:13.000000000 -0400
 | +++ cups-1.2.4/scheduler/job.c	2006-10-03 12:04:45.000000000 -0400
 | ||||||
| @@ -68,6 +68,9 @@
 | @@ -68,6 +68,9 @@
 | ||||||
|   *   unload_job()               - Unload a job from memory. |   *   unload_job()               - Unload a job from memory. | ||||||
|   */ |   */ | ||||||
| @ -1906,49 +1925,52 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p", |    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p", | ||||||
| @@ -1359,6 +1392,41 @@
 | @@ -1359,6 +1392,44 @@
 | ||||||
|    fchmod(cupsFileNumber(fp), 0600); |    fchmod(cupsFileNumber(fp), 0600); | ||||||
|    fchown(cupsFileNumber(fp), RunUser, Group); |    fchown(cupsFileNumber(fp), RunUser, Group); | ||||||
|   |   | ||||||
| +#ifdef WITH_LSPP
 | +#ifdef WITH_LSPP
 | ||||||
| +  if (getfilecon(filename, &spoolcon) == -1)
 | +  if (strncmp(job->scon, UNKNOWN_SL, strlen(UNKNOWN_SL)) != 0)
 | ||||||
| +  {
 | +  {
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 | +    if (getfilecon(filename, &spoolcon) == -1)
 | ||||||
| +                    "Unable to get context of job control file \"%s\" - %s.",
 | +    {
 | ||||||
| +                    filename, strerror(errno));
 | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
| +    return;
 | +                      "Unable to get context of job control file \"%s\" - %s.",
 | ||||||
| +  }
 | +                      filename, strerror(errno));
 | ||||||
| +  jobcon = context_new(job->scon);
 | +      return;
 | ||||||
| +  tmpcon = context_new(spoolcon);
 | +    }
 | ||||||
| +  freecon(spoolcon);
 | +    jobcon = context_new(job->scon);
 | ||||||
| +  if (context_range_set(tmpcon, (context_range_get(jobcon))) == -1)
 | +    tmpcon = context_new(spoolcon);
 | ||||||
| +  {
 | +    freecon(spoolcon);
 | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 | +    if (context_range_set(tmpcon, (context_range_get(jobcon))) == -1)
 | ||||||
| +                    "Unable to set the range for job control file \"%s\" - %s.",
 | +    {
 | ||||||
| +                    filename, strerror(errno));
 | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
|  | +                      "Unable to set the range for job control file \"%s\" - %s.",
 | ||||||
|  | +                      filename, strerror(errno));
 | ||||||
|  | +      context_free(tmpcon);
 | ||||||
|  | +      context_free(jobcon);
 | ||||||
|  | +      return;
 | ||||||
|  | +    }
 | ||||||
|  | +    if (setfilecon(filename, context_str(tmpcon)) == -1)
 | ||||||
|  | +    {
 | ||||||
|  | +      cupsdLogMessage(CUPSD_LOG_ERROR,
 | ||||||
|  | +                      "Unable to set context of job control file \"%s\" - %s.",
 | ||||||
|  | +                      filename, strerror(errno));
 | ||||||
|  | +      context_free(tmpcon);
 | ||||||
|  | +      context_free(jobcon);
 | ||||||
|  | +      return;
 | ||||||
|  | +    }
 | ||||||
|  | +    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p): new spool file context=%s",
 | ||||||
|  | +                    job, context_str(tmpcon));
 | ||||||
| +    context_free(tmpcon);
 | +    context_free(tmpcon);
 | ||||||
| +    context_free(jobcon);
 | +    context_free(jobcon);
 | ||||||
| +    return;
 |  | ||||||
| +  }
 | +  }
 | ||||||
| +  if (setfilecon(filename, context_str(tmpcon)) == -1)
 |  | ||||||
| +  {
 |  | ||||||
| +    cupsdLogMessage(CUPSD_LOG_ERROR,
 |  | ||||||
| +                    "Unable to set context of job control file \"%s\" - %s.",
 |  | ||||||
| +                    filename, strerror(errno));
 |  | ||||||
| +    context_free(tmpcon);
 |  | ||||||
| +    context_free(jobcon);
 |  | ||||||
| +    return;
 |  | ||||||
| +  }
 |  | ||||||
| +  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p): new spool file context=%s",
 |  | ||||||
| +                  job, context_str(tmpcon));
 |  | ||||||
| +  context_free(tmpcon);
 |  | ||||||
| +  context_free(jobcon);
 |  | ||||||
| +#endif /* WITH_LSPP */
 | +#endif /* WITH_LSPP */
 | ||||||
| +
 | +
 | ||||||
|    job->attrs->state = IPP_IDLE; |    job->attrs->state = IPP_IDLE; | ||||||
|   |   | ||||||
|    if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, |    if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, | ||||||
| @@ -2487,6 +2555,21 @@
 | @@ -2487,6 +2558,21 @@
 | ||||||
|  					/* RIP_MAX_CACHE env variable */ |  					/* RIP_MAX_CACHE env variable */ | ||||||
|    static char		*options = NULL;/* Full list of options */ |    static char		*options = NULL;/* Full list of options */ | ||||||
|    static int		optlength = 0;	/* Length of option buffer */ |    static int		optlength = 0;	/* Length of option buffer */ | ||||||
| @ -1970,7 +1992,7 @@ | |||||||
|   |   | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: id = %d, file = %d/%d", |    cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: id = %d, file = %d/%d", | ||||||
| @@ -2740,6 +2823,77 @@
 | @@ -2740,6 +2826,77 @@
 | ||||||
|   |   | ||||||
|    cupsdLogMessage(CUPSD_LOG_DEBUG, "banner_page = %d", banner_page); |    cupsdLogMessage(CUPSD_LOG_DEBUG, "banner_page = %d", banner_page); | ||||||
|   |   | ||||||
| @ -2048,7 +2070,7 @@ | |||||||
|   /* |   /* | ||||||
|    * Building the options string is harder than it needs to be, but |    * Building the options string is harder than it needs to be, but | ||||||
|    * for the moment we need to pass strings for command-line args and |    * for the moment we need to pass strings for command-line args and | ||||||
| @@ -3069,7 +3223,66 @@
 | @@ -3069,7 +3226,66 @@
 | ||||||
|        snprintf(classification, sizeof(classification), "CLASSIFICATION=%s", |        snprintf(classification, sizeof(classification), "CLASSIFICATION=%s", | ||||||
|                 attr->values[0].string.text); |                 attr->values[0].string.text); | ||||||
|   |   | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| %define initdir /etc/rc.d/init.d | %define initdir /etc/rc.d/init.d | ||||||
| %define use_alternatives 1 | %define use_alternatives 1 | ||||||
| %define lspp 0 | %define lspp 1 | ||||||
| %define cups_serverbin %{_exec_prefix}/lib/cups | %define cups_serverbin %{_exec_prefix}/lib/cups | ||||||
| 
 | 
 | ||||||
| Summary: Common Unix Printing System | Summary: Common Unix Printing System | ||||||
| @ -413,6 +413,10 @@ rm -rf $RPM_BUILD_ROOT | |||||||
| %{cups_serverbin}/daemon/cups-lpd | %{cups_serverbin}/daemon/cups-lpd | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Wed Oct  4 2006 Tim Waugh <twaugh@redhat.com> | ||||||
|  | - LSPP patch didn't get updated properly in 1:1.2.4-6.  Use the right | ||||||
|  |   patch this time (bug #208676).  LSPP re-enabled. | ||||||
|  | 
 | ||||||
| * Wed Oct  4 2006 Tim Waugh <twaugh@redhat.com> 1:1.2.4-7 | * Wed Oct  4 2006 Tim Waugh <twaugh@redhat.com> 1:1.2.4-7 | ||||||
| - LSPP patch disabled, since it still causes cupsd to crash. | - LSPP patch disabled, since it still causes cupsd to crash. | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user