Blame SOURCES/cups-str4461.patch

5e7041
diff -up cups-1.6.3/notifier/rss.c.str4461 cups-1.6.3/notifier/rss.c
5e7041
--- cups-1.6.3/notifier/rss.c.str4461	2013-06-07 02:12:52.000000000 +0100
5e7041
+++ cups-1.6.3/notifier/rss.c	2014-09-02 12:14:40.911974011 +0100
5e7041
@@ -1,27 +1,16 @@
5e7041
 /*
5e7041
  * "$Id: rss.c 7824 2008-08-01 21:11:55Z mike $"
5e7041
  *
5e7041
- *   RSS notifier for CUPS.
5e7041
+ * RSS notifier for CUPS.
5e7041
  *
5e7041
- *   Copyright 2007-2012 by Apple Inc.
5e7041
- *   Copyright 2007 by Easy Software Products.
5e7041
+ * Copyright 2007-2014 by Apple Inc.
5e7041
+ * Copyright 2007 by Easy Software Products.
5e7041
  *
5e7041
- *   These coded instructions, statements, and computer programs are the
5e7041
- *   property of Apple Inc. and are protected by Federal copyright
5e7041
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
5e7041
- *   which should have been included with this file.  If this file is
5e7041
- *   file is missing or damaged, see the license at "http://www.cups.org/".
5e7041
- *
5e7041
- * Contents:
5e7041
- *
5e7041
- *   main()           - Main entry for the test notifier.
5e7041
- *   compare_rss()    - Compare two messages.
5e7041
- *   delete_message() - Free all memory used by a message.
5e7041
- *   load_rss()       - Load an existing RSS feed file.
5e7041
- *   new_message()    - Create a new RSS message.
5e7041
- *   password_cb()    - Return the cached password.
5e7041
- *   save_rss()       - Save messages to a RSS file.
5e7041
- *   xml_escape()     - Copy a string, escaping &, <, and > as needed.
5e7041
+ * These coded instructions, statements, and computer programs are the
5e7041
+ * property of Apple Inc. and are protected by Federal copyright
5e7041
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
5e7041
+ * which should have been included with this file.  If this file is
5e7041
+ * file is missing or damaged, see the license at "http://www.cups.org/".
5e7041
  */
5e7041
 
5e7041
 /*
5e7041
@@ -29,6 +18,7 @@
5e7041
  */
5e7041
 
5e7041
 #include <cups/cups.h>
5e7041
+#include <sys/stat.h>
5e7041
 #include <cups/language.h>
5e7041
 #include <cups/string-private.h>
5e7041
 #include <cups/array.h>
5e7041
@@ -629,6 +619,8 @@ save_rss(cups_array_t *rss,		/* I - RSS
5e7041
     return (0);
5e7041
   }
5e7041
 
5e7041
+  fchmod(fileno(fp), 0644);
5e7041
+
5e7041
   fputs("\n", fp);
5e7041
   fputs("<rss version=\"2.0\">\n", fp);
5e7041
   fputs("  <channel>\n", fp);
5e7041
diff -up cups-1.6.3/scheduler/client.c.str4461 cups-1.6.3/scheduler/client.c
5e7041
--- cups-1.6.3/scheduler/client.c.str4461	2014-09-02 12:12:39.165354482 +0100
5e7041
+++ cups-1.6.3/scheduler/client.c	2014-09-02 12:13:49.131710518 +0100
5e7041
@@ -3133,6 +3133,7 @@ get_file(cupsd_client_t *con,		/* I  - C
5e7041
   char		*ptr;			/* Pointer info filename */
5e7041
   int		plen;			/* Remaining length after pointer */
5e7041
   char		language[7];		/* Language subdirectory, if any */
5e7041
+  int		perm_check = 1;		/* Do permissions check? */
5e7041
 
5e7041
 
5e7041
  /*
5e7041
@@ -3142,17 +3143,27 @@ get_file(cupsd_client_t *con,		/* I  - C
5e7041
   language[0] = '\0';
5e7041
 
5e7041
   if (!strncmp(con->uri, "/ppd/", 5) && !strchr(con->uri + 5, '/'))
5e7041
+  {
5e7041
     snprintf(filename, len, "%s%s", ServerRoot, con->uri);
5e7041
+
5e7041
+    perm_check = 0;
5e7041
+  }
5e7041
   else if (!strncmp(con->uri, "/icons/", 7) && !strchr(con->uri + 7, '/'))
5e7041
   {
5e7041
     snprintf(filename, len, "%s/%s", CacheDir, con->uri + 7);
5e7041
     if (access(filename, F_OK) < 0)
5e7041
       snprintf(filename, len, "%s/images/generic.png", DocumentRoot);
5e7041
+
5e7041
+    perm_check = 0;
5e7041
   }
5e7041
   else if (!strncmp(con->uri, "/rss/", 5) && !strchr(con->uri + 5, '/'))
5e7041
     snprintf(filename, len, "%s/rss/%s", CacheDir, con->uri + 5);
5e7041
-  else if (!strncmp(con->uri, "/admin/conf/", 12))
5e7041
-    snprintf(filename, len, "%s%s", ServerRoot, con->uri + 11);
5e7041
+  else if (!strcmp(con->uri, "/admin/conf/cupsd.conf"))
5e7041
+  {
5e7041
+    strlcpy(filename, ConfigurationFile, len);
5e7041
+
5e7041
+    perm_check = 0;
5e7041
+  }
5e7041
   else if (!strncmp(con->uri, "/admin/log/", 11))
5e7041
   {
5e7041
     if (!strncmp(con->uri + 11, "access_log", 10) && AccessLog[0] == '/')
5e7041
@@ -3163,6 +3174,8 @@ get_file(cupsd_client_t *con,		/* I  - C
5e7041
       strlcpy(filename, PageLog, len);
5e7041
     else
5e7041
       return (NULL);
5e7041
+
5e7041
+    perm_check = 0;
5e7041
   }
5e7041
   else if (con->language)
5e7041
   {
5e7041
@@ -3228,7 +3241,7 @@ get_file(cupsd_client_t *con,		/* I  - C
5e7041
   * not allow access...
5e7041
   */
5e7041
 
5e7041
-  if (!status && !(filestats->st_mode & S_IROTH))
5e7041
+  if (!status && perm_check && !(filestats->st_mode & S_IROTH))
5e7041
   {
5e7041
     cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
5e7041
     return (NULL);
5e7041
@@ -3336,7 +3349,7 @@ get_file(cupsd_client_t *con,		/* I  - C
5e7041
     * not allow access...
5e7041
     */
5e7041
 
5e7041
-    if (!status && !(filestats->st_mode & S_IROTH))
5e7041
+    if (!status && perm_check && !(filestats->st_mode & S_IROTH))
5e7041
     {
5e7041
       cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
5e7041
       return (NULL);
5e7041
diff -up cups-1.6.3/scheduler/conf.c.str4461 cups-1.6.3/scheduler/conf.c
5e7041
--- cups-1.6.3/scheduler/conf.c.str4461	2014-09-02 12:12:39.143354370 +0100
5e7041
+++ cups-1.6.3/scheduler/conf.c	2014-09-02 12:12:39.169354502 +0100
5e7041
@@ -1116,7 +1116,7 @@ cupsdReadConfiguration(void)
5e7041
 
5e7041
   if ((cupsdCheckPermissions(RequestRoot, NULL, 0710, RunUser,
5e7041
 			     Group, 1, 1) < 0 ||
5e7041
-       cupsdCheckPermissions(CacheDir, NULL, 0775, RunUser,
5e7041
+       cupsdCheckPermissions(CacheDir, NULL, 0770, RunUser,
5e7041
 			     Group, 1, 1) < 0 ||
5e7041
        cupsdCheckPermissions(temp, NULL, 0775, RunUser,
5e7041
 			     Group, 1, 1) < 0 ||
5e7041
diff -up cups-1.6.3/scheduler/ipp.c.str4461 cups-1.6.3/scheduler/ipp.c
5e7041
--- cups-1.6.3/scheduler/ipp.c.str4461	2014-09-02 12:12:39.150354405 +0100
5e7041
+++ cups-1.6.3/scheduler/ipp.c	2014-09-02 12:12:57.752449066 +0100
5e7041
@@ -2777,7 +2777,6 @@ add_printer(cupsd_client_t  *con,	/* I -
5e7041
 
5e7041
 	cupsdLogMessage(CUPSD_LOG_DEBUG,
5e7041
 			"Copied PPD file successfully");
5e7041
-	chmod(dstfile, 0644);
5e7041
       }
5e7041
       else
5e7041
       {
5e7041
@@ -4726,7 +4725,7 @@ copy_model(cupsd_client_t *con,		/* I -
5e7041
   * Open the destination file for a copy...
5e7041
   */
5e7041
 
5e7041
-  if ((dst = cupsFileOpen(to, "wb")) == NULL)
5e7041
+  if ((dst = cupsdCreateConfFile(to, ConfigFilePerm)) == NULL)
5e7041
   {
5e7041
     cupsFreeOptions(num_defaults, defaults);
5e7041
     cupsFileClose(src);
5e7041
@@ -4781,7 +4780,7 @@ copy_model(cupsd_client_t *con,		/* I -
5e7041
 
5e7041
   unlink(tempfile);
5e7041
 
5e7041
-  return (cupsFileClose(dst));
5e7041
+  return (cupsdCloseCreatedConfFile(dst, to));
5e7041
 }
5e7041
 
5e7041
 
5e7041
diff -up cups-1.6.3/scheduler/Makefile.str4461 cups-1.6.3/scheduler/Makefile
5e7041
--- cups-1.6.3/scheduler/Makefile.str4461	2014-09-02 12:12:39.171354512 +0100
5e7041
+++ cups-1.6.3/scheduler/Makefile	2014-09-02 12:14:04.265787530 +0100
5e7041
@@ -174,7 +174,7 @@ install-data:
5e7041
 	echo Creating $(REQUESTS)/tmp...
5e7041
 	$(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp
5e7041
 	echo Creating $(CACHEDIR)...
5e7041
-	$(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)
5e7041
+	$(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR)
5e7041
 	if test "x$(INITDIR)" != x; then \
5e7041
 		echo Installing init scripts...; \
5e7041
 		$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \